From 6763c210ae9fc06b997faff26f4f361ca9f26bbf Mon Sep 17 00:00:00 2001 From: Issa Abboud Date: Mon, 1 Jun 2026 23:53:25 +0300 Subject: [PATCH] Enhance test suite: Add advanced core bootstrap main edge case unit tests --- tests/test_edge_cases.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tests/test_edge_cases.py diff --git a/tests/test_edge_cases.py b/tests/test_edge_cases.py new file mode 100644 index 0000000000..1b66fca686 --- /dev/null +++ b/tests/test_edge_cases.py @@ -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 \ No newline at end of file