jeffwright13 / pytest-fold

A Pytest plugin to make console output more manageable when there are multiple failed tests
MIT License
12 stars 2 forks source link

Asciimatics crashes when resizing #26

Closed jeffwright13 closed 2 years ago

jeffwright13 commented 2 years ago

Sometimes takes a bit of fiddling, but it crashes eventually:

Traceback (most recent call last):
  File "/Users/jwr003/coding/pytest-fold/venv/bin/pytest", line 8, in <module>
    sys.exit(console_main())
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/_pytest/config/__init__.py", line 185, in console_main
    code = main()
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/_pytest/config/__init__.py", line 162, in main
    ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/_pytest/main.py", line 316, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/_pytest/main.py", line 311, in wrap_session
    config._ensure_unconfigure()
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/_pytest/config/__init__.py", line 987, in _ensure_unconfigure
    self.hook.pytest_unconfigure(config=self)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/Users/jwr003/coding/pytest-fold/pytest_fold/plugin.py", line 197, in pytest_unconfigure
    pyfold_tui(config.getoption("--fold-tui"))
  File "/Users/jwr003/coding/pytest-fold/pytest_fold/plugin.py", line 206, in pyfold_tui
    tui_asciimatics() if tui == "asciimatics" else tui_textual()
  File "/Users/jwr003/coding/pytest-fold/pytest_fold/tui.py", line 180, in main
    Screen.wrapper(demo, catch_interrupt=True, arguments=[last_scene])
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/asciimatics/screen.py", line 1393, in wrapper
    return func(screen, *arguments)
  File "/Users/jwr003/coding/pytest-fold/pytest_fold/tui.py", line 166, in demo
    scenes = [Scene([ResultsFrame(screen)], duration=-1)]
  File "/Users/jwr003/coding/pytest-fold/pytest_fold/tui.py", line 149, in __init__
    layout.add_widgets()
  File "/Users/jwr003/coding/pytest-fold/pytest_fold/tui.py", line 71, in add_widgets
    tb.value = self.value if not self.folded else self.value[: self.screen.width]
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/asciimatics/widgets/textbox.py", line 312, in value
    value = ColouredText(line, self._parser, colour=last_colour)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/asciimatics/strings.py", line 41, in __init__
    self._parser.reset(self._raw_text, self._init_colour)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/asciimatics/parsers.py", line 336, in reset
    new_offset = _handle_escape(state)
  File "/Users/jwr003/coding/pytest-fold/venv/lib/python3.10/site-packages/asciimatics/parsers.py", line 179, in _handle_escape
    elif st.text[1] == "M":
IndexError: string index out of range
jeffwright13 commented 2 years ago

Asciimatics retired.