Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions tests/test_edge_cases.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import pytest
import sys
from httpie.core import main
from httpie.status import ExitStatus

def test_main_with_invalid_arguments(capsys):
"""
Master's Project - Advanced Software Verification.
Test how the HTTPie core bootstrap main() function handles
unexpected terminal argument configurations cleanly under isolations.
"""
# عزل البيئة تماماً وتمرير قائمة وسائط نقية لا تتأثر بـ pytest
# سنمرر دالة الاستدعاء مع علم خاطئ بشكل صريح
test_args = ['http', '--invalid-flag-for-testing']

# حفظ النسخة الأصلية من وسائط النظام
original_argv = sys.argv

try:
# استبدال كامل لمصفوفة وسائط النظام لعزل دالة main
sys.argv = test_args

# استدعاء الدالة والتقاط القيمة الراجعة (Exit Status)
exit_status = main()

# التحقق من أن النظام تعامل مع الخطأ بذكاء ولم يهنق، بل أرجع كود خطأ
assert exit_status == ExitStatus.ERROR

except SystemExit as e:
# في حال قامت مكتبة argparse بقطع التنفيذ والخروج المباشر
assert e.code in [ExitStatus.ERROR, 2]

finally:
# إعادة النظام لحالته الأصلية فوراً بعد الفحص لعدم تخريب الفحوصات الأخرى
sys.argv = original_argv
Loading