From cb661e096ca0cc5658ce22da17972df4ead613a4 Mon Sep 17 00:00:00 2001 From: ci-bot Date: Tue, 15 Jul 2025 08:25:58 +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, 418 insertions(+), 178 deletions(-) diff --git a/ci-reports/markdown/TEST-REPORT.md b/ci-reports/markdown/TEST-REPORT.md index 24c3404ce..8569daa22 100644 --- a/ci-reports/markdown/TEST-REPORT.md +++ b/ci-reports/markdown/TEST-REPORT.md @@ -1,5 +1,245 @@ +โš ๏ธ **Test execution interrupted** + +> The test run was manually interrupted (e.g. via Ctrl+C). + +
+๐Ÿ“‹ 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: cov-5.0.0, allure-pytest-2.13.5, metadata-3.1.1, html-4.1.1, md-report-0.6.2, json-report-1.5.0 +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 0x7f89813b69d0> +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 0x7f89810a94c0> + + 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 0x7f898115eca0> + + 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:17:57* +*Generated on 2025-07-15 08:25:58* ## ๐Ÿ“‹ Summary - **Passed**: `32` @@ -7,7 +247,7 @@ - **Xfailed**: `2` - **Total**: `44` - **Collected**: `44` -- **Total Duration**: `0.493`s +- **Total Duration**: `0.471`s ## ๐Ÿ”Ž Tests
@@ -23,7 +263,7 @@ โœ… #1 - **Status:** โœ… `passed` -- **Duration:** `0.000684` s +- **Duration:** `0.000522` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -32,7 +272,7 @@ ๐Ÿ“Œ Duration ``` -0.004489094950258732 +0.0036591109819710255 ```
@@ -51,7 +291,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0006844139425083995 +0.0005215409910306334 ``` @@ -70,7 +310,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00128162803594023 +0.0011662530014291406 ``` @@ -93,7 +333,7 @@ passed โœ… #2 - **Status:** โœ… `passed` -- **Duration:** `0.000349` s +- **Duration:** `0.000345` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -102,7 +342,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0007592289475724101 +0.0006409339839592576 ``` @@ -121,7 +361,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00034866901114583015 +0.00034460099413990974 ``` @@ -140,7 +380,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0007208429742604494 +0.0006388849578797817 ``` @@ -163,7 +403,7 @@ passed โœ… #3 - **Status:** โœ… `passed` -- **Duration:** `0.000357` s +- **Duration:** `0.000339` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -172,7 +412,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019041995983570814 +0.00018698396161198616 ``` @@ -191,7 +431,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0003566719824448228 +0.00033947895281016827 ``` @@ -210,7 +450,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00022041099146008492 +0.00020050897728651762 ``` @@ -233,7 +473,7 @@ passed โœ… #4 - **Status:** โœ… `passed` -- **Duration:** `0.000206` s +- **Duration:** `0.000203` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -242,7 +482,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018429593183100224 +0.00017157604452222586 ``` @@ -261,7 +501,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00020608596969395876 +0.00020303204655647278 ``` @@ -280,7 +520,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001983050024136901 +0.0002301499480381608 ``` @@ -303,7 +543,7 @@ passed โœ… #5 - **Status:** โœ… `passed` -- **Duration:** `0.000223` s +- **Duration:** `0.000208` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -312,7 +552,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0003640140639618039 +0.0003509749658405781 ``` @@ -331,7 +571,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00022322905715554953 +0.00020803301595151424 ``` @@ -350,7 +590,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0006357829552143812 +0.0006306020077317953 ``` @@ -373,7 +613,7 @@ passed โœ… #6 - **Status:** โœ… `passed` -- **Duration:** `0.008769` s +- **Duration:** `0.008659` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -382,7 +622,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0003387599717825651 +0.0003532100236043334 ``` @@ -401,7 +641,7 @@ passed ๐Ÿ“Œ Duration ``` -0.008769409032538533 +0.00865919201169163 ``` @@ -420,7 +660,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0008422170067206025 +0.000666565028950572 ``` @@ -443,7 +683,7 @@ passed โœ… #7 - **Status:** โœ… `passed` -- **Duration:** `0.000195` s +- **Duration:** `0.000196` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -452,7 +692,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00021573901176452637 +0.00018092698883265257 ``` @@ -471,7 +711,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019488506950438023 +0.0001955120824277401 ``` @@ -490,7 +730,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019953702576458454 +0.00019338796846568584 ``` @@ -513,7 +753,7 @@ passed โœ… #8 - **Status:** โœ… `passed` -- **Duration:** `0.000228` s +- **Duration:** `0.000207` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -522,7 +762,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00037874700501561165 +0.0003435799153521657 ``` @@ -541,7 +781,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0002275099977850914 +0.00020655000116676092 ``` @@ -560,7 +800,7 @@ passed ๐Ÿ“Œ Duration ``` -0.000740951974876225 +0.0006983630592003465 ``` @@ -583,7 +823,7 @@ passed โœ… #10 - **Status:** โœ… `passed` -- **Duration:** `0.000245` s +- **Duration:** `0.000199` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -592,7 +832,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00022397900465875864 +0.0001840329496189952 ``` @@ -611,7 +851,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0002445880090817809 +0.00019857799634337425 ``` @@ -630,7 +870,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00021364097483456135 +0.0002072639763355255 ``` @@ -658,7 +898,7 @@ passed โœ… #12 - **Status:** โœ… `passed` -- **Duration:** `0.000202` s +- **Duration:** `0.000200` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -667,7 +907,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019144092220813036 +0.00018008705228567123 ``` @@ -686,7 +926,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0002020229585468769 +0.00019993295427411795 ``` @@ -705,7 +945,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001967179123312235 +0.00019743095617741346 ``` @@ -728,7 +968,7 @@ passed โœ… #13 - **Status:** โœ… `passed` -- **Duration:** `0.000167` s +- **Duration:** `0.000157` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -737,7 +977,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00017437501810491085 +0.00017256697174161673 ``` @@ -756,7 +996,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00016747298650443554 +0.00015739398077130318 ``` @@ -775,7 +1015,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019609497394412756 +0.0002057100646197796 ``` @@ -798,7 +1038,7 @@ passed โœ… #15 - **Status:** โœ… `passed` -- **Duration:** `0.000198` s +- **Duration:** `0.000201` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -807,7 +1047,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018964800983667374 +0.0001807840308174491 ``` @@ -826,7 +1066,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001984010450541973 +0.00020075496286153793 ``` @@ -845,7 +1085,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001975690247491002 +0.00019007897935807705 ``` @@ -877,7 +1117,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018735602498054504 +0.0001860220218077302 ``` @@ -896,7 +1136,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019317190162837505 +0.00019263103604316711 ``` @@ -915,7 +1155,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001976839266717434 +0.00020372308790683746 ``` @@ -938,7 +1178,7 @@ passed โœ… #19 - **Status:** โœ… `passed` -- **Duration:** `0.000181` s +- **Duration:** `0.000175` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -947,7 +1187,7 @@ passed ๐Ÿ“Œ Duration ``` -0.000191046972759068 +0.0001791520044207573 ``` @@ -966,7 +1206,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001811350230127573 +0.00017502799164503813 ``` @@ -985,7 +1225,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019021600019186735 +0.0002139130374416709 ``` @@ -1008,7 +1248,7 @@ passed โœ… #20 - **Status:** โœ… `passed` -- **Duration:** `0.000933` s +- **Duration:** `0.000839` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1017,7 +1257,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018191395793110132 +0.00018318404909223318 ``` @@ -1036,7 +1276,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0009334810310974717 +0.0008387360721826553 ``` @@ -1055,7 +1295,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00021670304704457521 +0.00020623893942683935 ``` @@ -1078,7 +1318,7 @@ passed โœ… #21 - **Status:** โœ… `passed` -- **Duration:** `0.000176` s +- **Duration:** `0.000175` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1087,7 +1327,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018432398792356253 +0.00019409996457397938 ``` @@ -1106,7 +1346,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00017605803441256285 +0.00017468200530856848 ``` @@ -1125,7 +1365,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001879989868029952 +0.0001904249656945467 ``` @@ -1148,7 +1388,7 @@ passed โœ… #22 - **Status:** โœ… `passed` -- **Duration:** `0.000181` s +- **Duration:** `0.000176` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1157,7 +1397,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00016388704534620047 +0.00016954494640231133 ``` @@ -1176,7 +1416,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001806630752980709 +0.0001763530308380723 ``` @@ -1195,7 +1435,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019419798627495766 +0.00019564793910831213 ``` @@ -1218,7 +1458,7 @@ passed โœ… #23 - **Status:** โœ… `passed` -- **Duration:** `0.000186` s +- **Duration:** `0.000174` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1227,7 +1467,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00016722199507057667 +0.00018369406461715698 ``` @@ -1246,7 +1486,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018580106552690268 +0.00017384998500347137 ``` @@ -1265,7 +1505,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018392701167613268 +0.00018262001685798168 ``` @@ -1288,7 +1528,7 @@ passed โœ… #24 - **Status:** โœ… `passed` -- **Duration:** `0.000172` s +- **Duration:** `0.000174` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1297,7 +1537,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001760859740898013 +0.00018100393936038017 ``` @@ -1316,7 +1556,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00017235905397683382 +0.00017426698468625546 ``` @@ -1335,7 +1575,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018672097939997911 +0.00019257806707173586 ``` @@ -1358,7 +1598,7 @@ passed โœ… #26 - **Status:** โœ… `passed` -- **Duration:** `0.000195` s +- **Duration:** `0.000183` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1367,7 +1607,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00017966004088521004 +0.00018078600987792015 ``` @@ -1386,7 +1626,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019452592823654413 +0.00018280197400599718 ``` @@ -1405,7 +1645,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018929899670183659 +0.0001881549833342433 ``` @@ -1428,7 +1668,7 @@ passed โœ… #30 - **Status:** โœ… `passed` -- **Duration:** `0.000215` s +- **Duration:** `0.000219` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1437,7 +1677,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019153498578816652 +0.0001845810329541564 ``` @@ -1456,7 +1696,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00021516799461096525 +0.00021933799143880606 ``` @@ -1475,7 +1715,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00021473504602909088 +0.0001934240572154522 ``` @@ -1498,7 +1738,7 @@ passed โœ… #31 - **Status:** โœ… `passed` -- **Duration:** `0.000209` s +- **Duration:** `0.000198` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1507,7 +1747,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0003814550582319498 +0.00034793990198522806 ``` @@ -1526,7 +1766,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00020856503397226334 +0.00019802397582679987 ``` @@ -1545,7 +1785,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0006595569429919124 +0.0006310410099104047 ``` @@ -1568,7 +1808,7 @@ passed โœ… #33 - **Status:** โœ… `passed` -- **Duration:** `0.000238` s +- **Duration:** `0.000229` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1577,7 +1817,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0003420260036364198 +0.0003470799420028925 ``` @@ -1596,7 +1836,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00023755698930472136 +0.00022921699564903975 ``` @@ -1615,7 +1855,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0006303309928625822 +0.0006256999913603067 ``` @@ -1638,7 +1878,7 @@ passed โœ… #34 - **Status:** โœ… `passed` -- **Duration:** `0.000492` s +- **Duration:** `0.000451` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1647,7 +1887,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001796300057321787 +0.00018279394134879112 ``` @@ -1666,7 +1906,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0004920799983665347 +0.0004510889993980527 ``` @@ -1685,7 +1925,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00020946201402693987 +0.00019947695545852184 ``` @@ -1713,7 +1953,7 @@ passed โœ… #35 - **Status:** โœ… `passed` -- **Duration:** `0.000170` s +- **Duration:** `0.000176` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1722,7 +1962,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001809720415621996 +0.00018949003424495459 ``` @@ -1741,7 +1981,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001699109561741352 +0.00017643999308347702 ``` @@ -1760,7 +2000,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001904919045045972 +0.00019116594921797514 ``` @@ -1783,7 +2023,7 @@ passed โœ… #36 - **Status:** โœ… `passed` -- **Duration:** `0.000185` s +- **Duration:** `0.000181` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1792,7 +2032,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001955030020326376 +0.00018592795822769403 ``` @@ -1811,7 +2051,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018532900139689445 +0.00018133607227355242 ``` @@ -1830,7 +2070,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019166292622685432 +0.0001904600067064166 ``` @@ -1853,7 +2093,7 @@ passed โœ… #37 - **Status:** โœ… `passed` -- **Duration:** `0.000163` s +- **Duration:** `0.000170` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1862,7 +2102,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00016802200116217136 +0.0001778540899977088 ``` @@ -1881,7 +2121,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00016269809566438198 +0.00017014704644680023 ``` @@ -1900,7 +2140,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001978430664166808 +0.00019012903794646263 ``` @@ -1923,7 +2163,7 @@ passed โœ… #38 - **Status:** โœ… `passed` -- **Duration:** `0.000168` s +- **Duration:** `0.000162` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -1932,7 +2172,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018341001123189926 +0.00018130801618099213 ``` @@ -1951,7 +2191,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00016795506235212088 +0.00016195501666516066 ``` @@ -1970,7 +2210,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018405704759061337 +0.00018399395048618317 ``` @@ -1993,7 +2233,7 @@ passed โœ… #40 - **Status:** โœ… `passed` -- **Duration:** `0.000199` s +- **Duration:** `0.000183` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2002,7 +2242,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00017893302720040083 +0.0001824160572141409 ``` @@ -2021,7 +2261,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019873399287462234 +0.00018280697986483574 ``` @@ -2040,7 +2280,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001910560531541705 +0.00020179594866931438 ``` @@ -2063,7 +2303,7 @@ passed โœ… #41 - **Status:** โœ… `passed` -- **Duration:** `0.000181` s +- **Duration:** `0.000188` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2072,7 +2312,7 @@ passed ๐Ÿ“Œ Duration ``` -0.000180736999027431 +0.00017966493032872677 ``` @@ -2091,7 +2331,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018068705685436726 +0.00018832995556294918 ``` @@ -2110,7 +2350,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019529310520738363 +0.00019340403378009796 ``` @@ -2133,7 +2373,7 @@ passed โœ… #42 - **Status:** โœ… `passed` -- **Duration:** `0.000188` s +- **Duration:** `0.000176` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2142,7 +2382,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001714759273454547 +0.00017560203559696674 ``` @@ -2161,7 +2401,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018791807815432549 +0.00017584103625267744 ``` @@ -2180,7 +2420,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018813100177794695 +0.00019798800349235535 ``` @@ -2212,7 +2452,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018309091683477163 +0.00018894695676863194 ``` @@ -2245,7 +2485,7 @@ passed โŒ #9 - **Status:** โŒ `failed` -- **Duration:** `0.001056` s +- **Duration:** `0.000986` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2254,7 +2494,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0007795440033078194 +0.0006425869651138783 ``` @@ -2273,7 +2513,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0010555379558354616 +0.000985741033218801 ``` @@ -2332,7 +2572,7 @@ tests/test_io_utils.py:72: Failed ๐Ÿ“Œ Duration ``` -0.0009553310228511691 +0.0006829780759289861 ``` @@ -2360,7 +2600,7 @@ passed โŒ #11 - **Status:** โŒ `failed` -- **Duration:** `0.000184` s +- **Duration:** `0.000177` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2369,7 +2609,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019246398005634546 +0.00020324706565588713 ``` @@ -2388,7 +2628,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018435704987496138 +0.00017711101099848747 ``` @@ -2440,7 +2680,7 @@ tests/test_math_utils.py:16: NameError ๐Ÿ“Œ Duration ``` -0.00025507796090096235 +0.00024819199461489916 ``` @@ -2463,7 +2703,7 @@ passed โŒ #14 - **Status:** โŒ `failed` -- **Duration:** `0.000477` s +- **Duration:** `0.000435` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2472,7 +2712,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001691450597718358 +0.00017123401630669832 ``` @@ -2491,7 +2731,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0004768100334331393 +0.00043531996197998524 ``` @@ -2545,7 +2785,7 @@ tests/test_math_utils.py:29: AssertionError ๐Ÿ“Œ Duration ``` -0.00026376801542937756 +0.00023484497796744108 ``` @@ -2568,7 +2808,7 @@ passed โŒ #17 - **Status:** โŒ `failed` -- **Duration:** `0.000193` s +- **Duration:** `0.000173` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2577,7 +2817,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019102497026324272 +0.0001836859155446291 ``` @@ -2596,7 +2836,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019292894285172224 +0.00017295905854552984 ``` @@ -2648,7 +2888,7 @@ tests/test_math_utils.py:43: RuntimeError ๐Ÿ“Œ Duration ``` -0.00023589807096868753 +0.00024357903748750687 ``` @@ -2671,7 +2911,7 @@ passed โŒ #25 - **Status:** โŒ `failed` -- **Duration:** `0.000189` s +- **Duration:** `0.000177` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2680,7 +2920,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018074410036206245 +0.00017955503426492214 ``` @@ -2699,7 +2939,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001893120352178812 +0.00017679401207715273 ``` @@ -2751,7 +2991,7 @@ tests/test_math_utils.py:84: Exception ๐Ÿ“Œ Duration ``` -0.00023920799139887094 +0.00024748698342591524 ``` @@ -2774,7 +3014,7 @@ passed โŒ #27 - **Status:** โŒ `failed` -- **Duration:** `0.000175` s +- **Duration:** `0.000174` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2783,7 +3023,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018349499441683292 +0.0001802520127967 ``` @@ -2802,7 +3042,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001746440539136529 +0.00017436407506465912 ``` @@ -2878,7 +3118,7 @@ tests/test_math_utils.py:93: StopIteration The above exception was the direct cause of the following exception: cls = -func = . at 0x7f6c0b9338b0> +func = . at 0x7f89813b69d0> when = 'call' reraise = (, ) @@ -2948,7 +3188,7 @@ E RuntimeError: generator raised StopIteration ๐Ÿ“Œ Duration ``` -0.00044928805436939 +0.0003520810278132558 ``` @@ -2971,7 +3211,7 @@ passed โŒ #28 - **Status:** โŒ `failed` -- **Duration:** `0.000203` s +- **Duration:** `0.000204` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -2980,7 +3220,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0002709520049393177 +0.00023328594397753477 ``` @@ -2999,7 +3239,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00020276301074773073 +0.00020388304255902767 ``` @@ -3051,7 +3291,7 @@ tests/test_math_utils.py:97: GeneratorExit ๐Ÿ“Œ Duration ``` -0.0002941089915111661 +0.0002671870170161128 ``` @@ -3074,7 +3314,7 @@ passed โŒ #29 - **Status:** โŒ `failed` -- **Duration:** `0.000219` s +- **Duration:** `0.000209` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -3083,7 +3323,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00045932596549391747 +0.0004030209966003895 ``` @@ -3102,7 +3342,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00021862389985471964 +0.00020866305567324162 ``` @@ -3138,7 +3378,7 @@ message: RecursionError ๐Ÿ“Œ Longrepr ``` -monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6c0b736f10> +monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f89810a94c0> def test_recursion_limit(monkeypatch): # Lower recursion limit to force RecursionError on deep recursion @@ -3157,7 +3397,7 @@ tests/test_math_utils.py:102: RecursionError ๐Ÿ“Œ Duration ``` -0.0008338589686900377 +0.0007142230169847608 ``` @@ -3180,7 +3420,7 @@ passed โŒ #32 - **Status:** โŒ `failed` -- **Duration:** `0.000192` s +- **Duration:** `0.000187` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -3189,7 +3429,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00035349803511053324 +0.0003372350474819541 ``` @@ -3208,7 +3448,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00019166001584380865 +0.00018749304581433535 ``` @@ -3244,7 +3484,7 @@ message: AttributeError ๐Ÿ“Œ Longrepr ``` -monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6c0b54aca0> +monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f898115eca0> def test_broken_function(monkeypatch): # Simulate broken function raising TypeError @@ -3264,7 +3504,7 @@ tests/test_math_utils.py:126: AttributeError ๐Ÿ“Œ Duration ``` -0.0006822709692642093 +0.0006643679225817323 ``` @@ -3292,7 +3532,7 @@ passed โŒ #39 - **Status:** โŒ `failed` -- **Duration:** `0.000203` s +- **Duration:** `0.000207` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -3301,7 +3541,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0001828980166465044 +0.00018164003267884254 ``` @@ -3320,7 +3560,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0002025360008701682 +0.00020650203805416822 ``` @@ -3373,7 +3613,7 @@ tests/test_string_utils.py:28: Failed ๐Ÿ“Œ Duration ``` -0.00024413398932665586 +0.00023467396385967731 ``` @@ -3406,7 +3646,7 @@ passed โŒ #16 - **Status:** โŒ `xfailed` -- **Duration:** `0.000316` s +- **Duration:** `0.000284` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -3415,7 +3655,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00018579699099063873 +0.00019726308528333902 ``` @@ -3434,7 +3674,7 @@ passed ๐Ÿ“Œ Duration ``` -0.000316492049023509 +0.00028389296494424343 ``` @@ -3489,7 +3729,7 @@ tests/test_math_utils.py:39: AssertionError ๐Ÿ“Œ Duration ``` -0.00025751092471182346 +0.0002543970476835966 ``` @@ -3517,7 +3757,7 @@ passed โŒ #43 - **Status:** โŒ `xfailed` -- **Duration:** `0.000709` s +- **Duration:** `0.000606` s - **Severity:** `normal` ### ๐Ÿ”ง Setup Phase @@ -3526,7 +3766,7 @@ passed ๐Ÿ“Œ Duration ``` -0.00017805001698434353 +0.00017529306933283806 ``` @@ -3545,7 +3785,7 @@ passed ๐Ÿ“Œ Duration ``` -0.0007094360189512372 +0.0006064599147066474 ``` @@ -3606,7 +3846,7 @@ tests/test_string_utils.py:50: AssertionError ๐Ÿ“Œ Duration ``` -0.000262564979493618 +0.00028272904455661774 ``` diff --git a/ci-reports/markdown/pytest-report.json b/ci-reports/markdown/pytest-report.json index f228815e1..81da9e7b1 100644 --- a/ci-reports/markdown/pytest-report.json +++ b/ci-reports/markdown/pytest-report.json @@ -1 +1 @@ -{"created": 1752567767.94921, "duration": 0.5046579837799072, "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.004050245974212885, "outcome": "passed"}, "call": {"duration": 0.0005863331025466323, "outcome": "passed"}, "teardown": {"duration": 0.001239334000274539, "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.0006860869470983744, "outcome": "passed"}, "call": {"duration": 0.0003353259526193142, "outcome": "passed"}, "teardown": {"duration": 0.0006795349763706326, "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.00018472608644515276, "outcome": "passed"}, "call": {"duration": 0.0003370919730514288, "outcome": "passed"}, "teardown": {"duration": 0.00020422297529876232, "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.00020163401495665312, "outcome": "passed"}, "call": {"duration": 0.00019882607739418745, "outcome": "passed"}, "teardown": {"duration": 0.0001993540208786726, "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.00033765402622520924, "outcome": "passed"}, "call": {"duration": 0.00020738807506859303, "outcome": "passed"}, "teardown": {"duration": 0.0006167629035189748, "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.00036778091453015804, "outcome": "passed"}, "call": {"duration": 0.009337818017229438, "outcome": "passed"}, "teardown": {"duration": 0.0006889340002089739, "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.0001813649432733655, "outcome": "passed"}, "call": {"duration": 0.00018623401410877705, "outcome": "passed"}, "teardown": {"duration": 0.00020688003860414028, "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.00032359606120735407, "outcome": "passed"}, "call": {"duration": 0.0002041100524365902, "outcome": "passed"}, "teardown": {"duration": 0.0010288049234077334, "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.0006535090506076813, "outcome": "passed"}, "call": {"duration": 0.0009140640031546354, "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.0006678180070593953, "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.00018619804177433252, "outcome": "passed"}, "call": {"duration": 0.00019512989092618227, "outcome": "passed"}, "teardown": {"duration": 0.0002100620185956359, "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.00019794492982327938, "outcome": "passed"}, "call": {"duration": 0.0001733029494062066, "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.0002334710443392396, "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.00018779095262289047, "outcome": "passed"}, "call": {"duration": 0.00019483000505715609, "outcome": "passed"}, "teardown": {"duration": 0.00019469601102173328, "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.00018361606635153294, "outcome": "passed"}, "call": {"duration": 0.0001585009740665555, "outcome": "passed"}, "teardown": {"duration": 0.00019936496391892433, "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.00018480501603335142, "outcome": "passed"}, "call": {"duration": 0.00042686506640166044, "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.00023695698473602533, "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.00018274993635714054, "outcome": "passed"}, "call": {"duration": 0.0001960410736501217, "outcome": "passed"}, "teardown": {"duration": 0.00019391498062759638, "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.0002012229524552822, "outcome": "passed"}, "call": {"duration": 0.00027411896735429764, "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.00026896700728684664, "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.00018127192743122578, "outcome": "passed"}, "call": {"duration": 0.00017302704509347677, "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.00023223005700856447, "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.00017900799866765738, "outcome": "passed"}, "call": {"duration": 0.00018186098895967007, "outcome": "passed"}, "teardown": {"duration": 0.0002009778982028365, "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.00017831102013587952, "outcome": "passed"}, "call": {"duration": 0.00017422402743250132, "outcome": "passed"}, "teardown": {"duration": 0.00018840900156646967, "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.0001825379440560937, "outcome": "passed"}, "call": {"duration": 0.0009259879589080811, "outcome": "passed"}, "teardown": {"duration": 0.00020224601030349731, "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.00019253394566476345, "outcome": "passed"}, "call": {"duration": 0.00018449698109179735, "outcome": "passed"}, "teardown": {"duration": 0.00019080599304288626, "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.00016800302546471357, "outcome": "passed"}, "call": {"duration": 0.00017430901061743498, "outcome": "passed"}, "teardown": {"duration": 0.00019425200298428535, "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.0001707460032775998, "outcome": "passed"}, "call": {"duration": 0.00017038302030414343, "outcome": "passed"}, "teardown": {"duration": 0.00019728695042431355, "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.00019449100363999605, "outcome": "passed"}, "call": {"duration": 0.00016657705418765545, "outcome": "passed"}, "teardown": {"duration": 0.0001865039812400937, "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.00017936201766133308, "outcome": "passed"}, "call": {"duration": 0.00017332599963992834, "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.00023521005641669035, "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.00018734799232333899, "outcome": "passed"}, "call": {"duration": 0.0001764559419825673, "outcome": "passed"}, "teardown": {"duration": 0.00019181205425411463, "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.0001782759791240096, "outcome": "passed"}, "call": {"duration": 0.0001779790036380291, "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 0x7f63211728b0>\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.00043638492934405804, "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.0002896270016208291, "outcome": "passed"}, "call": {"duration": 0.00019964599050581455, "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.0002966850297525525, "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.00046585092786699533, "outcome": "passed"}, "call": {"duration": 0.00021241093054413795, "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 0x7f631ea6d3d0>\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.000784517964348197, "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.000190816936083138, "outcome": "passed"}, "call": {"duration": 0.00020315509755164385, "outcome": "passed"}, "teardown": {"duration": 0.00019848498050123453, "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.00040825409814715385, "outcome": "passed"}, "call": {"duration": 0.00020085100550204515, "outcome": "passed"}, "teardown": {"duration": 0.0006517819128930569, "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.0003449829528108239, "outcome": "passed"}, "call": {"duration": 0.00019927299581468105, "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 0x7f631ea8c760>\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.0006769329775124788, "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.00034425698686391115, "outcome": "passed"}, "call": {"duration": 0.00023339898325502872, "outcome": "passed"}, "teardown": {"duration": 0.000656364019960165, "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.00018129299860447645, "outcome": "passed"}, "call": {"duration": 0.00048709800466895103, "outcome": "passed"}, "teardown": {"duration": 0.00020855909679085016, "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.0001881259959191084, "outcome": "passed"}, "call": {"duration": 0.00017286604270339012, "outcome": "passed"}, "teardown": {"duration": 0.0001997209619730711, "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.0001763880718499422, "outcome": "passed"}, "call": {"duration": 0.00017908797599375248, "outcome": "passed"}, "teardown": {"duration": 0.0001937110209837556, "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.00017823092639446259, "outcome": "passed"}, "call": {"duration": 0.00016707507893443108, "outcome": "passed"}, "teardown": {"duration": 0.00018671900033950806, "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.00019186397548764944, "outcome": "passed"}, "call": {"duration": 0.00017079897224903107, "outcome": "passed"}, "teardown": {"duration": 0.00019067490939050913, "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.00016844191122800112, "outcome": "passed"}, "call": {"duration": 0.00019274698570370674, "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.00024664902593940496, "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.00018395809456706047, "outcome": "passed"}, "call": {"duration": 0.00018353096675127745, "outcome": "passed"}, "teardown": {"duration": 0.00019222998525947332, "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.00019712094217538834, "outcome": "passed"}, "call": {"duration": 0.00017824501264840364, "outcome": "passed"}, "teardown": {"duration": 0.0001986239803954959, "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.00016950198914855719, "outcome": "passed"}, "call": {"duration": 0.00017737201415002346, "outcome": "passed"}, "teardown": {"duration": 0.00019492499995976686, "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.0001935010077431798, "outcome": "passed"}, "call": {"duration": 0.0006725160637870431, "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.0002576869446784258, "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.00019054196309298277, "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": 1752567956.624104, "duration": 0.4713561534881592, "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.0036591109819710255, "outcome": "passed"}, "call": {"duration": 0.0005215409910306334, "outcome": "passed"}, "teardown": {"duration": 0.0011662530014291406, "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.0006409339839592576, "outcome": "passed"}, "call": {"duration": 0.00034460099413990974, "outcome": "passed"}, "teardown": {"duration": 0.0006388849578797817, "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.00018698396161198616, "outcome": "passed"}, "call": {"duration": 0.00033947895281016827, "outcome": "passed"}, "teardown": {"duration": 0.00020050897728651762, "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.00017157604452222586, "outcome": "passed"}, "call": {"duration": 0.00020303204655647278, "outcome": "passed"}, "teardown": {"duration": 0.0002301499480381608, "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.0003509749658405781, "outcome": "passed"}, "call": {"duration": 0.00020803301595151424, "outcome": "passed"}, "teardown": {"duration": 0.0006306020077317953, "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.0003532100236043334, "outcome": "passed"}, "call": {"duration": 0.00865919201169163, "outcome": "passed"}, "teardown": {"duration": 0.000666565028950572, "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.00018092698883265257, "outcome": "passed"}, "call": {"duration": 0.0001955120824277401, "outcome": "passed"}, "teardown": {"duration": 0.00019338796846568584, "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.0003435799153521657, "outcome": "passed"}, "call": {"duration": 0.00020655000116676092, "outcome": "passed"}, "teardown": {"duration": 0.0006983630592003465, "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.0006425869651138783, "outcome": "passed"}, "call": {"duration": 0.000985741033218801, "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.0006829780759289861, "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.0001840329496189952, "outcome": "passed"}, "call": {"duration": 0.00019857799634337425, "outcome": "passed"}, "teardown": {"duration": 0.0002072639763355255, "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.00020324706565588713, "outcome": "passed"}, "call": {"duration": 0.00017711101099848747, "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.00024819199461489916, "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.00018008705228567123, "outcome": "passed"}, "call": {"duration": 0.00019993295427411795, "outcome": "passed"}, "teardown": {"duration": 0.00019743095617741346, "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.00017256697174161673, "outcome": "passed"}, "call": {"duration": 0.00015739398077130318, "outcome": "passed"}, "teardown": {"duration": 0.0002057100646197796, "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.00017123401630669832, "outcome": "passed"}, "call": {"duration": 0.00043531996197998524, "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.00023484497796744108, "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.0001807840308174491, "outcome": "passed"}, "call": {"duration": 0.00020075496286153793, "outcome": "passed"}, "teardown": {"duration": 0.00019007897935807705, "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.00019726308528333902, "outcome": "passed"}, "call": {"duration": 0.00028389296494424343, "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.0002543970476835966, "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.0001836859155446291, "outcome": "passed"}, "call": {"duration": 0.00017295905854552984, "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.00024357903748750687, "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.0001860220218077302, "outcome": "passed"}, "call": {"duration": 0.00019263103604316711, "outcome": "passed"}, "teardown": {"duration": 0.00020372308790683746, "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.0001791520044207573, "outcome": "passed"}, "call": {"duration": 0.00017502799164503813, "outcome": "passed"}, "teardown": {"duration": 0.0002139130374416709, "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.00018318404909223318, "outcome": "passed"}, "call": {"duration": 0.0008387360721826553, "outcome": "passed"}, "teardown": {"duration": 0.00020623893942683935, "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.00019409996457397938, "outcome": "passed"}, "call": {"duration": 0.00017468200530856848, "outcome": "passed"}, "teardown": {"duration": 0.0001904249656945467, "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.00016954494640231133, "outcome": "passed"}, "call": {"duration": 0.0001763530308380723, "outcome": "passed"}, "teardown": {"duration": 0.00019564793910831213, "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.00018369406461715698, "outcome": "passed"}, "call": {"duration": 0.00017384998500347137, "outcome": "passed"}, "teardown": {"duration": 0.00018262001685798168, "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.00018100393936038017, "outcome": "passed"}, "call": {"duration": 0.00017426698468625546, "outcome": "passed"}, "teardown": {"duration": 0.00019257806707173586, "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.00017955503426492214, "outcome": "passed"}, "call": {"duration": 0.00017679401207715273, "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.00024748698342591524, "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.00018078600987792015, "outcome": "passed"}, "call": {"duration": 0.00018280197400599718, "outcome": "passed"}, "teardown": {"duration": 0.0001881549833342433, "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.0001802520127967, "outcome": "passed"}, "call": {"duration": 0.00017436407506465912, "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 0x7f89813b69d0>\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.0003520810278132558, "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.00023328594397753477, "outcome": "passed"}, "call": {"duration": 0.00020388304255902767, "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.0002671870170161128, "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.0004030209966003895, "outcome": "passed"}, "call": {"duration": 0.00020866305567324162, "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 0x7f89810a94c0>\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.0007142230169847608, "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.0001845810329541564, "outcome": "passed"}, "call": {"duration": 0.00021933799143880606, "outcome": "passed"}, "teardown": {"duration": 0.0001934240572154522, "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.00034793990198522806, "outcome": "passed"}, "call": {"duration": 0.00019802397582679987, "outcome": "passed"}, "teardown": {"duration": 0.0006310410099104047, "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.0003372350474819541, "outcome": "passed"}, "call": {"duration": 0.00018749304581433535, "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 0x7f898115eca0>\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.0006643679225817323, "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.0003470799420028925, "outcome": "passed"}, "call": {"duration": 0.00022921699564903975, "outcome": "passed"}, "teardown": {"duration": 0.0006256999913603067, "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.00018279394134879112, "outcome": "passed"}, "call": {"duration": 0.0004510889993980527, "outcome": "passed"}, "teardown": {"duration": 0.00019947695545852184, "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.00018949003424495459, "outcome": "passed"}, "call": {"duration": 0.00017643999308347702, "outcome": "passed"}, "teardown": {"duration": 0.00019116594921797514, "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.00018592795822769403, "outcome": "passed"}, "call": {"duration": 0.00018133607227355242, "outcome": "passed"}, "teardown": {"duration": 0.0001904600067064166, "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.0001778540899977088, "outcome": "passed"}, "call": {"duration": 0.00017014704644680023, "outcome": "passed"}, "teardown": {"duration": 0.00019012903794646263, "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.00018130801618099213, "outcome": "passed"}, "call": {"duration": 0.00016195501666516066, "outcome": "passed"}, "teardown": {"duration": 0.00018399395048618317, "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.00018164003267884254, "outcome": "passed"}, "call": {"duration": 0.00020650203805416822, "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.00023467396385967731, "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.0001824160572141409, "outcome": "passed"}, "call": {"duration": 0.00018280697986483574, "outcome": "passed"}, "teardown": {"duration": 0.00020179594866931438, "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.00017966493032872677, "outcome": "passed"}, "call": {"duration": 0.00018832995556294918, "outcome": "passed"}, "teardown": {"duration": 0.00019340403378009796, "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.00017560203559696674, "outcome": "passed"}, "call": {"duration": 0.00017584103625267744, "outcome": "passed"}, "teardown": {"duration": 0.00019798800349235535, "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.00017529306933283806, "outcome": "passed"}, "call": {"duration": 0.0006064599147066474, "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.00028272904455661774, "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.00018894695676863194, "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