Files
slic/ci-reports/markdown/json-tree-view.log
T

2290 lines
109 KiB
Plaintext

📁 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)
│ │ <frozen importlib._bootstrap>:1014: in _gcd_import
│ │ ???
│ │ <frozen importlib._bootstrap>:991: in _find_and_load
│ │ ???
│ │ <frozen importlib._bootstrap>:975: in _find_and_load_unlocked
│ │ ???
│ │ <frozen importlib._bootstrap>: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 <module>
│ │ 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 = <MagicMock name='open' spec='builtin_function_or_method'
│ │ │ id='140155652171376'>
│ │ │ 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 <lambda>"
│ │ │ │ ├── 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 = <class '_pytest.runner.CallInfo'>
│ │ │ func = <function call_and_report.<locals>.<lambda> at
│ │ │ 0x7f788793e9d0>
│ │ │ when = 'call'
│ │ │ reraise = (<class '_pytest.outcomes.Exit'>, <class
│ │ │ 'KeyboardInterrupt'>)
│ │ │
│ │ │ @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>
│ │ │ 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 = <CaptureManager _method='no'
│ │ │ _global_capturing=<MultiCapture out=None err=None in_=None
│ │ │ _state='suspended' _in_suspended=False> _capture_fixture=None>
│ │ │ item = <Function test_stop_iteration_direct>
│ │ │
│ │ │ @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 "<string>", 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 "<string>", 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: "<frozen importlib._bootstrap>"
│ │ │ │ ├── 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: "<frozen importlib._bootstrap>"
│ │ │ │ │ ├── lineno: 1014
│ │ │ │ │ └── message: "in _gcd_import"
│ │ │ │ ├── list
│ │ │ │ │ ├── path: "<frozen importlib._bootstrap>"
│ │ │ │ │ ├── lineno: 991
│ │ │ │ │ └── message: "in _find_and_load"
│ │ │ │ └── list
│ │ │ │ ├── path: "<frozen importlib._bootstrap>"
│ │ │ │ ├── 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)
│ │ │ <frozen importlib._bootstrap>:1014: in _gcd_import
│ │ │ ???
│ │ │ <frozen importlib._bootstrap>:991: in _find_and_load
│ │ │ ???
│ │ │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
│ │ │ _ _ _ _ _ _ _ _
│ │ │
│ │ │ name = 'non_existent_module_xyz'
│ │ │ import_ = <function _gcd_import at 0x7f788c6564c0>
│ │ │
│ │ │ > ???
│ │ │ E ModuleNotFoundError: No module named
│ │ │ 'non_existent_module_xyz'
│ │ │
│ │ │ <frozen importlib._bootstrap>: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