From 2b158fdfea31692fb43253fdaddee8a649dc43a5 Mon Sep 17 00:00:00 2001 From: ci-bot Date: Tue, 15 Jul 2025 08:17:57 +0000 Subject: [PATCH] CI: update test and coverage reports --- ci-reports/markdown/TEST-REPORT.md | 594 ++++++++----------------- ci-reports/markdown/pytest-report.json | 2 +- 2 files changed, 178 insertions(+), 418 deletions(-) diff --git a/ci-reports/markdown/TEST-REPORT.md b/ci-reports/markdown/TEST-REPORT.md index 776fcf1ab..24c3404ce 100644 --- a/ci-reports/markdown/TEST-REPORT.md +++ b/ci-reports/markdown/TEST-REPORT.md @@ -1,245 +1,5 @@ -⚠️⚠️⚠️ **TESTS INTERRUPTED** ⚠️⚠️⚠️ - -> `collected=44`, but only `executed=43` tests ran to completion. - -
-📋 Short test summary info - -``` -=========================== short test summary info ============================ -FAILED tests/test_io_utils.py::test_write_file_readonly - Failed: DID NOT RAISE -FAILED tests/test_math_utils.py::test_broken - NameError: name 'want_the_test_to_fail' is not defined -FAILED tests/test_math_utils.py::test_addition_fail - assert 4 == 5 - + where 4 = addition(2, 2) -FAILED tests/test_math_utils.py::test_runtime_error - RuntimeError: Forced runtime error -FAILED tests/test_math_utils.py::test_unhandled_exception - Exception: Generic unhandled exception -FAILED tests/test_math_utils.py::test_stop_iteration_direct - RuntimeError: generator raised StopIteration -FAILED tests/test_math_utils.py::test_generator_exit_direct - GeneratorExit -FAILED tests/test_math_utils.py::test_recursion_limit - RecursionError: cannot set the recursion limit to 50 at the recursion depth 37: the limit is too low -FAILED tests/test_math_utils.py::test_broken_function - AttributeError: 'tests.test_math_utils' has no attribute 'test_broken_function' -FAILED tests/test_string_utils.py::test_unicode_encode_error - Failed: DID NOT RAISE -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KeyboardInterrupt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -/workspace/tligui_y/slic/tests/test_string_utils.py:54: KeyboardInterrupt -(to show a full traceback on KeyboardInterrupt use --full-trace) -============= 10 failed, 31 passed, 2 xfailed, 2 warnings in 0.47s ============= -``` -
- -
-🪵 Full raw pytest log - -``` -============================= test session starts ============================== -platform linux -- Python 3.8.20, pytest-8.3.4, pluggy-1.5.0 -rootdir: /workspace/tligui_y/slic -plugins: allure-pytest-2.13.5, metadata-3.1.1, cov-5.0.0, html-4.1.1, json-report-1.5.0, md-report-0.6.2 -collected 44 items - -tests/test_io_utils.py ........F. -tests/test_math_utils.py F..F.xF.......F.FFF..F.. -tests/test_string_utils.py ....F...x - -=================================== FAILURES =================================== -___________________________ test_write_file_readonly ___________________________ - -tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_write_file_readonly0') - - def test_write_file_readonly(tmp_path): - # Writing to read-only file raises PermissionError - file = tmp_path / "readonly.txt" - file.write_text("data") - os.chmod(file, 0o444) - with pytest.raises(PermissionError): - with open(file, "w") as f: -> f.write("new content") -E Failed: DID NOT RAISE - -tests/test_io_utils.py:72: Failed -_________________________________ test_broken __________________________________ - - def test_broken(): - # simulating a broken or faulty test implementation that will cause the test to error -> want_the_test_to_fail -E NameError: name 'want_the_test_to_fail' is not defined - -tests/test_math_utils.py:16: NameError -______________________________ test_addition_fail ______________________________ - - def test_addition_fail(): - # Assertion failure: expected incorrect result -> assert addition(2, 2) == 5 -E assert 4 == 5 -E + where 4 = addition(2, 2) - -tests/test_math_utils.py:29: AssertionError -______________________________ test_runtime_error ______________________________ - - def test_runtime_error(): - # Test raises an uncaught RuntimeError -> raise RuntimeError("Forced runtime error") -E RuntimeError: Forced runtime error - -tests/test_math_utils.py:43: RuntimeError -___________________________ test_unhandled_exception ___________________________ - - def test_unhandled_exception(): - # Raises generic unhandled Exception -> raise Exception("Generic unhandled exception") -E Exception: Generic unhandled exception - -tests/test_math_utils.py:84: Exception -__________________________ test_stop_iteration_direct __________________________ - - def test_stop_iteration_direct(): - # Directly raise StopIteration exception -> raise StopIteration() -E StopIteration - -tests/test_math_utils.py:93: StopIteration - -The above exception was the direct cause of the following exception: - -cls = -func = . at 0x7efc63bf18b0> -when = 'call' -reraise = (, ) - - @classmethod - def from_call( - cls, - func: Callable[[], TResult], - when: Literal["collect", "setup", "call", "teardown"], - reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, - ) -> CallInfo[TResult]: - """Call func, wrapping the result in a CallInfo. - - :param func: - The function to call. Called without arguments. - :type func: Callable[[], _pytest.runner.TResult] - :param when: - The phase in which the function is called. - :param reraise: - Exception or exceptions that shall propagate if raised by the - function, instead of being wrapped in the CallInfo. - """ - excinfo = None - start = timing.time() - precise_start = timing.perf_counter() - try: -> result: TResult | None = func() - -.pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py:341: -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -.pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py:242: in - lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise -.pixi/envs/default/lib/python3.8/site-packages/pluggy/_hooks.py:513: in __call__ - return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) -.pixi/envs/default/lib/python3.8/site-packages/pluggy/_manager.py:120: in _hookexec - return self._inner_hookexec(hook_name, methods, kwargs, firstresult) -.pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py:92: in pytest_runtest_call - yield from thread_exception_runtest_hook() -.pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py:68: in thread_exception_runtest_hook - yield -.pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py:95: in pytest_runtest_call - yield from unraisable_exception_runtest_hook() -.pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py:70: in unraisable_exception_runtest_hook - yield -.pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py:846: in pytest_runtest_call - yield from self._runtest_for(item, "call") -.pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py:829: in _runtest_for - yield -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - -self = _capture_fixture=None> -item = - - @hookimpl(wrapper=True) - def pytest_runtest_call(self, item: Item) -> Generator[None]: - with self.item_capture("call", item): -> return (yield) -E RuntimeError: generator raised StopIteration - -.pixi/envs/default/lib/python3.8/site-packages/_pytest/capture.py:880: RuntimeError -__________________________ test_generator_exit_direct __________________________ - - def test_generator_exit_direct(): - # Directly raise GeneratorExit exception -> raise GeneratorExit() -E GeneratorExit - -tests/test_math_utils.py:97: GeneratorExit -_____________________________ test_recursion_limit _____________________________ - -monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7efc636b83d0> - - def test_recursion_limit(monkeypatch): - # Lower recursion limit to force RecursionError on deep recursion - original_limit = sys.getrecursionlimit() -> sys.setrecursionlimit(50) -E RecursionError: cannot set the recursion limit to 50 at the recursion depth 37: the limit is too low - -tests/test_math_utils.py:102: RecursionError -_____________________________ test_broken_function _____________________________ - -monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7efc63395ee0> - - def test_broken_function(monkeypatch): - # Simulate broken function raising TypeError - def broken_func(*args, **kwargs): - raise TypeError("Broken function") -> monkeypatch.setattr(__name__, "test_broken_function", broken_func) -E AttributeError: 'tests.test_math_utils' has no attribute 'test_broken_function' - -tests/test_math_utils.py:126: AttributeError -__________________________ test_unicode_encode_error ___________________________ - - def test_unicode_encode_error(): - # UnicodeEncodeError due to decoding malformed surrogate byte - with pytest.raises(UnicodeEncodeError): -> b'\udc80'.decode('utf-8') -E Failed: DID NOT RAISE - -tests/test_string_utils.py:28: Failed -=============================== warnings summary =============================== -tests/test_string_utils.py:28 - /workspace/tligui_y/slic/tests/test_string_utils.py:28: DeprecationWarning: invalid escape sequence \u - b'\udc80'.decode('utf-8') - -tests/test_string_utils.py::test_warning_emit - /workspace/tligui_y/slic/tests/test_string_utils.py:23: UserWarning: Test warning - warnings.warn("Test warning", UserWarning) - --- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ---------------------------------- JSON report ---------------------------------- -report saved to: ci-reports/markdown/pytest-report.json - ----------- coverage: platform linux, python 3.8.20-final-0 ----------- -Coverage HTML written to dir ci-reports/coverage/ -Coverage XML written to file ci-reports/coverage/coverage.xml - -=========================== short test summary info ============================ -FAILED tests/test_io_utils.py::test_write_file_readonly - Failed: DID NOT RAISE -FAILED tests/test_math_utils.py::test_broken - NameError: name 'want_the_test_to_fail' is not defined -FAILED tests/test_math_utils.py::test_addition_fail - assert 4 == 5 - + where 4 = addition(2, 2) -FAILED tests/test_math_utils.py::test_runtime_error - RuntimeError: Forced runtime error -FAILED tests/test_math_utils.py::test_unhandled_exception - Exception: Generic unhandled exception -FAILED tests/test_math_utils.py::test_stop_iteration_direct - RuntimeError: generator raised StopIteration -FAILED tests/test_math_utils.py::test_generator_exit_direct - GeneratorExit -FAILED tests/test_math_utils.py::test_recursion_limit - RecursionError: cannot set the recursion limit to 50 at the recursion depth 37: the limit is too low -FAILED tests/test_math_utils.py::test_broken_function - AttributeError: 'tests.test_math_utils' has no attribute 'test_broken_function' -FAILED tests/test_string_utils.py::test_unicode_encode_error - Failed: DID NOT RAISE -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KeyboardInterrupt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -/workspace/tligui_y/slic/tests/test_string_utils.py:54: KeyboardInterrupt -(to show a full traceback on KeyboardInterrupt use --full-trace) -============= 10 failed, 31 passed, 2 xfailed, 2 warnings in 0.47s ============= -``` -
- ---- - # 🧪 Test Report -*Generated on 2025-07-15 08:01:32* +*Generated on 2025-07-15 08:17:57* ## 📋 Summary - **Passed**: `32` @@ -247,7 +7,7 @@ FAILED tests/test_string_utils.py::test_unicode_encode_error - Failed: DID NOT R - **Xfailed**: `2` - **Total**: `44` - **Collected**: `44` -- **Total Duration**: `0.472`s +- **Total Duration**: `0.493`s ## 🔎 Tests
@@ -263,7 +23,7 @@ FAILED tests/test_string_utils.py::test_unicode_encode_error - Failed: DID NOT R ✅ #1 - **Status:** ✅ `passed` -- **Duration:** `0.000576` s +- **Duration:** `0.000684` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -272,7 +32,7 @@ FAILED tests/test_string_utils.py::test_unicode_encode_error - Failed: DID NOT R 📌 Duration ``` -0.003862760029733181 +0.004489094950258732 ```
@@ -291,7 +51,7 @@ passed 📌 Duration ``` -0.0005759899504482746 +0.0006844139425083995 ``` @@ -310,7 +70,7 @@ passed 📌 Duration ``` -0.0012187049724161625 +0.00128162803594023 ``` @@ -333,7 +93,7 @@ passed ✅ #2 - **Status:** ✅ `passed` -- **Duration:** `0.000338` s +- **Duration:** `0.000349` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -342,7 +102,7 @@ passed 📌 Duration ``` -0.000665434985421598 +0.0007592289475724101 ``` @@ -361,7 +121,7 @@ passed 📌 Duration ``` -0.00033802702091634274 +0.00034866901114583015 ``` @@ -380,7 +140,7 @@ passed 📌 Duration ``` -0.0006613769801333547 +0.0007208429742604494 ``` @@ -403,7 +163,7 @@ passed ✅ #3 - **Status:** ✅ `passed` -- **Duration:** `0.000339` s +- **Duration:** `0.000357` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -412,7 +172,7 @@ passed 📌 Duration ``` -0.00017981010023504496 +0.00019041995983570814 ``` @@ -431,7 +191,7 @@ passed 📌 Duration ``` -0.0003387361066415906 +0.0003566719824448228 ``` @@ -450,7 +210,7 @@ passed 📌 Duration ``` -0.00020792894065380096 +0.00022041099146008492 ``` @@ -473,7 +233,7 @@ passed ✅ #4 - **Status:** ✅ `passed` -- **Duration:** `0.000193` s +- **Duration:** `0.000206` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -482,7 +242,7 @@ passed 📌 Duration ``` -0.00017420691438019276 +0.00018429593183100224 ``` @@ -501,7 +261,7 @@ passed 📌 Duration ``` -0.00019270204938948154 +0.00020608596969395876 ``` @@ -520,7 +280,7 @@ passed 📌 Duration ``` -0.00020265299826860428 +0.0001983050024136901 ``` @@ -543,7 +303,7 @@ passed ✅ #5 - **Status:** ✅ `passed` -- **Duration:** `0.000213` s +- **Duration:** `0.000223` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -552,7 +312,7 @@ passed 📌 Duration ``` -0.0003596659516915679 +0.0003640140639618039 ``` @@ -571,7 +331,7 @@ passed 📌 Duration ``` -0.0002129280474036932 +0.00022322905715554953 ``` @@ -590,7 +350,7 @@ passed 📌 Duration ``` -0.0006530900718644261 +0.0006357829552143812 ``` @@ -613,7 +373,7 @@ passed ✅ #6 - **Status:** ✅ `passed` -- **Duration:** `0.008356` s +- **Duration:** `0.008769` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -622,7 +382,7 @@ passed 📌 Duration ``` -0.0003540610196068883 +0.0003387599717825651 ``` @@ -641,7 +401,7 @@ passed 📌 Duration ``` -0.008355612982995808 +0.008769409032538533 ``` @@ -660,7 +420,7 @@ passed 📌 Duration ``` -0.0006731300381943583 +0.0008422170067206025 ``` @@ -683,7 +443,7 @@ passed ✅ #7 - **Status:** ✅ `passed` -- **Duration:** `0.000184` s +- **Duration:** `0.000195` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -692,7 +452,7 @@ passed 📌 Duration ``` -0.0001812560949474573 +0.00021573901176452637 ``` @@ -711,7 +471,7 @@ passed 📌 Duration ``` -0.00018437509424984455 +0.00019488506950438023 ``` @@ -730,7 +490,7 @@ passed 📌 Duration ``` -0.0002127690240740776 +0.00019953702576458454 ``` @@ -753,7 +513,7 @@ passed ✅ #8 - **Status:** ✅ `passed` -- **Duration:** `0.000201` s +- **Duration:** `0.000228` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -762,7 +522,7 @@ passed 📌 Duration ``` -0.0003418419510126114 +0.00037874700501561165 ``` @@ -781,7 +541,7 @@ passed 📌 Duration ``` -0.00020075298380106688 +0.0002275099977850914 ``` @@ -800,7 +560,7 @@ passed 📌 Duration ``` -0.001043127034790814 +0.000740951974876225 ``` @@ -823,7 +583,7 @@ passed ✅ #10 - **Status:** ✅ `passed` -- **Duration:** `0.000197` s +- **Duration:** `0.000245` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -832,7 +592,7 @@ passed 📌 Duration ``` -0.00017909402959048748 +0.00022397900465875864 ``` @@ -851,7 +611,7 @@ passed 📌 Duration ``` -0.00019741302821785212 +0.0002445880090817809 ``` @@ -870,7 +630,7 @@ passed 📌 Duration ``` -0.00020375405438244343 +0.00021364097483456135 ``` @@ -898,7 +658,7 @@ passed ✅ #12 - **Status:** ✅ `passed` -- **Duration:** `0.000185` s +- **Duration:** `0.000202` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -907,7 +667,7 @@ passed 📌 Duration ``` -0.00018563796766102314 +0.00019144092220813036 ``` @@ -926,7 +686,7 @@ passed 📌 Duration ``` -0.00018518290016800165 +0.0002020229585468769 ``` @@ -945,7 +705,7 @@ passed 📌 Duration ``` -0.00020334904547780752 +0.0001967179123312235 ``` @@ -968,7 +728,7 @@ passed ✅ #13 - **Status:** ✅ `passed` -- **Duration:** `0.000168` s +- **Duration:** `0.000167` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -977,7 +737,7 @@ passed 📌 Duration ``` -0.00017578003462404013 +0.00017437501810491085 ``` @@ -996,7 +756,7 @@ passed 📌 Duration ``` -0.0001681699650362134 +0.00016747298650443554 ``` @@ -1015,7 +775,7 @@ passed 📌 Duration ``` -0.00018882297445088625 +0.00019609497394412756 ``` @@ -1038,7 +798,7 @@ passed ✅ #15 - **Status:** ✅ `passed` -- **Duration:** `0.000184` s +- **Duration:** `0.000198` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1047,7 +807,7 @@ passed 📌 Duration ``` -0.00018172396812587976 +0.00018964800983667374 ``` @@ -1066,7 +826,7 @@ passed 📌 Duration ``` -0.00018381199333816767 +0.0001984010450541973 ``` @@ -1085,7 +845,7 @@ passed 📌 Duration ``` -0.00019507796969264746 +0.0001975690247491002 ``` @@ -1108,7 +868,7 @@ passed ✅ #18 - **Status:** ✅ `passed` -- **Duration:** `0.000180` s +- **Duration:** `0.000193` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1117,7 +877,7 @@ passed 📌 Duration ``` -0.0001932900631800294 +0.00018735602498054504 ``` @@ -1136,7 +896,7 @@ passed 📌 Duration ``` -0.00018015201203525066 +0.00019317190162837505 ``` @@ -1155,7 +915,7 @@ passed 📌 Duration ``` -0.00018845393788069487 +0.0001976839266717434 ``` @@ -1178,7 +938,7 @@ passed ✅ #19 - **Status:** ✅ `passed` -- **Duration:** `0.000178` s +- **Duration:** `0.000181` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1187,7 +947,7 @@ passed 📌 Duration ``` -0.00018062896560877562 +0.000191046972759068 ``` @@ -1206,7 +966,7 @@ passed 📌 Duration ``` -0.00017759902402758598 +0.0001811350230127573 ``` @@ -1225,7 +985,7 @@ passed 📌 Duration ``` -0.0001938709756359458 +0.00019021600019186735 ``` @@ -1248,7 +1008,7 @@ passed ✅ #20 - **Status:** ✅ `passed` -- **Duration:** `0.000952` s +- **Duration:** `0.000933` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1257,7 +1017,7 @@ passed 📌 Duration ``` -0.00017978204414248466 +0.00018191395793110132 ``` @@ -1276,7 +1036,7 @@ passed 📌 Duration ``` -0.0009519440354779363 +0.0009334810310974717 ``` @@ -1295,7 +1055,7 @@ passed 📌 Duration ``` -0.00020991393830627203 +0.00021670304704457521 ``` @@ -1318,7 +1078,7 @@ passed ✅ #21 - **Status:** ✅ `passed` -- **Duration:** `0.000172` s +- **Duration:** `0.000176` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1327,7 +1087,7 @@ passed 📌 Duration ``` -0.0001741249579936266 +0.00018432398792356253 ``` @@ -1346,7 +1106,7 @@ passed 📌 Duration ``` -0.00017169106286019087 +0.00017605803441256285 ``` @@ -1365,7 +1125,7 @@ passed 📌 Duration ``` -0.00020102201960980892 +0.0001879989868029952 ``` @@ -1388,7 +1148,7 @@ passed ✅ #22 - **Status:** ✅ `passed` -- **Duration:** `0.000196` s +- **Duration:** `0.000181` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1397,7 +1157,7 @@ passed 📌 Duration ``` -0.00019025395158678293 +0.00016388704534620047 ``` @@ -1416,7 +1176,7 @@ passed 📌 Duration ``` -0.00019589695148169994 +0.0001806630752980709 ``` @@ -1435,7 +1195,7 @@ passed 📌 Duration ``` -0.00019368203356862068 +0.00019419798627495766 ``` @@ -1458,7 +1218,7 @@ passed ✅ #23 - **Status:** ✅ `passed` -- **Duration:** `0.000181` s +- **Duration:** `0.000186` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1467,7 +1227,7 @@ passed 📌 Duration ``` -0.0001662379363551736 +0.00016722199507057667 ``` @@ -1486,7 +1246,7 @@ passed 📌 Duration ``` -0.00018056901171803474 +0.00018580106552690268 ``` @@ -1505,7 +1265,7 @@ passed 📌 Duration ``` -0.000204996089451015 +0.00018392701167613268 ``` @@ -1528,7 +1288,7 @@ passed ✅ #24 - **Status:** ✅ `passed` -- **Duration:** `0.000169` s +- **Duration:** `0.000172` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1537,7 +1297,7 @@ passed 📌 Duration ``` -0.0001786520006135106 +0.0001760859740898013 ``` @@ -1556,7 +1316,7 @@ passed 📌 Duration ``` -0.00016915600281208754 +0.00017235905397683382 ``` @@ -1575,7 +1335,7 @@ passed 📌 Duration ``` -0.0001956659834831953 +0.00018672097939997911 ``` @@ -1598,7 +1358,7 @@ passed ✅ #26 - **Status:** ✅ `passed` -- **Duration:** `0.000181` s +- **Duration:** `0.000195` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1607,7 +1367,7 @@ passed 📌 Duration ``` -0.00018656998872756958 +0.00017966004088521004 ``` @@ -1626,7 +1386,7 @@ passed 📌 Duration ``` -0.0001806790241971612 +0.00019452592823654413 ``` @@ -1645,7 +1405,7 @@ passed 📌 Duration ``` -0.00019679800607264042 +0.00018929899670183659 ``` @@ -1668,7 +1428,7 @@ passed ✅ #30 - **Status:** ✅ `passed` -- **Duration:** `0.000208` s +- **Duration:** `0.000215` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1677,7 +1437,7 @@ passed 📌 Duration ``` -0.00018735707271844149 +0.00019153498578816652 ``` @@ -1696,7 +1456,7 @@ passed 📌 Duration ``` -0.00020766595844179392 +0.00021516799461096525 ``` @@ -1715,7 +1475,7 @@ passed 📌 Duration ``` -0.00020599900744855404 +0.00021473504602909088 ``` @@ -1738,7 +1498,7 @@ passed ✅ #31 - **Status:** ✅ `passed` -- **Duration:** `0.000200` s +- **Duration:** `0.000209` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1747,7 +1507,7 @@ passed 📌 Duration ``` -0.00039253500290215015 +0.0003814550582319498 ``` @@ -1766,7 +1526,7 @@ passed 📌 Duration ``` -0.00020028697326779366 +0.00020856503397226334 ``` @@ -1785,7 +1545,7 @@ passed 📌 Duration ``` -0.0006594470469281077 +0.0006595569429919124 ``` @@ -1808,7 +1568,7 @@ passed ✅ #33 - **Status:** ✅ `passed` -- **Duration:** `0.000231` s +- **Duration:** `0.000238` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1817,7 +1577,7 @@ passed 📌 Duration ``` -0.0003369100159034133 +0.0003420260036364198 ``` @@ -1836,7 +1596,7 @@ passed 📌 Duration ``` -0.00023073202464729548 +0.00023755698930472136 ``` @@ -1855,7 +1615,7 @@ passed 📌 Duration ``` -0.0006213830783963203 +0.0006303309928625822 ``` @@ -1887,7 +1647,7 @@ passed 📌 Duration ``` -0.00017822289373725653 +0.0001796300057321787 ``` @@ -1906,7 +1666,7 @@ passed 📌 Duration ``` -0.0004918569466099143 +0.0004920799983665347 ``` @@ -1925,7 +1685,7 @@ passed 📌 Duration ``` -0.00020779098849743605 +0.00020946201402693987 ``` @@ -1953,7 +1713,7 @@ passed ✅ #35 - **Status:** ✅ `passed` -- **Duration:** `0.000164` s +- **Duration:** `0.000170` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -1962,7 +1722,7 @@ passed 📌 Duration ``` -0.000179384951479733 +0.0001809720415621996 ``` @@ -1981,7 +1741,7 @@ passed 📌 Duration ``` -0.0001638780813664198 +0.0001699109561741352 ``` @@ -2000,7 +1760,7 @@ passed 📌 Duration ``` -0.00018798792734742165 +0.0001904919045045972 ``` @@ -2023,7 +1783,7 @@ passed ✅ #36 - **Status:** ✅ `passed` -- **Duration:** `0.000182` s +- **Duration:** `0.000185` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2032,7 +1792,7 @@ passed 📌 Duration ``` -0.0001917120534926653 +0.0001955030020326376 ``` @@ -2051,7 +1811,7 @@ passed 📌 Duration ``` -0.0001819030148908496 +0.00018532900139689445 ``` @@ -2070,7 +1830,7 @@ passed 📌 Duration ``` -0.00019630498718470335 +0.00019166292622685432 ``` @@ -2093,7 +1853,7 @@ passed ✅ #37 - **Status:** ✅ `passed` -- **Duration:** `0.000156` s +- **Duration:** `0.000163` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2102,7 +1862,7 @@ passed 📌 Duration ``` -0.00016557297203689814 +0.00016802200116217136 ``` @@ -2121,7 +1881,7 @@ passed 📌 Duration ``` -0.00015554099809378386 +0.00016269809566438198 ``` @@ -2140,7 +1900,7 @@ passed 📌 Duration ``` -0.00019384303595870733 +0.0001978430664166808 ``` @@ -2163,7 +1923,7 @@ passed ✅ #38 - **Status:** ✅ `passed` -- **Duration:** `0.000170` s +- **Duration:** `0.000168` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2172,7 +1932,7 @@ passed 📌 Duration ``` -0.0001844690414145589 +0.00018341001123189926 ``` @@ -2191,7 +1951,7 @@ passed 📌 Duration ``` -0.0001697220141068101 +0.00016795506235212088 ``` @@ -2210,7 +1970,7 @@ passed 📌 Duration ``` -0.00019020005129277706 +0.00018405704759061337 ``` @@ -2233,7 +1993,7 @@ passed ✅ #40 - **Status:** ✅ `passed` -- **Duration:** `0.000184` s +- **Duration:** `0.000199` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2242,7 +2002,7 @@ passed 📌 Duration ``` -0.00018171791452914476 +0.00017893302720040083 ``` @@ -2261,7 +2021,7 @@ passed 📌 Duration ``` -0.00018399301916360855 +0.00019873399287462234 ``` @@ -2280,7 +2040,7 @@ passed 📌 Duration ``` -0.00019275001250207424 +0.0001910560531541705 ``` @@ -2303,7 +2063,7 @@ passed ✅ #41 - **Status:** ✅ `passed` -- **Duration:** `0.000182` s +- **Duration:** `0.000181` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2312,7 +2072,7 @@ passed 📌 Duration ``` -0.00018886500038206577 +0.000180736999027431 ``` @@ -2331,7 +2091,7 @@ passed 📌 Duration ``` -0.00018197600729763508 +0.00018068705685436726 ``` @@ -2350,7 +2110,7 @@ passed 📌 Duration ``` -0.00019282009452581406 +0.00019529310520738363 ``` @@ -2373,7 +2133,7 @@ passed ✅ #42 - **Status:** ✅ `passed` -- **Duration:** `0.000172` s +- **Duration:** `0.000188` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2382,7 +2142,7 @@ passed 📌 Duration ``` -0.00017107801977545023 +0.0001714759273454547 ``` @@ -2401,7 +2161,7 @@ passed 📌 Duration ``` -0.0001721070148050785 +0.00018791807815432549 ``` @@ -2420,7 +2180,7 @@ passed 📌 Duration ``` -0.00020881998352706432 +0.00018813100177794695 ``` @@ -2452,7 +2212,7 @@ passed 📌 Duration ``` -0.0001935199834406376 +0.00018309091683477163 ``` @@ -2485,7 +2245,7 @@ passed ❌ #9 - **Status:** ❌ `failed` -- **Duration:** `0.001130` s +- **Duration:** `0.001056` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2494,7 +2254,7 @@ passed 📌 Duration ``` -0.0006984900683164597 +0.0007795440033078194 ``` @@ -2513,7 +2273,7 @@ passed 📌 Duration ``` -0.0011301309568807483 +0.0010555379558354616 ``` @@ -2572,7 +2332,7 @@ tests/test_io_utils.py:72: Failed 📌 Duration ``` -0.0006893440149724483 +0.0009553310228511691 ``` @@ -2600,7 +2360,7 @@ passed ❌ #11 - **Status:** ❌ `failed` -- **Duration:** `0.000180` s +- **Duration:** `0.000184` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2609,7 +2369,7 @@ passed 📌 Duration ``` -0.00017876795027405024 +0.00019246398005634546 ``` @@ -2628,7 +2388,7 @@ passed 📌 Duration ``` -0.00018003105651587248 +0.00018435704987496138 ``` @@ -2680,7 +2440,7 @@ tests/test_math_utils.py:16: NameError 📌 Duration ``` -0.0002352150622755289 +0.00025507796090096235 ``` @@ -2703,7 +2463,7 @@ passed ❌ #14 - **Status:** ❌ `failed` -- **Duration:** `0.000425` s +- **Duration:** `0.000477` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2712,7 +2472,7 @@ passed 📌 Duration ``` -0.00018020498100668192 +0.0001691450597718358 ``` @@ -2731,7 +2491,7 @@ passed 📌 Duration ``` -0.0004245330346748233 +0.0004768100334331393 ``` @@ -2785,7 +2545,7 @@ tests/test_math_utils.py:29: AssertionError 📌 Duration ``` -0.00023770402185618877 +0.00026376801542937756 ``` @@ -2808,7 +2568,7 @@ passed ❌ #17 - **Status:** ❌ `failed` -- **Duration:** `0.000170` s +- **Duration:** `0.000193` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2817,7 +2577,7 @@ passed 📌 Duration ``` -0.00017849996220320463 +0.00019102497026324272 ``` @@ -2836,7 +2596,7 @@ passed 📌 Duration ``` -0.0001703340094536543 +0.00019292894285172224 ``` @@ -2888,7 +2648,7 @@ tests/test_math_utils.py:43: RuntimeError 📌 Duration ``` -0.00023643800523132086 +0.00023589807096868753 ``` @@ -2911,7 +2671,7 @@ passed ❌ #25 - **Status:** ❌ `failed` -- **Duration:** `0.000169` s +- **Duration:** `0.000189` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -2920,7 +2680,7 @@ passed 📌 Duration ``` -0.00017035903874784708 +0.00018074410036206245 ``` @@ -2939,7 +2699,7 @@ passed 📌 Duration ``` -0.0001687349285930395 +0.0001893120352178812 ``` @@ -2991,7 +2751,7 @@ tests/test_math_utils.py:84: Exception 📌 Duration ``` -0.0002365920227020979 +0.00023920799139887094 ``` @@ -3014,7 +2774,7 @@ passed ❌ #27 - **Status:** ❌ `failed` -- **Duration:** `0.000200` s +- **Duration:** `0.000175` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -3023,7 +2783,7 @@ passed 📌 Duration ``` -0.00016754097305238247 +0.00018349499441683292 ``` @@ -3042,7 +2802,7 @@ passed 📌 Duration ``` -0.0002002309774979949 +0.0001746440539136529 ``` @@ -3118,7 +2878,7 @@ tests/test_math_utils.py:93: StopIteration The above exception was the direct cause of the following exception: cls = -func = . at 0x7efc63bf18b0> +func = . at 0x7f6c0b9338b0> when = 'call' reraise = (, ) @@ -3188,7 +2948,7 @@ E RuntimeError: generator raised StopIteration 📌 Duration ``` -0.00042397005017846823 +0.00044928805436939 ``` @@ -3211,7 +2971,7 @@ passed ❌ #28 - **Status:** ❌ `failed` -- **Duration:** `0.000200` s +- **Duration:** `0.000203` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -3220,7 +2980,7 @@ passed 📌 Duration ``` -0.0002766069956123829 +0.0002709520049393177 ``` @@ -3239,7 +2999,7 @@ passed 📌 Duration ``` -0.00019975390750914812 +0.00020276301074773073 ``` @@ -3291,7 +3051,7 @@ tests/test_math_utils.py:97: GeneratorExit 📌 Duration ``` -0.00030242500361055136 +0.0002941089915111661 ``` @@ -3314,7 +3074,7 @@ passed ❌ #29 - **Status:** ❌ `failed` -- **Duration:** `0.000207` s +- **Duration:** `0.000219` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -3323,7 +3083,7 @@ passed 📌 Duration ``` -0.00046823802404105663 +0.00045932596549391747 ``` @@ -3342,7 +3102,7 @@ passed 📌 Duration ``` -0.00020655395928770304 +0.00021862389985471964 ``` @@ -3378,7 +3138,7 @@ message: RecursionError 📌 Longrepr ``` -monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7efc636b83d0> +monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6c0b736f10> def test_recursion_limit(monkeypatch): # Lower recursion limit to force RecursionError on deep recursion @@ -3397,7 +3157,7 @@ tests/test_math_utils.py:102: RecursionError 📌 Duration ``` -0.0007711399812251329 +0.0008338589686900377 ``` @@ -3420,7 +3180,7 @@ passed ❌ #32 - **Status:** ❌ `failed` -- **Duration:** `0.000201` s +- **Duration:** `0.000192` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -3429,7 +3189,7 @@ passed 📌 Duration ``` -0.0003347810124978423 +0.00035349803511053324 ``` @@ -3448,7 +3208,7 @@ passed 📌 Duration ``` -0.00020090991165488958 +0.00019166001584380865 ``` @@ -3484,7 +3244,7 @@ message: AttributeError 📌 Longrepr ``` -monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7efc63395ee0> +monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6c0b54aca0> def test_broken_function(monkeypatch): # Simulate broken function raising TypeError @@ -3504,7 +3264,7 @@ tests/test_math_utils.py:126: AttributeError 📌 Duration ``` -0.0006690350128337741 +0.0006822709692642093 ``` @@ -3532,7 +3292,7 @@ passed ❌ #39 - **Status:** ❌ `failed` -- **Duration:** `0.000191` s +- **Duration:** `0.000203` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -3541,7 +3301,7 @@ passed 📌 Duration ``` -0.00016690208576619625 +0.0001828980166465044 ``` @@ -3560,7 +3320,7 @@ passed 📌 Duration ``` -0.00019142997916787863 +0.0002025360008701682 ``` @@ -3613,7 +3373,7 @@ tests/test_string_utils.py:28: Failed 📌 Duration ``` -0.0002366270637139678 +0.00024413398932665586 ``` @@ -3646,7 +3406,7 @@ passed ❌ #16 - **Status:** ❌ `xfailed` -- **Duration:** `0.000309` s +- **Duration:** `0.000316` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -3655,7 +3415,7 @@ passed 📌 Duration ``` -0.00019553292077034712 +0.00018579699099063873 ``` @@ -3674,7 +3434,7 @@ passed 📌 Duration ``` -0.0003087470540776849 +0.000316492049023509 ``` @@ -3729,7 +3489,7 @@ tests/test_math_utils.py:39: AssertionError 📌 Duration ``` -0.00025437690783292055 +0.00025751092471182346 ``` @@ -3757,7 +3517,7 @@ passed ❌ #43 - **Status:** ❌ `xfailed` -- **Duration:** `0.000652` s +- **Duration:** `0.000709` s - **Severity:** `normal` ### 🔧 Setup Phase @@ -3766,7 +3526,7 @@ passed 📌 Duration ``` -0.0001809820532798767 +0.00017805001698434353 ``` @@ -3785,7 +3545,7 @@ passed 📌 Duration ``` -0.0006521429168060422 +0.0007094360189512372 ``` @@ -3846,7 +3606,7 @@ tests/test_string_utils.py:50: AssertionError 📌 Duration ``` -0.0002760490169748664 +0.000262564979493618 ``` diff --git a/ci-reports/markdown/pytest-report.json b/ci-reports/markdown/pytest-report.json index 55423ef21..a249d90cb 100644 --- a/ci-reports/markdown/pytest-report.json +++ b/ci-reports/markdown/pytest-report.json @@ -1 +1 @@ -{"created": 1752566491.2021568, "duration": 0.4718186855316162, "exitcode": 2, "root": "/workspace/tligui_y/slic", "environment": {}, "summary": {"passed": 32, "failed": 10, "xfailed": 2, "total": 44, "collected": 44}, "collectors": [{"nodeid": "", "outcome": "passed", "result": [{"nodeid": ".", "type": "Dir"}]}, {"nodeid": "allure-results", "outcome": "passed", "result": []}, {"nodeid": "ci-reports/allure", "outcome": "passed", "result": []}, {"nodeid": "ci-reports/coverage", "outcome": "passed", "result": []}, {"nodeid": "ci-reports/markdown", "outcome": "passed", "result": []}, {"nodeid": "ci-reports", "outcome": "passed", "result": [{"nodeid": "ci-reports/allure", "type": "Dir"}, {"nodeid": "ci-reports/coverage", "type": "Dir"}, {"nodeid": "ci-reports/markdown", "type": "Dir"}]}, {"nodeid": "functions", "outcome": "passed", "result": []}, {"nodeid": "tests/test_broken_fct.py", "outcome": "passed", "result": []}, {"nodeid": "tests/test_collector_error.py", "outcome": "passed", "result": []}, {"nodeid": "tests/test_io_utils.py", "outcome": "passed", "result": [{"nodeid": "tests/test_io_utils.py::test_read_file", "type": "Function", "lineno": 9}, {"nodeid": "tests/test_io_utils.py::test_write_file", "type": "Function", "lineno": 16}, {"nodeid": "tests/test_io_utils.py::test_cause_io_error", "type": "Function", "lineno": 22}, {"nodeid": "tests/test_io_utils.py::test_file_not_found", "type": "Function", "lineno": 27}, {"nodeid": "tests/test_io_utils.py::test_permission_error", "type": "Function", "lineno": 32}, {"nodeid": "tests/test_io_utils.py::test_mock_open_error", "type": "Function", "lineno": 40}, {"nodeid": "tests/test_io_utils.py::test_file_handle_closed_error", "type": "Function", "lineno": 49}, {"nodeid": "tests/test_io_utils.py::test_os_error", "type": "Function", "lineno": 56}, {"nodeid": "tests/test_io_utils.py::test_write_file_readonly", "type": "Function", "lineno": 64}, {"nodeid": "tests/test_io_utils.py::test_file_not_found_error", "type": "Function", "lineno": 73}]}, {"nodeid": "tests/test_math_utils.py", "outcome": "passed", "result": [{"nodeid": "tests/test_math_utils.py::test_broken", "type": "Function", "lineno": 13}, {"nodeid": "tests/test_math_utils.py::test_call_missing_function", "type": "Function", "lineno": 17}, {"nodeid": "tests/test_math_utils.py::test_addition_pass", "type": "Function", "lineno": 22}, {"nodeid": "tests/test_math_utils.py::test_addition_fail", "type": "Function", "lineno": 26}, {"nodeid": "tests/test_math_utils.py::test_division_zero", "type": "Function", "lineno": 30}, {"nodeid": "tests/test_math_utils.py::test_multiply_xfail", "type": "Function", "lineno": 35}, {"nodeid": "tests/test_math_utils.py::test_runtime_error", "type": "Function", "lineno": 40}, {"nodeid": "tests/test_math_utils.py::test_memory_error", "type": "Function", "lineno": 44}, {"nodeid": "tests/test_math_utils.py::test_timeout_error", "type": "Function", "lineno": 49}, {"nodeid": "tests/test_math_utils.py::test_recursion_error", "type": "Function", "lineno": 54}, {"nodeid": "tests/test_math_utils.py::test_floating_point_error", "type": "Function", "lineno": 61}, {"nodeid": "tests/test_math_utils.py::test_floating_point_overflow", "type": "Function", "lineno": 66}, {"nodeid": "tests/test_math_utils.py::test_value_error", "type": "Function", "lineno": 71}, {"nodeid": "tests/test_math_utils.py::test_type_error", "type": "Function", "lineno": 76}, {"nodeid": "tests/test_math_utils.py::test_unhandled_exception", "type": "Function", "lineno": 81}, {"nodeid": "tests/test_math_utils.py::test_custom_error", "type": "Function", "lineno": 85}, {"nodeid": "tests/test_math_utils.py::test_stop_iteration_direct", "type": "Function", "lineno": 90}, {"nodeid": "tests/test_math_utils.py::test_generator_exit_direct", "type": "Function", "lineno": 94}, {"nodeid": "tests/test_math_utils.py::test_recursion_limit", "type": "Function", "lineno": 98}, {"nodeid": "tests/test_math_utils.py::test_malformed_code", "type": "Function", "lineno": 108}, {"nodeid": "tests/test_math_utils.py::test_sys_exit", "type": "Function", "lineno": 113}, {"nodeid": "tests/test_math_utils.py::test_broken_function", "type": "Function", "lineno": 121}, {"nodeid": "tests/test_math_utils.py::test_import_error_patch", "type": "Function", "lineno": 129}, {"nodeid": "tests/test_math_utils.py::test_module_not_found_error", "type": "Function", "lineno": 140}]}, {"nodeid": "tests/test_string_utils.py", "outcome": "passed", "result": [{"nodeid": "tests/test_string_utils.py::test_uppercase_normal", "type": "Function", "lineno": 7}, {"nodeid": "tests/test_string_utils.py::test_uppercase_type_error", "type": "Function", "lineno": 11}, {"nodeid": "tests/test_string_utils.py::test_reverse_string", "type": "Function", "lineno": 16}, {"nodeid": "tests/test_string_utils.py::test_warning_emit", "type": "Function", "lineno": 20}, {"nodeid": "tests/test_string_utils.py::test_unicode_encode_error", "type": "Function", "lineno": 24}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_error", "type": "Function", "lineno": 29}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_surrogateescape", "type": "Function", "lineno": 34}, {"nodeid": "tests/test_string_utils.py::test_import_warning", "type": "Function", "lineno": 39}, {"nodeid": "tests/test_string_utils.py::test_xfail_uppercase_digits", "type": "Function", "lineno": 46}, {"nodeid": "tests/test_string_utils.py::test_keyboard_interrupt_direct", "type": "Function", "lineno": 51}]}, {"nodeid": "tests", "outcome": "passed", "result": [{"nodeid": "tests/test_broken_fct.py", "type": "Module"}, {"nodeid": "tests/test_collector_error.py", "type": "Module"}, {"nodeid": "tests/test_io_utils.py", "type": "Module"}, {"nodeid": "tests/test_math_utils.py", "type": "Module"}, {"nodeid": "tests/test_string_utils.py", "type": "Module"}]}, {"nodeid": ".", "outcome": "passed", "result": [{"nodeid": "allure-results", "type": "Dir"}, {"nodeid": "ci-reports", "type": "Dir"}, {"nodeid": "functions", "type": "Package"}, {"nodeid": "tests", "type": "Package"}]}], "tests": [{"nodeid": "tests/test_io_utils.py::test_read_file", "lineno": 9, "outcome": "passed", "keywords": ["test_read_file", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.003862760029733181, "outcome": "passed"}, "call": {"duration": 0.0005759899504482746, "outcome": "passed"}, "teardown": {"duration": 0.0012187049724161625, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_write_file", "lineno": 16, "outcome": "passed", "keywords": ["test_write_file", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.000665434985421598, "outcome": "passed"}, "call": {"duration": 0.00033802702091634274, "outcome": "passed"}, "teardown": {"duration": 0.0006613769801333547, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_cause_io_error", "lineno": 22, "outcome": "passed", "keywords": ["test_cause_io_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017981010023504496, "outcome": "passed"}, "call": {"duration": 0.0003387361066415906, "outcome": "passed"}, "teardown": {"duration": 0.00020792894065380096, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_file_not_found", "lineno": 27, "outcome": "passed", "keywords": ["test_file_not_found", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017420691438019276, "outcome": "passed"}, "call": {"duration": 0.00019270204938948154, "outcome": "passed"}, "teardown": {"duration": 0.00020265299826860428, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_permission_error", "lineno": 32, "outcome": "passed", "keywords": ["test_permission_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003596659516915679, "outcome": "passed"}, "call": {"duration": 0.0002129280474036932, "outcome": "passed"}, "teardown": {"duration": 0.0006530900718644261, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_mock_open_error", "lineno": 40, "outcome": "passed", "keywords": ["test_mock_open_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003540610196068883, "outcome": "passed"}, "call": {"duration": 0.008355612982995808, "outcome": "passed"}, "teardown": {"duration": 0.0006731300381943583, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_file_handle_closed_error", "lineno": 49, "outcome": "passed", "keywords": ["test_file_handle_closed_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001812560949474573, "outcome": "passed"}, "call": {"duration": 0.00018437509424984455, "outcome": "passed"}, "teardown": {"duration": 0.0002127690240740776, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_os_error", "lineno": 56, "outcome": "passed", "keywords": ["test_os_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003418419510126114, "outcome": "passed"}, "call": {"duration": 0.00020075298380106688, "outcome": "passed"}, "teardown": {"duration": 0.001043127034790814, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_write_file_readonly", "lineno": 64, "outcome": "failed", "keywords": ["test_write_file_readonly", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0006984900683164597, "outcome": "passed"}, "call": {"duration": 0.0011301309568807483, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_io_utils.py", "lineno": 72, "message": "Failed: DID NOT RAISE "}, "traceback": [{"path": "tests/test_io_utils.py", "lineno": 72, "message": "Failed"}], "longrepr": "tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_write_file_readonly0')\n\n def test_write_file_readonly(tmp_path):\n # Writing to read-only file raises PermissionError\n file = tmp_path / \"readonly.txt\"\n file.write_text(\"data\")\n os.chmod(file, 0o444)\n with pytest.raises(PermissionError):\n with open(file, \"w\") as f:\n> f.write(\"new content\")\nE Failed: DID NOT RAISE \n\ntests/test_io_utils.py:72: Failed"}, "teardown": {"duration": 0.0006893440149724483, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_file_not_found_error", "lineno": 73, "outcome": "passed", "keywords": ["test_file_not_found_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017909402959048748, "outcome": "passed"}, "call": {"duration": 0.00019741302821785212, "outcome": "passed"}, "teardown": {"duration": 0.00020375405438244343, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_broken", "lineno": 13, "outcome": "failed", "keywords": ["test_broken", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017876795027405024, "outcome": "passed"}, "call": {"duration": 0.00018003105651587248, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 16, "message": "NameError: name 'want_the_test_to_fail' is not defined"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 16, "message": "NameError"}], "longrepr": "def test_broken():\n # simulating a broken or faulty test implementation that will cause the test to error\n> want_the_test_to_fail\nE NameError: name 'want_the_test_to_fail' is not defined\n\ntests/test_math_utils.py:16: NameError"}, "teardown": {"duration": 0.0002352150622755289, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_call_missing_function", "lineno": 17, "outcome": "passed", "keywords": ["test_call_missing_function", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018563796766102314, "outcome": "passed"}, "call": {"duration": 0.00018518290016800165, "outcome": "passed"}, "teardown": {"duration": 0.00020334904547780752, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_addition_pass", "lineno": 22, "outcome": "passed", "keywords": ["test_addition_pass", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017578003462404013, "outcome": "passed"}, "call": {"duration": 0.0001681699650362134, "outcome": "passed"}, "teardown": {"duration": 0.00018882297445088625, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_addition_fail", "lineno": 26, "outcome": "failed", "keywords": ["test_addition_fail", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018020498100668192, "outcome": "passed"}, "call": {"duration": 0.0004245330346748233, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 29, "message": "assert 4 == 5\n + where 4 = addition(2, 2)"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 29, "message": "AssertionError"}], "longrepr": "def test_addition_fail():\n # Assertion failure: expected incorrect result\n> assert addition(2, 2) == 5\nE assert 4 == 5\nE + where 4 = addition(2, 2)\n\ntests/test_math_utils.py:29: AssertionError"}, "teardown": {"duration": 0.00023770402185618877, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_division_zero", "lineno": 30, "outcome": "passed", "keywords": ["test_division_zero", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018172396812587976, "outcome": "passed"}, "call": {"duration": 0.00018381199333816767, "outcome": "passed"}, "teardown": {"duration": 0.00019507796969264746, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_multiply_xfail", "lineno": 35, "outcome": "xfailed", "keywords": ["test_multiply_xfail", "xfail", "pytestmark", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00019553292077034712, "outcome": "passed"}, "call": {"duration": 0.0003087470540776849, "outcome": "skipped", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 39, "message": "assert 4 == 5\n + where 4 = multiply(2, 2)"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 39, "message": "AssertionError"}], "longrepr": "@pytest.mark.xfail(reason=\"Expected failure\")\n def test_multiply_xfail():\n # Expected fail test (xfail): incorrect expected multiply result\n> assert multiply(2, 2) == 5\nE assert 4 == 5\nE + where 4 = multiply(2, 2)\n\ntests/test_math_utils.py:39: AssertionError"}, "teardown": {"duration": 0.00025437690783292055, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_runtime_error", "lineno": 40, "outcome": "failed", "keywords": ["test_runtime_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017849996220320463, "outcome": "passed"}, "call": {"duration": 0.0001703340094536543, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 43, "message": "RuntimeError: Forced runtime error"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 43, "message": "RuntimeError"}], "longrepr": "def test_runtime_error():\n # Test raises an uncaught RuntimeError\n> raise RuntimeError(\"Forced runtime error\")\nE RuntimeError: Forced runtime error\n\ntests/test_math_utils.py:43: RuntimeError"}, "teardown": {"duration": 0.00023643800523132086, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_memory_error", "lineno": 44, "outcome": "passed", "keywords": ["test_memory_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001932900631800294, "outcome": "passed"}, "call": {"duration": 0.00018015201203525066, "outcome": "passed"}, "teardown": {"duration": 0.00018845393788069487, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_timeout_error", "lineno": 49, "outcome": "passed", "keywords": ["test_timeout_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018062896560877562, "outcome": "passed"}, "call": {"duration": 0.00017759902402758598, "outcome": "passed"}, "teardown": {"duration": 0.0001938709756359458, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_recursion_error", "lineno": 54, "outcome": "passed", "keywords": ["test_recursion_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017978204414248466, "outcome": "passed"}, "call": {"duration": 0.0009519440354779363, "outcome": "passed"}, "teardown": {"duration": 0.00020991393830627203, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_floating_point_error", "lineno": 61, "outcome": "passed", "keywords": ["test_floating_point_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001741249579936266, "outcome": "passed"}, "call": {"duration": 0.00017169106286019087, "outcome": "passed"}, "teardown": {"duration": 0.00020102201960980892, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_floating_point_overflow", "lineno": 66, "outcome": "passed", "keywords": ["test_floating_point_overflow", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00019025395158678293, "outcome": "passed"}, "call": {"duration": 0.00019589695148169994, "outcome": "passed"}, "teardown": {"duration": 0.00019368203356862068, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_value_error", "lineno": 71, "outcome": "passed", "keywords": ["test_value_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001662379363551736, "outcome": "passed"}, "call": {"duration": 0.00018056901171803474, "outcome": "passed"}, "teardown": {"duration": 0.000204996089451015, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_type_error", "lineno": 76, "outcome": "passed", "keywords": ["test_type_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001786520006135106, "outcome": "passed"}, "call": {"duration": 0.00016915600281208754, "outcome": "passed"}, "teardown": {"duration": 0.0001956659834831953, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_unhandled_exception", "lineno": 81, "outcome": "failed", "keywords": ["test_unhandled_exception", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017035903874784708, "outcome": "passed"}, "call": {"duration": 0.0001687349285930395, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 84, "message": "Exception: Generic unhandled exception"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 84, "message": "Exception"}], "longrepr": "def test_unhandled_exception():\n # Raises generic unhandled Exception\n> raise Exception(\"Generic unhandled exception\")\nE Exception: Generic unhandled exception\n\ntests/test_math_utils.py:84: Exception"}, "teardown": {"duration": 0.0002365920227020979, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_custom_error", "lineno": 85, "outcome": "passed", "keywords": ["test_custom_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018656998872756958, "outcome": "passed"}, "call": {"duration": 0.0001806790241971612, "outcome": "passed"}, "teardown": {"duration": 0.00019679800607264042, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_stop_iteration_direct", "lineno": 90, "outcome": "failed", "keywords": ["test_stop_iteration_direct", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00016754097305238247, "outcome": "passed"}, "call": {"duration": 0.0002002309774979949, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/_pytest/capture.py", "lineno": 880, "message": "RuntimeError: generator raised StopIteration"}, "traceback": [{"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py", "lineno": 341, "message": ""}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py", "lineno": 242, "message": "in "}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/pluggy/_hooks.py", "lineno": 513, "message": "in __call__"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/pluggy/_manager.py", "lineno": 120, "message": "in _hookexec"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py", "lineno": 92, "message": "in pytest_runtest_call"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py", "lineno": 68, "message": "in thread_exception_runtest_hook"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py", "lineno": 95, "message": "in pytest_runtest_call"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py", "lineno": 70, "message": "in unraisable_exception_runtest_hook"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py", "lineno": 846, "message": "in pytest_runtest_call"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py", "lineno": 829, "message": "in _runtest_for"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/capture.py", "lineno": 880, "message": "RuntimeError"}], "longrepr": "def test_stop_iteration_direct():\n # Directly raise StopIteration exception\n> raise StopIteration()\nE StopIteration\n\ntests/test_math_utils.py:93: StopIteration\n\nThe above exception was the direct cause of the following exception:\n\ncls = \nfunc = . at 0x7efc63bf18b0>\nwhen = 'call'\nreraise = (, )\n\n @classmethod\n def from_call(\n cls,\n func: Callable[[], TResult],\n when: Literal[\"collect\", \"setup\", \"call\", \"teardown\"],\n reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,\n ) -> CallInfo[TResult]:\n \"\"\"Call func, wrapping the result in a CallInfo.\n \n :param func:\n The function to call. Called without arguments.\n :type func: Callable[[], _pytest.runner.TResult]\n :param when:\n The phase in which the function is called.\n :param reraise:\n Exception or exceptions that shall propagate if raised by the\n function, instead of being wrapped in the CallInfo.\n \"\"\"\n excinfo = None\n start = timing.time()\n precise_start = timing.perf_counter()\n try:\n> result: TResult | None = func()\n\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py:341: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n.pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py:242: in \n lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise\n.pixi/envs/default/lib/python3.8/site-packages/pluggy/_hooks.py:513: in __call__\n return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)\n.pixi/envs/default/lib/python3.8/site-packages/pluggy/_manager.py:120: in _hookexec\n return self._inner_hookexec(hook_name, methods, kwargs, firstresult)\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py:92: in pytest_runtest_call\n yield from thread_exception_runtest_hook()\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py:68: in thread_exception_runtest_hook\n yield\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py:95: in pytest_runtest_call\n yield from unraisable_exception_runtest_hook()\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py:70: in unraisable_exception_runtest_hook\n yield\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py:846: in pytest_runtest_call\n yield from self._runtest_for(item, \"call\")\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py:829: in _runtest_for\n yield\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = _capture_fixture=None>\nitem = \n\n @hookimpl(wrapper=True)\n def pytest_runtest_call(self, item: Item) -> Generator[None]:\n with self.item_capture(\"call\", item):\n> return (yield)\nE RuntimeError: generator raised StopIteration\n\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/capture.py:880: RuntimeError"}, "teardown": {"duration": 0.00042397005017846823, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_generator_exit_direct", "lineno": 94, "outcome": "failed", "keywords": ["test_generator_exit_direct", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0002766069956123829, "outcome": "passed"}, "call": {"duration": 0.00019975390750914812, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 97, "message": "GeneratorExit"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 97, "message": "GeneratorExit"}], "longrepr": "def test_generator_exit_direct():\n # Directly raise GeneratorExit exception\n> raise GeneratorExit()\nE GeneratorExit\n\ntests/test_math_utils.py:97: GeneratorExit"}, "teardown": {"duration": 0.00030242500361055136, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_recursion_limit", "lineno": 98, "outcome": "failed", "keywords": ["test_recursion_limit", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00046823802404105663, "outcome": "passed"}, "call": {"duration": 0.00020655395928770304, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 102, "message": "RecursionError: cannot set the recursion limit to 50 at the recursion depth 37: the limit is too low"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 102, "message": "RecursionError"}], "longrepr": "monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7efc636b83d0>\n\n def test_recursion_limit(monkeypatch):\n # Lower recursion limit to force RecursionError on deep recursion\n original_limit = sys.getrecursionlimit()\n> sys.setrecursionlimit(50)\nE RecursionError: cannot set the recursion limit to 50 at the recursion depth 37: the limit is too low\n\ntests/test_math_utils.py:102: RecursionError"}, "teardown": {"duration": 0.0007711399812251329, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_malformed_code", "lineno": 108, "outcome": "passed", "keywords": ["test_malformed_code", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018735707271844149, "outcome": "passed"}, "call": {"duration": 0.00020766595844179392, "outcome": "passed"}, "teardown": {"duration": 0.00020599900744855404, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_sys_exit", "lineno": 113, "outcome": "passed", "keywords": ["test_sys_exit", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00039253500290215015, "outcome": "passed"}, "call": {"duration": 0.00020028697326779366, "outcome": "passed"}, "teardown": {"duration": 0.0006594470469281077, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_broken_function", "lineno": 121, "outcome": "failed", "keywords": ["test_broken_function", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003347810124978423, "outcome": "passed"}, "call": {"duration": 0.00020090991165488958, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 126, "message": "AttributeError: 'tests.test_math_utils' has no attribute 'test_broken_function'"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 126, "message": "AttributeError"}], "longrepr": "monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7efc63395ee0>\n\n def test_broken_function(monkeypatch):\n # Simulate broken function raising TypeError\n def broken_func(*args, **kwargs):\n raise TypeError(\"Broken function\")\n> monkeypatch.setattr(__name__, \"test_broken_function\", broken_func)\nE AttributeError: 'tests.test_math_utils' has no attribute 'test_broken_function'\n\ntests/test_math_utils.py:126: AttributeError"}, "teardown": {"duration": 0.0006690350128337741, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_import_error_patch", "lineno": 129, "outcome": "passed", "keywords": ["test_import_error_patch", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003369100159034133, "outcome": "passed"}, "call": {"duration": 0.00023073202464729548, "outcome": "passed"}, "teardown": {"duration": 0.0006213830783963203, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_module_not_found_error", "lineno": 140, "outcome": "passed", "keywords": ["test_module_not_found_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017822289373725653, "outcome": "passed"}, "call": {"duration": 0.0004918569466099143, "outcome": "passed"}, "teardown": {"duration": 0.00020779098849743605, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_uppercase_normal", "lineno": 7, "outcome": "passed", "keywords": ["test_uppercase_normal", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.000179384951479733, "outcome": "passed"}, "call": {"duration": 0.0001638780813664198, "outcome": "passed"}, "teardown": {"duration": 0.00018798792734742165, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_uppercase_type_error", "lineno": 11, "outcome": "passed", "keywords": ["test_uppercase_type_error", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001917120534926653, "outcome": "passed"}, "call": {"duration": 0.0001819030148908496, "outcome": "passed"}, "teardown": {"duration": 0.00019630498718470335, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_reverse_string", "lineno": 16, "outcome": "passed", "keywords": ["test_reverse_string", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00016557297203689814, "outcome": "passed"}, "call": {"duration": 0.00015554099809378386, "outcome": "passed"}, "teardown": {"duration": 0.00019384303595870733, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_warning_emit", "lineno": 20, "outcome": "passed", "keywords": ["test_warning_emit", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001844690414145589, "outcome": "passed"}, "call": {"duration": 0.0001697220141068101, "outcome": "passed"}, "teardown": {"duration": 0.00019020005129277706, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_unicode_encode_error", "lineno": 24, "outcome": "failed", "keywords": ["test_unicode_encode_error", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00016690208576619625, "outcome": "passed"}, "call": {"duration": 0.00019142997916787863, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 28, "message": "Failed: DID NOT RAISE "}, "traceback": [{"path": "tests/test_string_utils.py", "lineno": 28, "message": "Failed"}], "longrepr": "def test_unicode_encode_error():\n # UnicodeEncodeError due to decoding malformed surrogate byte\n with pytest.raises(UnicodeEncodeError):\n> b'\\udc80'.decode('utf-8')\nE Failed: DID NOT RAISE \n\ntests/test_string_utils.py:28: Failed"}, "teardown": {"duration": 0.0002366270637139678, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_error", "lineno": 29, "outcome": "passed", "keywords": ["test_unicode_decode_error", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018171791452914476, "outcome": "passed"}, "call": {"duration": 0.00018399301916360855, "outcome": "passed"}, "teardown": {"duration": 0.00019275001250207424, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_surrogateescape", "lineno": 34, "outcome": "passed", "keywords": ["test_unicode_decode_surrogateescape", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018886500038206577, "outcome": "passed"}, "call": {"duration": 0.00018197600729763508, "outcome": "passed"}, "teardown": {"duration": 0.00019282009452581406, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_import_warning", "lineno": 39, "outcome": "passed", "keywords": ["test_import_warning", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017107801977545023, "outcome": "passed"}, "call": {"duration": 0.0001721070148050785, "outcome": "passed"}, "teardown": {"duration": 0.00020881998352706432, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_xfail_uppercase_digits", "lineno": 46, "outcome": "xfailed", "keywords": ["test_xfail_uppercase_digits", "xfail", "pytestmark", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001809820532798767, "outcome": "passed"}, "call": {"duration": 0.0006521429168060422, "outcome": "skipped", "crash": {"path": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 50, "message": "AssertionError: assert 'ABC123' == 'ABC1234'\n \n - ABC1234\n ? -\n + ABC123"}, "traceback": [{"path": "tests/test_string_utils.py", "lineno": 50, "message": "AssertionError"}], "longrepr": "@pytest.mark.xfail(reason=\"Expected failure: uppercase does not handle digits\")\n def test_xfail_uppercase_digits():\n # Expected fail test because uppercase won't change digits\n> assert uppercase(\"abc123\") == \"ABC1234\"\nE AssertionError: assert 'ABC123' == 'ABC1234'\nE \nE - ABC1234\nE ? -\nE + ABC123\n\ntests/test_string_utils.py:50: AssertionError"}, "teardown": {"duration": 0.0002760490169748664, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_keyboard_interrupt_direct", "lineno": 51, "outcome": "passed", "keywords": ["test_keyboard_interrupt_direct", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001935199834406376, "outcome": "passed"}}], "warnings": [{"message": "invalid escape sequence \\u", "category": "DeprecationWarning", "when": "collect", "filename": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 28}, {"message": "Test warning", "category": "UserWarning", "when": "runtest", "filename": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 23}]} \ No newline at end of file +{"created": 1752567475.2891982, "duration": 0.4933810234069824, "exitcode": 2, "root": "/workspace/tligui_y/slic", "environment": {}, "summary": {"passed": 32, "failed": 10, "xfailed": 2, "total": 44, "collected": 44}, "collectors": [{"nodeid": "", "outcome": "passed", "result": [{"nodeid": ".", "type": "Dir"}]}, {"nodeid": "allure-results", "outcome": "passed", "result": []}, {"nodeid": "ci-reports/allure", "outcome": "passed", "result": []}, {"nodeid": "ci-reports/coverage", "outcome": "passed", "result": []}, {"nodeid": "ci-reports/markdown", "outcome": "passed", "result": []}, {"nodeid": "ci-reports", "outcome": "passed", "result": [{"nodeid": "ci-reports/allure", "type": "Dir"}, {"nodeid": "ci-reports/coverage", "type": "Dir"}, {"nodeid": "ci-reports/markdown", "type": "Dir"}]}, {"nodeid": "functions", "outcome": "passed", "result": []}, {"nodeid": "tests/test_broken_fct.py", "outcome": "passed", "result": []}, {"nodeid": "tests/test_collector_error.py", "outcome": "passed", "result": []}, {"nodeid": "tests/test_io_utils.py", "outcome": "passed", "result": [{"nodeid": "tests/test_io_utils.py::test_read_file", "type": "Function", "lineno": 9}, {"nodeid": "tests/test_io_utils.py::test_write_file", "type": "Function", "lineno": 16}, {"nodeid": "tests/test_io_utils.py::test_cause_io_error", "type": "Function", "lineno": 22}, {"nodeid": "tests/test_io_utils.py::test_file_not_found", "type": "Function", "lineno": 27}, {"nodeid": "tests/test_io_utils.py::test_permission_error", "type": "Function", "lineno": 32}, {"nodeid": "tests/test_io_utils.py::test_mock_open_error", "type": "Function", "lineno": 40}, {"nodeid": "tests/test_io_utils.py::test_file_handle_closed_error", "type": "Function", "lineno": 49}, {"nodeid": "tests/test_io_utils.py::test_os_error", "type": "Function", "lineno": 56}, {"nodeid": "tests/test_io_utils.py::test_write_file_readonly", "type": "Function", "lineno": 64}, {"nodeid": "tests/test_io_utils.py::test_file_not_found_error", "type": "Function", "lineno": 73}]}, {"nodeid": "tests/test_math_utils.py", "outcome": "passed", "result": [{"nodeid": "tests/test_math_utils.py::test_broken", "type": "Function", "lineno": 13}, {"nodeid": "tests/test_math_utils.py::test_call_missing_function", "type": "Function", "lineno": 17}, {"nodeid": "tests/test_math_utils.py::test_addition_pass", "type": "Function", "lineno": 22}, {"nodeid": "tests/test_math_utils.py::test_addition_fail", "type": "Function", "lineno": 26}, {"nodeid": "tests/test_math_utils.py::test_division_zero", "type": "Function", "lineno": 30}, {"nodeid": "tests/test_math_utils.py::test_multiply_xfail", "type": "Function", "lineno": 35}, {"nodeid": "tests/test_math_utils.py::test_runtime_error", "type": "Function", "lineno": 40}, {"nodeid": "tests/test_math_utils.py::test_memory_error", "type": "Function", "lineno": 44}, {"nodeid": "tests/test_math_utils.py::test_timeout_error", "type": "Function", "lineno": 49}, {"nodeid": "tests/test_math_utils.py::test_recursion_error", "type": "Function", "lineno": 54}, {"nodeid": "tests/test_math_utils.py::test_floating_point_error", "type": "Function", "lineno": 61}, {"nodeid": "tests/test_math_utils.py::test_floating_point_overflow", "type": "Function", "lineno": 66}, {"nodeid": "tests/test_math_utils.py::test_value_error", "type": "Function", "lineno": 71}, {"nodeid": "tests/test_math_utils.py::test_type_error", "type": "Function", "lineno": 76}, {"nodeid": "tests/test_math_utils.py::test_unhandled_exception", "type": "Function", "lineno": 81}, {"nodeid": "tests/test_math_utils.py::test_custom_error", "type": "Function", "lineno": 85}, {"nodeid": "tests/test_math_utils.py::test_stop_iteration_direct", "type": "Function", "lineno": 90}, {"nodeid": "tests/test_math_utils.py::test_generator_exit_direct", "type": "Function", "lineno": 94}, {"nodeid": "tests/test_math_utils.py::test_recursion_limit", "type": "Function", "lineno": 98}, {"nodeid": "tests/test_math_utils.py::test_malformed_code", "type": "Function", "lineno": 108}, {"nodeid": "tests/test_math_utils.py::test_sys_exit", "type": "Function", "lineno": 113}, {"nodeid": "tests/test_math_utils.py::test_broken_function", "type": "Function", "lineno": 121}, {"nodeid": "tests/test_math_utils.py::test_import_error_patch", "type": "Function", "lineno": 129}, {"nodeid": "tests/test_math_utils.py::test_module_not_found_error", "type": "Function", "lineno": 140}]}, {"nodeid": "tests/test_string_utils.py", "outcome": "passed", "result": [{"nodeid": "tests/test_string_utils.py::test_uppercase_normal", "type": "Function", "lineno": 7}, {"nodeid": "tests/test_string_utils.py::test_uppercase_type_error", "type": "Function", "lineno": 11}, {"nodeid": "tests/test_string_utils.py::test_reverse_string", "type": "Function", "lineno": 16}, {"nodeid": "tests/test_string_utils.py::test_warning_emit", "type": "Function", "lineno": 20}, {"nodeid": "tests/test_string_utils.py::test_unicode_encode_error", "type": "Function", "lineno": 24}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_error", "type": "Function", "lineno": 29}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_surrogateescape", "type": "Function", "lineno": 34}, {"nodeid": "tests/test_string_utils.py::test_import_warning", "type": "Function", "lineno": 39}, {"nodeid": "tests/test_string_utils.py::test_xfail_uppercase_digits", "type": "Function", "lineno": 46}, {"nodeid": "tests/test_string_utils.py::test_keyboard_interrupt_direct", "type": "Function", "lineno": 51}]}, {"nodeid": "tests", "outcome": "passed", "result": [{"nodeid": "tests/test_broken_fct.py", "type": "Module"}, {"nodeid": "tests/test_collector_error.py", "type": "Module"}, {"nodeid": "tests/test_io_utils.py", "type": "Module"}, {"nodeid": "tests/test_math_utils.py", "type": "Module"}, {"nodeid": "tests/test_string_utils.py", "type": "Module"}]}, {"nodeid": ".", "outcome": "passed", "result": [{"nodeid": "allure-results", "type": "Dir"}, {"nodeid": "ci-reports", "type": "Dir"}, {"nodeid": "functions", "type": "Package"}, {"nodeid": "tests", "type": "Package"}]}], "tests": [{"nodeid": "tests/test_io_utils.py::test_read_file", "lineno": 9, "outcome": "passed", "keywords": ["test_read_file", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.004489094950258732, "outcome": "passed"}, "call": {"duration": 0.0006844139425083995, "outcome": "passed"}, "teardown": {"duration": 0.00128162803594023, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_write_file", "lineno": 16, "outcome": "passed", "keywords": ["test_write_file", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0007592289475724101, "outcome": "passed"}, "call": {"duration": 0.00034866901114583015, "outcome": "passed"}, "teardown": {"duration": 0.0007208429742604494, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_cause_io_error", "lineno": 22, "outcome": "passed", "keywords": ["test_cause_io_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00019041995983570814, "outcome": "passed"}, "call": {"duration": 0.0003566719824448228, "outcome": "passed"}, "teardown": {"duration": 0.00022041099146008492, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_file_not_found", "lineno": 27, "outcome": "passed", "keywords": ["test_file_not_found", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018429593183100224, "outcome": "passed"}, "call": {"duration": 0.00020608596969395876, "outcome": "passed"}, "teardown": {"duration": 0.0001983050024136901, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_permission_error", "lineno": 32, "outcome": "passed", "keywords": ["test_permission_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003640140639618039, "outcome": "passed"}, "call": {"duration": 0.00022322905715554953, "outcome": "passed"}, "teardown": {"duration": 0.0006357829552143812, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_mock_open_error", "lineno": 40, "outcome": "passed", "keywords": ["test_mock_open_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003387599717825651, "outcome": "passed"}, "call": {"duration": 0.008769409032538533, "outcome": "passed"}, "teardown": {"duration": 0.0008422170067206025, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_file_handle_closed_error", "lineno": 49, "outcome": "passed", "keywords": ["test_file_handle_closed_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00021573901176452637, "outcome": "passed"}, "call": {"duration": 0.00019488506950438023, "outcome": "passed"}, "teardown": {"duration": 0.00019953702576458454, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_os_error", "lineno": 56, "outcome": "passed", "keywords": ["test_os_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00037874700501561165, "outcome": "passed"}, "call": {"duration": 0.0002275099977850914, "outcome": "passed"}, "teardown": {"duration": 0.000740951974876225, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_write_file_readonly", "lineno": 64, "outcome": "failed", "keywords": ["test_write_file_readonly", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0007795440033078194, "outcome": "passed"}, "call": {"duration": 0.0010555379558354616, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_io_utils.py", "lineno": 72, "message": "Failed: DID NOT RAISE "}, "traceback": [{"path": "tests/test_io_utils.py", "lineno": 72, "message": "Failed"}], "longrepr": "tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_write_file_readonly0')\n\n def test_write_file_readonly(tmp_path):\n # Writing to read-only file raises PermissionError\n file = tmp_path / \"readonly.txt\"\n file.write_text(\"data\")\n os.chmod(file, 0o444)\n with pytest.raises(PermissionError):\n with open(file, \"w\") as f:\n> f.write(\"new content\")\nE Failed: DID NOT RAISE \n\ntests/test_io_utils.py:72: Failed"}, "teardown": {"duration": 0.0009553310228511691, "outcome": "passed"}}, {"nodeid": "tests/test_io_utils.py::test_file_not_found_error", "lineno": 73, "outcome": "passed", "keywords": ["test_file_not_found_error", "test_io_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00022397900465875864, "outcome": "passed"}, "call": {"duration": 0.0002445880090817809, "outcome": "passed"}, "teardown": {"duration": 0.00021364097483456135, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_broken", "lineno": 13, "outcome": "failed", "keywords": ["test_broken", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00019246398005634546, "outcome": "passed"}, "call": {"duration": 0.00018435704987496138, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 16, "message": "NameError: name 'want_the_test_to_fail' is not defined"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 16, "message": "NameError"}], "longrepr": "def test_broken():\n # simulating a broken or faulty test implementation that will cause the test to error\n> want_the_test_to_fail\nE NameError: name 'want_the_test_to_fail' is not defined\n\ntests/test_math_utils.py:16: NameError"}, "teardown": {"duration": 0.00025507796090096235, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_call_missing_function", "lineno": 17, "outcome": "passed", "keywords": ["test_call_missing_function", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00019144092220813036, "outcome": "passed"}, "call": {"duration": 0.0002020229585468769, "outcome": "passed"}, "teardown": {"duration": 0.0001967179123312235, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_addition_pass", "lineno": 22, "outcome": "passed", "keywords": ["test_addition_pass", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017437501810491085, "outcome": "passed"}, "call": {"duration": 0.00016747298650443554, "outcome": "passed"}, "teardown": {"duration": 0.00019609497394412756, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_addition_fail", "lineno": 26, "outcome": "failed", "keywords": ["test_addition_fail", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001691450597718358, "outcome": "passed"}, "call": {"duration": 0.0004768100334331393, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 29, "message": "assert 4 == 5\n + where 4 = addition(2, 2)"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 29, "message": "AssertionError"}], "longrepr": "def test_addition_fail():\n # Assertion failure: expected incorrect result\n> assert addition(2, 2) == 5\nE assert 4 == 5\nE + where 4 = addition(2, 2)\n\ntests/test_math_utils.py:29: AssertionError"}, "teardown": {"duration": 0.00026376801542937756, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_division_zero", "lineno": 30, "outcome": "passed", "keywords": ["test_division_zero", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018964800983667374, "outcome": "passed"}, "call": {"duration": 0.0001984010450541973, "outcome": "passed"}, "teardown": {"duration": 0.0001975690247491002, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_multiply_xfail", "lineno": 35, "outcome": "xfailed", "keywords": ["test_multiply_xfail", "xfail", "pytestmark", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018579699099063873, "outcome": "passed"}, "call": {"duration": 0.000316492049023509, "outcome": "skipped", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 39, "message": "assert 4 == 5\n + where 4 = multiply(2, 2)"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 39, "message": "AssertionError"}], "longrepr": "@pytest.mark.xfail(reason=\"Expected failure\")\n def test_multiply_xfail():\n # Expected fail test (xfail): incorrect expected multiply result\n> assert multiply(2, 2) == 5\nE assert 4 == 5\nE + where 4 = multiply(2, 2)\n\ntests/test_math_utils.py:39: AssertionError"}, "teardown": {"duration": 0.00025751092471182346, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_runtime_error", "lineno": 40, "outcome": "failed", "keywords": ["test_runtime_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00019102497026324272, "outcome": "passed"}, "call": {"duration": 0.00019292894285172224, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 43, "message": "RuntimeError: Forced runtime error"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 43, "message": "RuntimeError"}], "longrepr": "def test_runtime_error():\n # Test raises an uncaught RuntimeError\n> raise RuntimeError(\"Forced runtime error\")\nE RuntimeError: Forced runtime error\n\ntests/test_math_utils.py:43: RuntimeError"}, "teardown": {"duration": 0.00023589807096868753, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_memory_error", "lineno": 44, "outcome": "passed", "keywords": ["test_memory_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018735602498054504, "outcome": "passed"}, "call": {"duration": 0.00019317190162837505, "outcome": "passed"}, "teardown": {"duration": 0.0001976839266717434, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_timeout_error", "lineno": 49, "outcome": "passed", "keywords": ["test_timeout_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.000191046972759068, "outcome": "passed"}, "call": {"duration": 0.0001811350230127573, "outcome": "passed"}, "teardown": {"duration": 0.00019021600019186735, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_recursion_error", "lineno": 54, "outcome": "passed", "keywords": ["test_recursion_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018191395793110132, "outcome": "passed"}, "call": {"duration": 0.0009334810310974717, "outcome": "passed"}, "teardown": {"duration": 0.00021670304704457521, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_floating_point_error", "lineno": 61, "outcome": "passed", "keywords": ["test_floating_point_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018432398792356253, "outcome": "passed"}, "call": {"duration": 0.00017605803441256285, "outcome": "passed"}, "teardown": {"duration": 0.0001879989868029952, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_floating_point_overflow", "lineno": 66, "outcome": "passed", "keywords": ["test_floating_point_overflow", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00016388704534620047, "outcome": "passed"}, "call": {"duration": 0.0001806630752980709, "outcome": "passed"}, "teardown": {"duration": 0.00019419798627495766, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_value_error", "lineno": 71, "outcome": "passed", "keywords": ["test_value_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00016722199507057667, "outcome": "passed"}, "call": {"duration": 0.00018580106552690268, "outcome": "passed"}, "teardown": {"duration": 0.00018392701167613268, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_type_error", "lineno": 76, "outcome": "passed", "keywords": ["test_type_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001760859740898013, "outcome": "passed"}, "call": {"duration": 0.00017235905397683382, "outcome": "passed"}, "teardown": {"duration": 0.00018672097939997911, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_unhandled_exception", "lineno": 81, "outcome": "failed", "keywords": ["test_unhandled_exception", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018074410036206245, "outcome": "passed"}, "call": {"duration": 0.0001893120352178812, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 84, "message": "Exception: Generic unhandled exception"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 84, "message": "Exception"}], "longrepr": "def test_unhandled_exception():\n # Raises generic unhandled Exception\n> raise Exception(\"Generic unhandled exception\")\nE Exception: Generic unhandled exception\n\ntests/test_math_utils.py:84: Exception"}, "teardown": {"duration": 0.00023920799139887094, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_custom_error", "lineno": 85, "outcome": "passed", "keywords": ["test_custom_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017966004088521004, "outcome": "passed"}, "call": {"duration": 0.00019452592823654413, "outcome": "passed"}, "teardown": {"duration": 0.00018929899670183659, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_stop_iteration_direct", "lineno": 90, "outcome": "failed", "keywords": ["test_stop_iteration_direct", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018349499441683292, "outcome": "passed"}, "call": {"duration": 0.0001746440539136529, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/site-packages/_pytest/capture.py", "lineno": 880, "message": "RuntimeError: generator raised StopIteration"}, "traceback": [{"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py", "lineno": 341, "message": ""}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py", "lineno": 242, "message": "in "}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/pluggy/_hooks.py", "lineno": 513, "message": "in __call__"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/pluggy/_manager.py", "lineno": 120, "message": "in _hookexec"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py", "lineno": 92, "message": "in pytest_runtest_call"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py", "lineno": 68, "message": "in thread_exception_runtest_hook"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py", "lineno": 95, "message": "in pytest_runtest_call"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py", "lineno": 70, "message": "in unraisable_exception_runtest_hook"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py", "lineno": 846, "message": "in pytest_runtest_call"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py", "lineno": 829, "message": "in _runtest_for"}, {"path": ".pixi/envs/default/lib/python3.8/site-packages/_pytest/capture.py", "lineno": 880, "message": "RuntimeError"}], "longrepr": "def test_stop_iteration_direct():\n # Directly raise StopIteration exception\n> raise StopIteration()\nE StopIteration\n\ntests/test_math_utils.py:93: StopIteration\n\nThe above exception was the direct cause of the following exception:\n\ncls = \nfunc = . at 0x7f6c0b9338b0>\nwhen = 'call'\nreraise = (, )\n\n @classmethod\n def from_call(\n cls,\n func: Callable[[], TResult],\n when: Literal[\"collect\", \"setup\", \"call\", \"teardown\"],\n reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None,\n ) -> CallInfo[TResult]:\n \"\"\"Call func, wrapping the result in a CallInfo.\n \n :param func:\n The function to call. Called without arguments.\n :type func: Callable[[], _pytest.runner.TResult]\n :param when:\n The phase in which the function is called.\n :param reraise:\n Exception or exceptions that shall propagate if raised by the\n function, instead of being wrapped in the CallInfo.\n \"\"\"\n excinfo = None\n start = timing.time()\n precise_start = timing.perf_counter()\n try:\n> result: TResult | None = func()\n\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py:341: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n.pixi/envs/default/lib/python3.8/site-packages/_pytest/runner.py:242: in \n lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise\n.pixi/envs/default/lib/python3.8/site-packages/pluggy/_hooks.py:513: in __call__\n return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)\n.pixi/envs/default/lib/python3.8/site-packages/pluggy/_manager.py:120: in _hookexec\n return self._inner_hookexec(hook_name, methods, kwargs, firstresult)\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py:92: in pytest_runtest_call\n yield from thread_exception_runtest_hook()\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexception.py:68: in thread_exception_runtest_hook\n yield\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py:95: in pytest_runtest_call\n yield from unraisable_exception_runtest_hook()\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisableexception.py:70: in unraisable_exception_runtest_hook\n yield\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py:846: in pytest_runtest_call\n yield from self._runtest_for(item, \"call\")\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.py:829: in _runtest_for\n yield\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = _capture_fixture=None>\nitem = \n\n @hookimpl(wrapper=True)\n def pytest_runtest_call(self, item: Item) -> Generator[None]:\n with self.item_capture(\"call\", item):\n> return (yield)\nE RuntimeError: generator raised StopIteration\n\n.pixi/envs/default/lib/python3.8/site-packages/_pytest/capture.py:880: RuntimeError"}, "teardown": {"duration": 0.00044928805436939, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_generator_exit_direct", "lineno": 94, "outcome": "failed", "keywords": ["test_generator_exit_direct", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0002709520049393177, "outcome": "passed"}, "call": {"duration": 0.00020276301074773073, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 97, "message": "GeneratorExit"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 97, "message": "GeneratorExit"}], "longrepr": "def test_generator_exit_direct():\n # Directly raise GeneratorExit exception\n> raise GeneratorExit()\nE GeneratorExit\n\ntests/test_math_utils.py:97: GeneratorExit"}, "teardown": {"duration": 0.0002941089915111661, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_recursion_limit", "lineno": 98, "outcome": "failed", "keywords": ["test_recursion_limit", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00045932596549391747, "outcome": "passed"}, "call": {"duration": 0.00021862389985471964, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 102, "message": "RecursionError: cannot set the recursion limit to 50 at the recursion depth 37: the limit is too low"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 102, "message": "RecursionError"}], "longrepr": "monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6c0b736f10>\n\n def test_recursion_limit(monkeypatch):\n # Lower recursion limit to force RecursionError on deep recursion\n original_limit = sys.getrecursionlimit()\n> sys.setrecursionlimit(50)\nE RecursionError: cannot set the recursion limit to 50 at the recursion depth 37: the limit is too low\n\ntests/test_math_utils.py:102: RecursionError"}, "teardown": {"duration": 0.0008338589686900377, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_malformed_code", "lineno": 108, "outcome": "passed", "keywords": ["test_malformed_code", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00019153498578816652, "outcome": "passed"}, "call": {"duration": 0.00021516799461096525, "outcome": "passed"}, "teardown": {"duration": 0.00021473504602909088, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_sys_exit", "lineno": 113, "outcome": "passed", "keywords": ["test_sys_exit", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003814550582319498, "outcome": "passed"}, "call": {"duration": 0.00020856503397226334, "outcome": "passed"}, "teardown": {"duration": 0.0006595569429919124, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_broken_function", "lineno": 121, "outcome": "failed", "keywords": ["test_broken_function", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00035349803511053324, "outcome": "passed"}, "call": {"duration": 0.00019166001584380865, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_math_utils.py", "lineno": 126, "message": "AttributeError: 'tests.test_math_utils' has no attribute 'test_broken_function'"}, "traceback": [{"path": "tests/test_math_utils.py", "lineno": 126, "message": "AttributeError"}], "longrepr": "monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6c0b54aca0>\n\n def test_broken_function(monkeypatch):\n # Simulate broken function raising TypeError\n def broken_func(*args, **kwargs):\n raise TypeError(\"Broken function\")\n> monkeypatch.setattr(__name__, \"test_broken_function\", broken_func)\nE AttributeError: 'tests.test_math_utils' has no attribute 'test_broken_function'\n\ntests/test_math_utils.py:126: AttributeError"}, "teardown": {"duration": 0.0006822709692642093, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_import_error_patch", "lineno": 129, "outcome": "passed", "keywords": ["test_import_error_patch", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0003420260036364198, "outcome": "passed"}, "call": {"duration": 0.00023755698930472136, "outcome": "passed"}, "teardown": {"duration": 0.0006303309928625822, "outcome": "passed"}}, {"nodeid": "tests/test_math_utils.py::test_module_not_found_error", "lineno": 140, "outcome": "passed", "keywords": ["test_module_not_found_error", "test_math_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001796300057321787, "outcome": "passed"}, "call": {"duration": 0.0004920799983665347, "outcome": "passed"}, "teardown": {"duration": 0.00020946201402693987, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_uppercase_normal", "lineno": 7, "outcome": "passed", "keywords": ["test_uppercase_normal", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001809720415621996, "outcome": "passed"}, "call": {"duration": 0.0001699109561741352, "outcome": "passed"}, "teardown": {"duration": 0.0001904919045045972, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_uppercase_type_error", "lineno": 11, "outcome": "passed", "keywords": ["test_uppercase_type_error", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001955030020326376, "outcome": "passed"}, "call": {"duration": 0.00018532900139689445, "outcome": "passed"}, "teardown": {"duration": 0.00019166292622685432, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_reverse_string", "lineno": 16, "outcome": "passed", "keywords": ["test_reverse_string", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00016802200116217136, "outcome": "passed"}, "call": {"duration": 0.00016269809566438198, "outcome": "passed"}, "teardown": {"duration": 0.0001978430664166808, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_warning_emit", "lineno": 20, "outcome": "passed", "keywords": ["test_warning_emit", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018341001123189926, "outcome": "passed"}, "call": {"duration": 0.00016795506235212088, "outcome": "passed"}, "teardown": {"duration": 0.00018405704759061337, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_unicode_encode_error", "lineno": 24, "outcome": "failed", "keywords": ["test_unicode_encode_error", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001828980166465044, "outcome": "passed"}, "call": {"duration": 0.0002025360008701682, "outcome": "failed", "crash": {"path": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 28, "message": "Failed: DID NOT RAISE "}, "traceback": [{"path": "tests/test_string_utils.py", "lineno": 28, "message": "Failed"}], "longrepr": "def test_unicode_encode_error():\n # UnicodeEncodeError due to decoding malformed surrogate byte\n with pytest.raises(UnicodeEncodeError):\n> b'\\udc80'.decode('utf-8')\nE Failed: DID NOT RAISE \n\ntests/test_string_utils.py:28: Failed"}, "teardown": {"duration": 0.00024413398932665586, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_error", "lineno": 29, "outcome": "passed", "keywords": ["test_unicode_decode_error", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017893302720040083, "outcome": "passed"}, "call": {"duration": 0.00019873399287462234, "outcome": "passed"}, "teardown": {"duration": 0.0001910560531541705, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_unicode_decode_surrogateescape", "lineno": 34, "outcome": "passed", "keywords": ["test_unicode_decode_surrogateescape", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.000180736999027431, "outcome": "passed"}, "call": {"duration": 0.00018068705685436726, "outcome": "passed"}, "teardown": {"duration": 0.00019529310520738363, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_import_warning", "lineno": 39, "outcome": "passed", "keywords": ["test_import_warning", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.0001714759273454547, "outcome": "passed"}, "call": {"duration": 0.00018791807815432549, "outcome": "passed"}, "teardown": {"duration": 0.00018813100177794695, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_xfail_uppercase_digits", "lineno": 46, "outcome": "xfailed", "keywords": ["test_xfail_uppercase_digits", "xfail", "pytestmark", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00017805001698434353, "outcome": "passed"}, "call": {"duration": 0.0007094360189512372, "outcome": "skipped", "crash": {"path": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 50, "message": "AssertionError: assert 'ABC123' == 'ABC1234'\n \n - ABC1234\n ? -\n + ABC123"}, "traceback": [{"path": "tests/test_string_utils.py", "lineno": 50, "message": "AssertionError"}], "longrepr": "@pytest.mark.xfail(reason=\"Expected failure: uppercase does not handle digits\")\n def test_xfail_uppercase_digits():\n # Expected fail test because uppercase won't change digits\n> assert uppercase(\"abc123\") == \"ABC1234\"\nE AssertionError: assert 'ABC123' == 'ABC1234'\nE \nE - ABC1234\nE ? -\nE + ABC123\n\ntests/test_string_utils.py:50: AssertionError"}, "teardown": {"duration": 0.000262564979493618, "outcome": "passed"}}, {"nodeid": "tests/test_string_utils.py::test_keyboard_interrupt_direct", "lineno": 51, "outcome": "passed", "keywords": ["test_keyboard_interrupt_direct", "test_string_utils.py", "tests", "slic", ""], "setup": {"duration": 0.00018309091683477163, "outcome": "passed"}}], "warnings": [{"message": "invalid escape sequence \\u", "category": "DeprecationWarning", "when": "collect", "filename": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 28}, {"message": "Test warning", "category": "UserWarning", "when": "runtest", "filename": "/workspace/tligui_y/slic/tests/test_string_utils.py", "lineno": 23}]} \ No newline at end of file