diff --git a/ci-reports/markdown/json-tree-view.log b/ci-reports/markdown/json-tree-view.log deleted file mode 100644 index e9ba3b0b..00000000 --- a/ci-reports/markdown/json-tree-view.log +++ /dev/null @@ -1,2289 +0,0 @@ -📁 ci-reports/markdown/pytest-report.json -├── created: 1752664890.8084347 -├── duration: 0.8015637397766113 -├── exitcode: 2 -├── root: "/workspace/tligui_y/slic" -├── environment -├── summary -│ ├── passed: 16 -│ ├── failed: 31 -│ ├── xfailed: 2 -│ ├── total: 49 -│ └── collected: 49 -├── collectors -│ ├── list -│ │ ├── nodeid: "" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ └── list -│ │ ├── nodeid: "." -│ │ └── type: "Dir" -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/data" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/export" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/history" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/plugin/behaviors" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/plugin/packages" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/plugin/screen-diff" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/plugin" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/allure/plugin/behaviors" -│ │ │ └── type: "Dir" -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/allure/plugin/packages" -│ │ │ └── type: "Dir" -│ │ └── list -│ │ ├── nodeid: "ci-reports/allure/plugin/screen-diff" -│ │ └── type: "Dir" -│ ├── list -│ │ ├── nodeid: "ci-reports/allure/widgets" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/allure" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/allure/data" -│ │ │ └── type: "Dir" -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/allure/export" -│ │ │ └── type: "Dir" -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/allure/history" -│ │ │ └── type: "Dir" -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/allure/plugin" -│ │ │ └── type: "Dir" -│ │ └── list -│ │ ├── nodeid: "ci-reports/allure/widgets" -│ │ └── type: "Dir" -│ ├── list -│ │ ├── nodeid: "ci-reports/coverage" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports/markdown" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/allure" -│ │ │ └── type: "Dir" -│ │ ├── list -│ │ │ ├── nodeid: "ci-reports/coverage" -│ │ │ └── type: "Dir" -│ │ └── list -│ │ ├── nodeid: "ci-reports/markdown" -│ │ └── type: "Dir" -│ ├── list -│ │ ├── nodeid: "functions" -│ │ ├── outcome: "passed" -│ │ └── result -│ ├── list -│ │ ├── nodeid: "tests/test_broken_fct.py" -│ │ ├── outcome: "failed" -│ │ ├── result -│ │ └── longrepr: -│ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/python.py:49 -│ │ 3: in importtestmodule -│ │ mod = import_path( -│ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/pathlib.py:58 -│ │ 7: in import_path -│ │ importlib.import_module(module_name) -│ │ .pixi/envs/default/lib/python3.8/importlib/__init__.py:127: in -│ │ import_module -│ │ return _bootstrap._gcd_import(name, package, level) -│ │ :1014: in _gcd_import -│ │ ??? -│ │ :991: in _find_and_load -│ │ ??? -│ │ :975: in _find_and_load_unlocked -│ │ ??? -│ │ :671: in _load_unlocked -│ │ ??? -│ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/assertion/rew -│ │ rite.py:175: in exec_module -│ │ source_stat, co = _rewrite_test(fn, self.config) -│ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/assertion/rew -│ │ rite.py:355: in _rewrite_test -│ │ tree = ast.parse(source, filename=strfn) -│ │ .pixi/envs/default/lib/python3.8/ast.py:47: in parse -│ │ return compile(source, filename, mode, flags, -│ │ E File "/workspace/tligui_y/slic/tests/test_broken_fct.py", line -│ │ 8 -│ │ E def test_valid_2(): -│ │ E ^ -│ │ E SyntaxError: invalid syntax" -│ ├── list -│ │ ├── nodeid: "tests/test_collector_error.py" -│ │ ├── outcome: "failed" -│ │ ├── result -│ │ └── longrepr: "ImportError while importing test module -│ │ '/workspace/tligui_y/slic/tests/test_collector_error.py'. -│ │ Hint: make sure your test modules/packages have valid Python names. -│ │ Traceback: -│ │ .pixi/envs/default/lib/python3.8/importlib/__init__.py:127: in -│ │ import_module -│ │ return _bootstrap._gcd_import(name, package, level) -│ │ tests/test_collector_error.py:1: in -│ │ from no_existing_module.math_utils import * -│ │ E ModuleNotFoundError: No module named 'no_existing_module'" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_read_file" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 9 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_write_file" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 16 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_cause_io_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 22 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_file_not_found" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 26 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_permission_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 30 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_mock_open_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 37 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_io_utils.py::test_file_handle_closed_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 45 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_os_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 51 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py::test_write_file_readonly" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 58 -│ │ └── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_file_not_found_error" -│ │ ├── type: "Function" -│ │ └── lineno: 66 -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_broken" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 13 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_call_missing_function" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 17 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_addition_pass[2-2-4]" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 22 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_addition_pass[1-5-6]" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 22 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_addition_pass[3-4-7]" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 22 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_addition_pass[3-5-8]" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 22 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_addition_pass[3-6-9]" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 22 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass_id" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 36 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass_id" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 36 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass_id" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 36 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_addition_fail" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 48 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_division_zero" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 52 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_multiply_xfail" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 56 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_runtime_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 61 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_memory_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 65 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_timeout_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 69 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_recursion_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 73 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_floating_point_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 79 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_floating_point_overflow" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 83 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_value_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 87 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_wrong_argument_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 91 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_unhandled_exception" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 95 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_custom_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 99 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_stop_iteration_direct" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 103 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_math_utils.py::test_generator_exit_direct" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 107 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_malformed_code" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 111 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_sys_exit" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 115 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_broken_function" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 119 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py::test_import_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 125 -│ │ └── list -│ │ ├── nodeid: -│ │ │ "tests/test_math_utils.py::test_module_not_found_error" -│ │ ├── type: "Function" -│ │ └── lineno: 128 -│ ├── list -│ │ ├── nodeid: "tests/test_string_utils.py" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_string_utils.py::test_uppercase_normal" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 7 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_string_utils.py::test_uppercase_type_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 11 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_string_utils.py::test_reverse_string" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 15 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_string_utils.py::test_warning_emit" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 19 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_string_utils.py::test_unicode_decode_error" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 23 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_string_utils.py::test_unicode_decode_surrogatees -│ │ │ │ cape" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 27 -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_string_utils.py::test_import_warning" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 31 -│ │ ├── list -│ │ │ ├── nodeid: -│ │ │ │ "tests/test_string_utils.py::test_xfail_uppercase_digits" -│ │ │ ├── type: "Function" -│ │ │ └── lineno: 35 -│ │ └── list -│ │ ├── nodeid: -│ │ │ "tests/test_string_utils.py::test_keyboard_interrupt_direct" -│ │ ├── type: "Function" -│ │ └── lineno: 40 -│ ├── list -│ │ ├── nodeid: "tests" -│ │ ├── outcome: "passed" -│ │ └── result -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_broken_fct.py" -│ │ │ └── type: "Module" -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_collector_error.py" -│ │ │ └── type: "Module" -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_io_utils.py" -│ │ │ └── type: "Module" -│ │ ├── list -│ │ │ ├── nodeid: "tests/test_math_utils.py" -│ │ │ └── type: "Module" -│ │ └── list -│ │ ├── nodeid: "tests/test_string_utils.py" -│ │ └── type: "Module" -│ └── list -│ ├── nodeid: "." -│ ├── outcome: "passed" -│ └── result -│ ├── list -│ │ ├── nodeid: "ci-reports" -│ │ └── type: "Dir" -│ ├── list -│ │ ├── nodeid: "functions" -│ │ └── type: "Package" -│ └── list -│ ├── nodeid: "tests" -│ └── type: "Dir" -├── tests -│ ├── list -│ │ ├── 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.003507163026370108 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0004719099961221218 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.0002860369859263301 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── 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.0004897859180346131 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0002815549960359931 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.000147557002492249 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_cause_io_error" -│ │ ├── lineno: 22 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_cause_io_error" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012592598795890808 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00016493105795234442 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/functions/io_utils.py" -│ │ │ │ ├── lineno: 10 -│ │ │ │ └── message: "OSError: Forced IO Error for testing" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ │ ├── lineno: 25 -│ │ │ │ │ └── message: "" -│ │ │ │ └── list -│ │ │ │ ├── path: "functions/io_utils.py" -│ │ │ │ ├── lineno: 10 -│ │ │ │ └── message: "OSError" -│ │ │ └── longrepr: "def test_cause_io_error(): -│ │ │ # Raises manual IOError to simulate IO failure -│ │ │ > cause_io_error() -│ │ │ -│ │ │ tests/test_io_utils.py:25: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ def cause_io_error(): -│ │ │ > raise IOError("Forced IO Error for testing") -│ │ │ E OSError: Forced IO Error for testing -│ │ │ -│ │ │ functions/io_utils.py:10: OSError" -│ │ └── teardown -│ │ ├── duration: 0.00015972403343766928 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_file_not_found" -│ │ ├── lineno: 26 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_file_not_found" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0001354810083284974 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00020168698392808437 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/functions/io_utils.py" -│ │ │ │ ├── lineno: 2 -│ │ │ │ └── message: "FileNotFoundError: [Errno 2] No such file or -│ │ │ │ directory: 'nonexistent.file'" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ │ ├── lineno: 29 -│ │ │ │ │ └── message: "" -│ │ │ │ └── list -│ │ │ │ ├── path: "functions/io_utils.py" -│ │ │ │ ├── lineno: 2 -│ │ │ │ └── message: "FileNotFoundError" -│ │ │ └── longrepr: "def test_file_not_found(): -│ │ │ # Reading non-existing file raises FileNotFoundError -│ │ │ > read_file("nonexistent.file") -│ │ │ -│ │ │ tests/test_io_utils.py:29: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ path = 'nonexistent.file' -│ │ │ -│ │ │ def read_file(path): -│ │ │ > with open(path, "r", encoding="utf-8") as f: -│ │ │ E FileNotFoundError: [Errno 2] No such file or directory: -│ │ │ 'nonexistent.file' -│ │ │ -│ │ │ functions/io_utils.py:2: FileNotFoundError" -│ │ └── teardown -│ │ ├── duration: 0.00014941208064556122 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_permission_error" -│ │ ├── lineno: 30 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_permission_error" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0002443710109218955 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00018256704788655043 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_io_utils.py" -│ │ │ │ ├── lineno: 34 -│ │ │ │ └── message: "PermissionError: Permission denied" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ │ ├── lineno: 36 -│ │ │ │ │ └── message: "" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "functions/io_utils.py" -│ │ │ │ │ ├── lineno: 2 -│ │ │ │ │ └── message: "in read_file" -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ ├── lineno: 34 -│ │ │ │ └── message: "PermissionError" -│ │ │ └── longrepr: "monkeypatch = <_pytest.monkeypatch.MonkeyPatch object -│ │ │ at 0x7f7887d8ce80> -│ │ │ -│ │ │ def test_permission_error(monkeypatch): -│ │ │ # Patch open to raise PermissionError simulating access -│ │ │ denial -│ │ │ def raise_perm_error(*args, **kwargs): -│ │ │ raise PermissionError("Permission denied") -│ │ │ monkeypatch.setattr("builtins.open", raise_perm_error) -│ │ │ > read_file("anyfile.txt") -│ │ │ -│ │ │ tests/test_io_utils.py:36: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ functions/io_utils.py:2: in read_file -│ │ │ with open(path, "r", encoding="utf-8") as f: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ args = ('anyfile.txt', 'r'), kwargs = {'encoding': 'utf-8'} -│ │ │ -│ │ │ def raise_perm_error(*args, **kwargs): -│ │ │ > raise PermissionError("Permission denied") -│ │ │ E PermissionError: Permission denied -│ │ │ -│ │ │ tests/test_io_utils.py:34: PermissionError" -│ │ └── teardown -│ │ ├── duration: 0.00017906399443745613 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_mock_open_error" -│ │ ├── lineno: 37 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_mock_open_error" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0002332779113203287 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0034362520091235638 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: -│ │ │ │ │ "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/u -│ │ │ │ │ nittest/mock.py" -│ │ │ │ ├── lineno: 1140 -│ │ │ │ └── message: "OSError: Mocked IOError" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ │ ├── lineno: 43 -│ │ │ │ │ └── message: "" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/unittest/mock.py" -│ │ │ │ │ ├── lineno: 1081 -│ │ │ │ │ └── message: "in __call__" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/unittest/mock.py" -│ │ │ │ │ ├── lineno: 1085 -│ │ │ │ │ └── message: "in _mock_call" -│ │ │ │ └── list -│ │ │ │ ├── path: -│ │ │ │ │ ".pixi/envs/default/lib/python3.8/unittest/mock.py" -│ │ │ │ ├── lineno: 1140 -│ │ │ │ └── message: "OSError" -│ │ │ └── longrepr: "monkeypatch = <_pytest.monkeypatch.MonkeyPatch object -│ │ │ at 0x7f7887dc64c0> -│ │ │ -│ │ │ def test_mock_open_error(monkeypatch): -│ │ │ # Mock open() to raise IOError simulating read error -│ │ │ mocked_open = mock.mock_open() -│ │ │ mocked_open.side_effect = IOError("Mocked IOError") -│ │ │ monkeypatch.setattr("builtins.open", mocked_open) -│ │ │ > with open("file.txt", "r") as f: -│ │ │ -│ │ │ tests/test_io_utils.py:43: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ .pixi/envs/default/lib/python3.8/unittest/mock.py:1081: in -│ │ │ __call__ -│ │ │ return self._mock_call(*args, **kwargs) -│ │ │ .pixi/envs/default/lib/python3.8/unittest/mock.py:1085: in -│ │ │ _mock_call -│ │ │ return self._execute_mock_call(*args, **kwargs) -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ self = -│ │ │ args = ('file.txt', 'r'), kwargs = {}, effect = OSError('Mocked -│ │ │ IOError') -│ │ │ -│ │ │ def _execute_mock_call(self, /, *args, **kwargs): -│ │ │ # separate from _increment_mock_call so that awaited -│ │ │ functions are -│ │ │ # executed separately from their call, also AsyncMock -│ │ │ overrides this method -│ │ │ -│ │ │ effect = self.side_effect -│ │ │ if effect is not None: -│ │ │ if _is_exception(effect): -│ │ │ > raise effect -│ │ │ E OSError: Mocked IOError -│ │ │ -│ │ │ .pixi/envs/default/lib/python3.8/unittest/mock.py:1140: OSError" -│ │ └── teardown -│ │ ├── duration: 0.00031654105987399817 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_file_handle_closed_error" -│ │ ├── lineno: 45 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_file_handle_closed_error" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00015527207870036364 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001981169916689396 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_io_utils.py" -│ │ │ │ ├── lineno: 50 -│ │ │ │ └── message: "ValueError: I/O operation on closed file" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ ├── lineno: 50 -│ │ │ │ └── message: "ValueError" -│ │ │ └── longrepr: "def test_file_handle_closed_error(): -│ │ │ # Accessing closed file raises ValueError -│ │ │ f = io.StringIO("content") -│ │ │ f.close() -│ │ │ > f.read() -│ │ │ E ValueError: I/O operation on closed file -│ │ │ -│ │ │ tests/test_io_utils.py:50: ValueError" -│ │ └── teardown -│ │ ├── duration: 0.00018261396326124668 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_os_error" -│ │ ├── lineno: 51 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_os_error" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0002628238871693611 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00018307100981473923 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_io_utils.py" -│ │ │ │ ├── lineno: 55 -│ │ │ │ └── message: "OSError: Simulated OSError" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ │ ├── lineno: 57 -│ │ │ │ │ └── message: "" -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ ├── lineno: 55 -│ │ │ │ └── message: "OSError" -│ │ │ └── longrepr: "monkeypatch = <_pytest.monkeypatch.MonkeyPatch object -│ │ │ at 0x7f7887f6f1c0> -│ │ │ -│ │ │ def test_os_error(monkeypatch): -│ │ │ # Patch os.remove to raise OSError simulating filesystem -│ │ │ error -│ │ │ def raise_os_error(path): -│ │ │ raise OSError("Simulated OSError") -│ │ │ monkeypatch.setattr("os.remove", raise_os_error) -│ │ │ > os.remove("file.txt") -│ │ │ -│ │ │ tests/test_io_utils.py:57: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ path = 'file.txt' -│ │ │ -│ │ │ def raise_os_error(path): -│ │ │ > raise OSError("Simulated OSError") -│ │ │ E OSError: Simulated OSError -│ │ │ -│ │ │ tests/test_io_utils.py:55: OSError" -│ │ └── teardown -│ │ ├── duration: 0.00018852704670280218 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_write_file_readonly" -│ │ ├── lineno: 58 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_write_file_readonly" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0006591590354219079 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.001055506058037281 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.0001485929824411869 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_io_utils.py::test_file_not_found_error" -│ │ ├── lineno: 66 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_file_not_found_error" -│ │ │ ├── "test_io_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00011974491644650698 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00017052097246050835 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_io_utils.py" -│ │ │ │ ├── lineno: 69 -│ │ │ │ └── message: "FileNotFoundError: [Errno 2] No such file or -│ │ │ │ directory: 'no_such_file.txt'" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_io_utils.py" -│ │ │ │ ├── lineno: 69 -│ │ │ │ └── message: "FileNotFoundError" -│ │ │ └── longrepr: "def test_file_not_found_error(): -│ │ │ # Raises FileNotFoundError when opening a non-existent -│ │ │ file -│ │ │ > open("no_such_file.txt", "r") -│ │ │ E FileNotFoundError: [Errno 2] No such file or directory: -│ │ │ 'no_such_file.txt' -│ │ │ -│ │ │ tests/test_io_utils.py:69: FileNotFoundError" -│ │ └── teardown -│ │ ├── duration: 0.00015997199807316065 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_broken" -│ │ ├── lineno: 13 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_broken" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00014446000568568707 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00019059597980231047 -│ │ │ ├── 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 -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 16 -│ │ │ │ └── message: "NameError" -│ │ │ └── longrepr: "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" -│ │ └── teardown -│ │ ├── duration: 0.00016745005268603563 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_call_missing_function" -│ │ ├── lineno: 17 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_call_missing_function" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0001515160547569394 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00019192800391465425 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 20 -│ │ │ │ └── message: "AttributeError: module 'functions.math_utils' has -│ │ │ │ no attribute 'non_existent_function'" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 20 -│ │ │ │ └── message: "AttributeError" -│ │ │ └── longrepr: "def test_call_missing_function(): -│ │ │ # Accessing a missing function attribute raises -│ │ │ AttributeError -│ │ │ > getattr(math_utils, "non_existent_function")() -│ │ │ E AttributeError: module 'functions.math_utils' has no -│ │ │ attribute 'non_existent_function' -│ │ │ -│ │ │ tests/test_math_utils.py:20: AttributeError" -│ │ └── teardown -│ │ ├── duration: 0.000172103988006711 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass[2-2-4]" -│ │ ├── lineno: 22 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass[2-2-4]" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "2-2-4" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00037710892502218485 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00019689498003572226 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.00020155194215476513 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass[1-5-6]" -│ │ ├── lineno: 22 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass[1-5-6]" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "1-5-6" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00030437798704952 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00019358494319021702 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.00017486605793237686 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass[3-4-7]" -│ │ ├── lineno: 22 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass[3-4-7]" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "3-4-7" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0003258960787206888 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00015326205175369978 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.00016212696209549904 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass[3-5-8]" -│ │ ├── lineno: 22 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass[3-5-8]" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "3-5-8" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0003202660009264946 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00015685195103287697 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.0001596640795469284 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass[3-6-9]" -│ │ ├── lineno: 22 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass[3-6-9]" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "3-6-9" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00027611199766397476 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00017245800700038671 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.00017249793745577335 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass_id" -│ │ ├── lineno: 36 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass_id" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "a=2,b=2,expected=4" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0002832899335771799 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001739200670272112 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.0001506779808551073 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass_id" -│ │ ├── lineno: 36 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass_id" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "a=1,b=5,expected=6" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0002825499977916479 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00016924203373491764 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.0001678189728409052 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_pass_id" -│ │ ├── lineno: 36 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_addition_pass_id" -│ │ │ ├── "parametrize" -│ │ │ ├── "pytestmark" -│ │ │ ├── "a=3,b=4,expected=7" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0003273050533607602 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00015093002002686262 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.0001535029150545597 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_addition_fail" -│ │ ├── lineno: 48 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_addition_fail" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012963206972926855 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0005251879338175058 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 51 -│ │ │ │ └── message: "assert 4 == 5 -│ │ │ │ + where 4 = addition(2, 2)" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 51 -│ │ │ │ └── message: "AssertionError" -│ │ │ └── longrepr: "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:51: AssertionError" -│ │ └── teardown -│ │ ├── duration: 0.00015705707482993603 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_division_zero" -│ │ ├── lineno: 52 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_division_zero" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0001304469769820571 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00016839499585330486 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/functions/math_utils.py" -│ │ │ │ ├── lineno: 5 -│ │ │ │ └── message: "ZeroDivisionError: division by zero" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ │ ├── lineno: 55 -│ │ │ │ │ └── message: "" -│ │ │ │ └── list -│ │ │ │ ├── path: "functions/math_utils.py" -│ │ │ │ ├── lineno: 5 -│ │ │ │ └── message: "ZeroDivisionError" -│ │ │ └── longrepr: "def test_division_zero(): -│ │ │ # Will raise ZeroDivisionError if not handled in -│ │ │ division -│ │ │ > division(1, 0) -│ │ │ -│ │ │ tests/test_math_utils.py:55: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ a = 1, b = 0 -│ │ │ -│ │ │ def division(a, b): -│ │ │ > return a / b -│ │ │ E ZeroDivisionError: division by zero -│ │ │ -│ │ │ functions/math_utils.py:5: ZeroDivisionError" -│ │ └── teardown -│ │ ├── duration: 0.00013869907706975937 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_multiply_xfail" -│ │ ├── lineno: 56 -│ │ ├── outcome: "xfailed" -│ │ ├── keywords -│ │ │ ├── "test_multiply_xfail" -│ │ │ ├── "xfail" -│ │ │ ├── "pytestmark" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00014202098827809095 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0002744330558925867 -│ │ │ ├── outcome: "skipped" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 60 -│ │ │ │ └── message: "assert 4 == 5 -│ │ │ │ + where 4 = multiply(2, 2)" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 60 -│ │ │ │ └── message: "AssertionError" -│ │ │ └── longrepr: "@pytest.mark.xfail(reason="Expected failure") -│ │ │ def test_multiply_xfail(): -│ │ │ # Expected fail test (xfail): incorrect expected -│ │ │ multiply result -│ │ │ > assert multiply(2, 2) == 5 -│ │ │ E assert 4 == 5 -│ │ │ E + where 4 = multiply(2, 2) -│ │ │ -│ │ │ tests/test_math_utils.py:60: AssertionError" -│ │ └── teardown -│ │ ├── duration: 0.00013765902258455753 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_runtime_error" -│ │ ├── lineno: 61 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_runtime_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012051209341734648 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00014847295824438334 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 64 -│ │ │ │ └── message: "RuntimeError: Forced runtime error" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 64 -│ │ │ │ └── message: "RuntimeError" -│ │ │ └── longrepr: "def test_runtime_error(): -│ │ │ # Test raises an uncaught RuntimeError -│ │ │ > raise RuntimeError("Forced runtime error") -│ │ │ E RuntimeError: Forced runtime error -│ │ │ -│ │ │ tests/test_math_utils.py:64: RuntimeError" -│ │ └── teardown -│ │ ├── duration: 0.00014190503861755133 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_memory_error" -│ │ ├── lineno: 65 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_memory_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00013308902271091938 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001576659269630909 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 68 -│ │ │ │ └── message: "MemoryError: Simulated memory error" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 68 -│ │ │ │ └── message: "MemoryError" -│ │ │ └── longrepr: "def test_memory_error(): -│ │ │ # Manually raise MemoryError to simulate out-of-memory -│ │ │ condition -│ │ │ > raise MemoryError("Simulated memory error") -│ │ │ E MemoryError: Simulated memory error -│ │ │ -│ │ │ tests/test_math_utils.py:68: MemoryError" -│ │ └── teardown -│ │ ├── duration: 0.00015517300926148891 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_timeout_error" -│ │ ├── lineno: 69 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_timeout_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012205902021378279 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00015321304090321064 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 72 -│ │ │ │ └── message: "TimeoutError: Simulated timeout error" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 72 -│ │ │ │ └── message: "TimeoutError" -│ │ │ └── longrepr: "def test_timeout_error(): -│ │ │ # Manually raise TimeoutError simulating timeout -│ │ │ conditions -│ │ │ > raise TimeoutError("Simulated timeout error") -│ │ │ E TimeoutError: Simulated timeout error -│ │ │ -│ │ │ tests/test_math_utils.py:72: TimeoutError" -│ │ └── teardown -│ │ ├── duration: 0.0001343870535492897 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_recursion_error" -│ │ ├── lineno: 73 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_recursion_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012000603601336479 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0007976720808073878 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 77 -│ │ │ │ └── message: "RecursionError: maximum recursion depth exceeded" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ │ ├── lineno: 78 -│ │ │ │ │ └── message: "" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ │ ├── lineno: 77 -│ │ │ │ │ └── message: "in recursive" -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 77 -│ │ │ │ └── message: "in recursive" -│ │ │ └── longrepr: "def test_recursion_error(): -│ │ │ # Infinite recursion triggers RecursionError -│ │ │ def recursive(): -│ │ │ return recursive() -│ │ │ > recursive() -│ │ │ -│ │ │ tests/test_math_utils.py:78: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ tests/test_math_utils.py:77: in recursive -│ │ │ return recursive() -│ │ │ tests/test_math_utils.py:77: in recursive -│ │ │ return recursive() -│ │ │ E RecursionError: maximum recursion depth exceeded -│ │ │ !!! Recursion detected (same locals & position)" -│ │ └── teardown -│ │ ├── duration: 0.00014030106831341982 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_floating_point_error" -│ │ ├── lineno: 79 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_floating_point_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00013260100968182087 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00014962698332965374 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 82 -│ │ │ │ └── message: "FloatingPointError: Simulated floating point -│ │ │ │ error" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 82 -│ │ │ │ └── message: "FloatingPointError" -│ │ │ └── longrepr: "def test_floating_point_error(): -│ │ │ # Manually raise FloatingPointError -│ │ │ > raise FloatingPointError("Simulated floating point -│ │ │ error") -│ │ │ E FloatingPointError: Simulated floating point error -│ │ │ -│ │ │ tests/test_math_utils.py:82: FloatingPointError" -│ │ └── teardown -│ │ ├── duration: 0.00015985697973519564 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_floating_point_overflow" -│ │ ├── lineno: 83 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_floating_point_overflow" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012051488738507032 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00016749300993978977 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 86 -│ │ │ │ └── message: "OverflowError: math range error" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 86 -│ │ │ │ └── message: "OverflowError" -│ │ │ └── longrepr: "def test_floating_point_overflow(): -│ │ │ # Exponential overflow triggers OverflowError -│ │ │ > math.exp(1000) -│ │ │ E OverflowError: math range error -│ │ │ -│ │ │ tests/test_math_utils.py:86: OverflowError" -│ │ └── teardown -│ │ ├── duration: 0.0001359810121357441 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_value_error" -│ │ ├── lineno: 87 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_value_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00013055105227977037 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00016072497237473726 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 90 -│ │ │ │ └── message: "ValueError: invalid literal for int() with base -│ │ │ │ 10: 'invalid'" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 90 -│ │ │ │ └── message: "ValueError" -│ │ │ └── longrepr: "def test_value_error(): -│ │ │ # ValueError on invalid integer conversion -│ │ │ > int("invalid") -│ │ │ E ValueError: invalid literal for int() with base 10: -│ │ │ 'invalid' -│ │ │ -│ │ │ tests/test_math_utils.py:90: ValueError" -│ │ └── teardown -│ │ ├── duration: 0.000144904013723135 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_wrong_argument_error" -│ │ ├── lineno: 91 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_wrong_argument_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012114096898585558 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00015039893332868814 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 94 -│ │ │ │ └── message: "TypeError: 'int' object is not iterable" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 94 -│ │ │ │ └── message: "TypeError" -│ │ │ └── longrepr: "def test_wrong_argument_error(): -│ │ │ # TypeError when passing wrong argument type to sum -│ │ │ > sum(5) -│ │ │ E TypeError: 'int' object is not iterable -│ │ │ -│ │ │ tests/test_math_utils.py:94: TypeError" -│ │ └── teardown -│ │ ├── duration: 0.00013602501712739468 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_unhandled_exception" -│ │ ├── lineno: 95 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_unhandled_exception" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0001181160332635045 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00015869003254920244 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 98 -│ │ │ │ └── message: "Exception: Generic unhandled exception" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 98 -│ │ │ │ └── message: "Exception" -│ │ │ └── longrepr: "def test_unhandled_exception(): -│ │ │ # Raises generic unhandled Exception -│ │ │ > raise Exception("Generic unhandled exception") -│ │ │ E Exception: Generic unhandled exception -│ │ │ -│ │ │ tests/test_math_utils.py:98: Exception" -│ │ └── teardown -│ │ ├── duration: 0.00014083506539463997 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_custom_error" -│ │ ├── lineno: 99 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_custom_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0001232039649039507 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001495809992775321 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 102 -│ │ │ │ └── message: "test_math_utils.CustomError: Custom error -│ │ │ │ simulation" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 102 -│ │ │ │ └── message: "CustomError" -│ │ │ └── longrepr: "def test_custom_error(): -│ │ │ # Raises user-defined CustomError exception -│ │ │ > raise CustomError("Custom error simulation") -│ │ │ E test_math_utils.CustomError: Custom error simulation -│ │ │ -│ │ │ tests/test_math_utils.py:102: CustomError" -│ │ └── teardown -│ │ ├── duration: 0.00013636599760502577 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_stop_iteration_direct" -│ │ ├── lineno: 103 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_stop_iteration_direct" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0001164969289675355 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001650520134717226 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: -│ │ │ │ │ "/workspace/tligui_y/slic/.pixi/envs/default/lib/python3.8/s -│ │ │ │ │ ite-packages/_pytest/capture.py" -│ │ │ │ ├── lineno: 880 -│ │ │ │ └── message: "RuntimeError: generator raised StopIteration" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ runner.py" -│ │ │ │ │ ├── lineno: 341 -│ │ │ │ │ └── message: "" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ runner.py" -│ │ │ │ │ ├── lineno: 242 -│ │ │ │ │ └── message: "in " -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/pluggy/_ -│ │ │ │ │ │ hooks.py" -│ │ │ │ │ ├── lineno: 513 -│ │ │ │ │ └── message: "in __call__" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/pluggy/_ -│ │ │ │ │ │ manager.py" -│ │ │ │ │ ├── lineno: 120 -│ │ │ │ │ └── message: "in _hookexec" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ threadexception.py" -│ │ │ │ │ ├── lineno: 92 -│ │ │ │ │ └── message: "in pytest_runtest_call" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ threadexception.py" -│ │ │ │ │ ├── lineno: 68 -│ │ │ │ │ └── message: "in thread_exception_runtest_hook" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ unraisableexception.py" -│ │ │ │ │ ├── lineno: 95 -│ │ │ │ │ └── message: "in pytest_runtest_call" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ unraisableexception.py" -│ │ │ │ │ ├── lineno: 70 -│ │ │ │ │ └── message: "in unraisable_exception_runtest_hook" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ logging.py" -│ │ │ │ │ ├── lineno: 846 -│ │ │ │ │ └── message: "in pytest_runtest_call" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ │ logging.py" -│ │ │ │ │ ├── lineno: 829 -│ │ │ │ │ └── message: "in _runtest_for" -│ │ │ │ └── list -│ │ │ │ ├── path: -│ │ │ │ │ ".pixi/envs/default/lib/python3.8/site-packages/_pytest/ -│ │ │ │ │ capture.py" -│ │ │ │ ├── lineno: 880 -│ │ │ │ └── message: "RuntimeError" -│ │ │ └── longrepr: "def test_stop_iteration_direct(): -│ │ │ # Directly raise StopIteration exception -│ │ │ > raise StopIteration() -│ │ │ E StopIteration -│ │ │ -│ │ │ tests/test_math_utils.py:106: StopIteration -│ │ │ -│ │ │ The above exception was the direct cause of the following -│ │ │ exception: -│ │ │ -│ │ │ cls = -│ │ │ func = . at -│ │ │ 0x7f788793e9d0> -│ │ │ 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.p -│ │ │ y:120: in _hookexec -│ │ │ return self._inner_hookexec(hook_name, methods, kwargs, -│ │ │ firstresult) -│ │ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexc -│ │ │ eption.py:92: in pytest_runtest_call -│ │ │ yield from thread_exception_runtest_hook() -│ │ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/threadexc -│ │ │ eption.py:68: in thread_exception_runtest_hook -│ │ │ yield -│ │ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisabl -│ │ │ eexception.py:95: in pytest_runtest_call -│ │ │ yield from unraisable_exception_runtest_hook() -│ │ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/unraisabl -│ │ │ eexception.py:70: in unraisable_exception_runtest_hook -│ │ │ yield -│ │ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.p -│ │ │ y:846: in pytest_runtest_call -│ │ │ yield from self._runtest_for(item, "call") -│ │ │ .pixi/envs/default/lib/python3.8/site-packages/_pytest/logging.p -│ │ │ y: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.p -│ │ │ y:880: RuntimeError" -│ │ └── teardown -│ │ ├── duration: 0.00028446002397686243 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_generator_exit_direct" -│ │ ├── lineno: 107 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_generator_exit_direct" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00014297198504209518 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00019652897026389837 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 110 -│ │ │ │ └── message: "GeneratorExit" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 110 -│ │ │ │ └── message: "GeneratorExit" -│ │ │ └── longrepr: "def test_generator_exit_direct(): -│ │ │ # Directly raise GeneratorExit exception -│ │ │ > raise GeneratorExit() -│ │ │ E GeneratorExit -│ │ │ -│ │ │ tests/test_math_utils.py:110: GeneratorExit" -│ │ └── teardown -│ │ ├── duration: 0.00016189797315746546 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_malformed_code" -│ │ ├── lineno: 111 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_malformed_code" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012700608931481838 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00017104798462241888 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 114 -│ │ │ │ └── message: " File "", line 1 -│ │ │ │ def bad(: -│ │ │ │ ^ -│ │ │ │ SyntaxError: invalid syntax" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 114 -│ │ │ │ └── message: "SyntaxError" -│ │ │ └── longrepr: "def test_malformed_code(): -│ │ │ # SyntaxError when executing malformed Python code -│ │ │ > exec("def bad(:\n pass") -│ │ │ E File "", line 1 -│ │ │ E def bad(: -│ │ │ E ^ -│ │ │ E SyntaxError: invalid syntax -│ │ │ -│ │ │ tests/test_math_utils.py:114: SyntaxError" -│ │ └── teardown -│ │ ├── duration: 0.00013890396803617477 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_sys_exit" -│ │ ├── lineno: 115 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_sys_exit" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012068904470652342 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001549560111016035 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 118 -│ │ │ │ └── message: "SystemExit: 1" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 118 -│ │ │ │ └── message: "SystemExit" -│ │ │ └── longrepr: "def test_sys_exit(): -│ │ │ # Simulate SystemExit via sys.exit -│ │ │ > sys.exit(1) -│ │ │ E SystemExit: 1 -│ │ │ -│ │ │ tests/test_math_utils.py:118: SystemExit" -│ │ └── teardown -│ │ ├── duration: 0.00014515803195536137 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_broken_function" -│ │ ├── lineno: 119 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_broken_function" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00011813594028353691 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001567349536344409 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 123 -│ │ │ │ └── message: "TypeError: Broken function" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ │ ├── lineno: 124 -│ │ │ │ │ └── message: "" -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 123 -│ │ │ │ └── message: "TypeError" -│ │ │ └── longrepr: "def test_broken_function(): -│ │ │ # Simulate broken function raising TypeError -│ │ │ def broken_func(*args, **kwargs): -│ │ │ raise TypeError("Broken function") -│ │ │ > broken_func() -│ │ │ -│ │ │ tests/test_math_utils.py:124: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ args = (), kwargs = {} -│ │ │ -│ │ │ def broken_func(*args, **kwargs): -│ │ │ > raise TypeError("Broken function") -│ │ │ E TypeError: Broken function -│ │ │ -│ │ │ tests/test_math_utils.py:123: TypeError" -│ │ └── teardown -│ │ ├── duration: 0.00013708800543099642 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_import_error" -│ │ ├── lineno: 125 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_import_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012047903146594763 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001542479731142521 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_math_utils.py" -│ │ │ │ ├── lineno: 127 -│ │ │ │ └── message: "ImportError: Simulated ImportError" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ ├── lineno: 127 -│ │ │ │ └── message: "ImportError" -│ │ │ └── longrepr: "def test_import_error(): -│ │ │ > raise ImportError("Simulated ImportError") -│ │ │ E ImportError: Simulated ImportError -│ │ │ -│ │ │ tests/test_math_utils.py:127: ImportError" -│ │ └── teardown -│ │ ├── duration: 0.00014827493578195572 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_math_utils.py::test_module_not_found_error" -│ │ ├── lineno: 128 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_module_not_found_error" -│ │ │ ├── "test_math_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00011804397217929363 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00048669998068362474 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "" -│ │ │ │ ├── lineno: 973 -│ │ │ │ └── message: "ModuleNotFoundError: No module named -│ │ │ │ 'non_existent_module_xyz'" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_math_utils.py" -│ │ │ │ │ ├── lineno: 131 -│ │ │ │ │ └── message: "" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: -│ │ │ │ │ │ ".pixi/envs/default/lib/python3.8/importlib/__init__.py" -│ │ │ │ │ ├── lineno: 127 -│ │ │ │ │ └── message: "in import_module" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "" -│ │ │ │ │ ├── lineno: 1014 -│ │ │ │ │ └── message: "in _gcd_import" -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "" -│ │ │ │ │ ├── lineno: 991 -│ │ │ │ │ └── message: "in _find_and_load" -│ │ │ │ └── list -│ │ │ │ ├── path: "" -│ │ │ │ ├── lineno: 973 -│ │ │ │ └── message: "ModuleNotFoundError" -│ │ │ └── longrepr: "def test_module_not_found_error(): -│ │ │ # Raises ModuleNotFoundError (subclass of ImportError) -│ │ │ for missing module -│ │ │ > importlib.import_module("non_existent_module_xyz") -│ │ │ -│ │ │ tests/test_math_utils.py:131: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ .pixi/envs/default/lib/python3.8/importlib/__init__.py:127: in -│ │ │ import_module -│ │ │ return _bootstrap._gcd_import(name, package, level) -│ │ │ :1014: in _gcd_import -│ │ │ ??? -│ │ │ :991: in _find_and_load -│ │ │ ??? -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ name = 'non_existent_module_xyz' -│ │ │ import_ = -│ │ │ -│ │ │ > ??? -│ │ │ E ModuleNotFoundError: No module named -│ │ │ 'non_existent_module_xyz' -│ │ │ -│ │ │ :973: ModuleNotFoundError" -│ │ └── teardown -│ │ ├── duration: 0.00017678807489573956 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── 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.00013640092220157385 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001568170264363289 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.00010512699373066425 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_string_utils.py::test_uppercase_type_error" -│ │ ├── lineno: 11 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_uppercase_type_error" -│ │ │ ├── "test_string_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00010734901297837496 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001571230823174119 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/functions/string_utils.py" -│ │ │ │ ├── lineno: 3 -│ │ │ │ └── message: "TypeError: Input cannot be None" -│ │ │ ├── traceback -│ │ │ │ ├── list -│ │ │ │ │ ├── path: "tests/test_string_utils.py" -│ │ │ │ │ ├── lineno: 14 -│ │ │ │ │ └── message: "" -│ │ │ │ └── list -│ │ │ │ ├── path: "functions/string_utils.py" -│ │ │ │ ├── lineno: 3 -│ │ │ │ └── message: "TypeError" -│ │ │ └── longrepr: "def test_uppercase_type_error(): -│ │ │ # TypeError when input is None (invalid input) -│ │ │ > uppercase(None) -│ │ │ -│ │ │ tests/test_string_utils.py:14: -│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -│ │ │ _ _ _ _ _ _ _ _ -│ │ │ -│ │ │ s = None -│ │ │ -│ │ │ def uppercase(s): -│ │ │ if s is None: -│ │ │ > raise TypeError("Input cannot be None") -│ │ │ E TypeError: Input cannot be None -│ │ │ -│ │ │ functions/string_utils.py:3: TypeError" -│ │ └── teardown -│ │ ├── duration: 0.00015197403263300657 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_string_utils.py::test_reverse_string" -│ │ ├── lineno: 15 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_reverse_string" -│ │ │ ├── "test_string_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00012045307084918022 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00014242797624319792 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 9.946594946086407e-05 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_string_utils.py::test_warning_emit" -│ │ ├── lineno: 19 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_warning_emit" -│ │ │ ├── "test_string_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00010523607488721609 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00014432205352932215 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 9.579595644026995e-05 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_string_utils.py::test_unicode_decode_error" -│ │ ├── lineno: 23 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_unicode_decode_error" -│ │ │ ├── "test_string_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.0001224899897351861 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00015334005001932383 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_string_utils.py" -│ │ │ │ ├── lineno: 26 -│ │ │ │ └── message: "UnicodeDecodeError: 'utf-8' codec can't decode -│ │ │ │ byte 0xff in position 0: invalid start byte" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_string_utils.py" -│ │ │ │ ├── lineno: 26 -│ │ │ │ └── message: "UnicodeDecodeError" -│ │ │ └── longrepr: "def test_unicode_decode_error(): -│ │ │ # UnicodeDecodeError when decoding invalid byte sequence -│ │ │ > b'\xff'.decode('utf-8') -│ │ │ E UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff -│ │ │ in position 0: invalid start byte -│ │ │ -│ │ │ tests/test_string_utils.py:26: UnicodeDecodeError" -│ │ └── teardown -│ │ ├── duration: 0.00013641896657645702 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: -│ │ │ "tests/test_string_utils.py::test_unicode_decode_surrogateescape" -│ │ ├── lineno: 27 -│ │ ├── outcome: "failed" -│ │ ├── keywords -│ │ │ ├── "test_unicode_decode_surrogateescape" -│ │ │ ├── "test_string_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00011493498459458351 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.00016963598318398 -│ │ │ ├── outcome: "failed" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_string_utils.py" -│ │ │ │ ├── lineno: 30 -│ │ │ │ └── message: "UnicodeDecodeError: 'utf-8' codec can't decode -│ │ │ │ byte 0x80 in position 0: invalid start byte" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_string_utils.py" -│ │ │ │ ├── lineno: 30 -│ │ │ │ └── message: "UnicodeDecodeError" -│ │ │ └── longrepr: "def test_unicode_decode_surrogateescape(): -│ │ │ # UnicodeDecodeError with strict error handler on -│ │ │ invalid byte -│ │ │ > b"\x80".decode("utf-8", errors="strict") -│ │ │ E UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 -│ │ │ in position 0: invalid start byte -│ │ │ -│ │ │ tests/test_string_utils.py:30: UnicodeDecodeError" -│ │ └── teardown -│ │ ├── duration: 0.00013487297110259533 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_string_utils.py::test_import_warning" -│ │ ├── lineno: 31 -│ │ ├── outcome: "passed" -│ │ ├── keywords -│ │ │ ├── "test_import_warning" -│ │ │ ├── "test_string_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00011424196418374777 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0001514590112492442 -│ │ │ └── outcome: "passed" -│ │ └── teardown -│ │ ├── duration: 0.00010555190965533257 -│ │ └── outcome: "passed" -│ ├── list -│ │ ├── nodeid: "tests/test_string_utils.py::test_xfail_uppercase_digits" -│ │ ├── lineno: 35 -│ │ ├── outcome: "xfailed" -│ │ ├── keywords -│ │ │ ├── "test_xfail_uppercase_digits" -│ │ │ ├── "xfail" -│ │ │ ├── "pytestmark" -│ │ │ ├── "test_string_utils.py" -│ │ │ ├── "tests" -│ │ │ ├── "slic" -│ │ │ └── "" -│ │ ├── setup -│ │ │ ├── duration: 0.00011855596676468849 -│ │ │ └── outcome: "passed" -│ │ ├── call -│ │ │ ├── duration: 0.0006178889889270067 -│ │ │ ├── outcome: "skipped" -│ │ │ ├── crash -│ │ │ │ ├── path: "/workspace/tligui_y/slic/tests/test_string_utils.py" -│ │ │ │ ├── lineno: 39 -│ │ │ │ └── message: "AssertionError: assert 'ABC123' == 'ABC1234' -│ │ │ │ -│ │ │ │ - ABC1234 -│ │ │ │ ? - -│ │ │ │ + ABC123" -│ │ │ ├── traceback -│ │ │ │ └── list -│ │ │ │ ├── path: "tests/test_string_utils.py" -│ │ │ │ ├── lineno: 39 -│ │ │ │ └── message: "AssertionError" -│ │ │ └── longrepr: "@pytest.mark.xfail(reason="Expected failure: -│ │ │ uppercase does not handle digits") -│ │ │ def test_xfail_uppercase_digits(): -│ │ │ # Expected fail test because uppercase won't change -│ │ │ digits -│ │ │ > assert uppercase("abc123") == "ABC1234" -│ │ │ E AssertionError: assert 'ABC123' == 'ABC1234' -│ │ │ E -│ │ │ E - ABC1234 -│ │ │ E ? - -│ │ │ E + ABC123 -│ │ │ -│ │ │ tests/test_string_utils.py:39: AssertionError" -│ │ └── teardown -│ │ ├── duration: 0.00013552105519920588 -│ │ └── outcome: "passed" -│ └── list -│ ├── nodeid: "tests/test_string_utils.py::test_keyboard_interrupt_direct" -│ ├── lineno: 40 -│ ├── outcome: "passed" -│ ├── keywords -│ │ ├── "test_keyboard_interrupt_direct" -│ │ ├── "test_string_utils.py" -│ │ ├── "tests" -│ │ ├── "slic" -│ │ └── "" -│ └── setup -│ ├── duration: 0.0001167169539257884 -│ └── outcome: "passed" -└── warnings - └── list - ├── message: "Test warning" - ├── category: "UserWarning" - ├── when: "runtest" - ├── filename: "/workspace/tligui_y/slic/tests/test_string_utils.py" - └── lineno: 22