- py_func and lua_func items accept a context_id parameter; items sharing
the same id reuse the same subprocess for the duration of the test run
- Subprocess-side tm.setgd/tm.gd use a local fallback dict for non-JSON-
serializable values (py_func only); serializable values reach the main
process global dict and are accessible from any test item or subprocess
- Shared subprocess engines are cleaned up in process.py finally block
- LuaProcessBase gains is_alive() (was missing, broke all lua_func items)
- Validation tests cover serializable sharing across different context ids,
non-serializable sharing within the same context_id, and cross-item access
- RST documentation updated for both py_func and lua_func items
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace os.execv restart in actionRefresh with file_manager.reload(),
leveraging the subprocess architecture so py_func modules are freshly
imported on each reload. Add a modal progress dialog with step labels
during loading. Fix checkbox reappearing on breakpoint with
show_checkboxes OFF.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
itemChanged fires for any data change (including icon updates in the pause
column), causing on_testChecked to inadvertently restore CheckStateRole via
synchronizeEnabledState. Guard against non-checkbox column changes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Extract TestControllerService service layer over TestSetController
- Split MainWindow into TestRunner and TestFileManager coordinators
- Merge 21 QTestTreeItem subclasses into a single factory
- Replace _test_started/_test_paused booleans with TestState enum
Introduce TestState(IDLE/RUNNING/PAUSED) in TestRunner, eliminating
two boolean flags on MainWindow that encoded the same three-state logic.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace individual per-type subclass files with a _ITEM_CONFIG dict
and make_tree_item() factory in test_tree_item.py. Replace class-name
string check in setBreakpoint() with a _no_breakpoint flag.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extract execution lifecycle (TestRunner) and file/process management
(TestFileManager) from MainWindow, reducing it from ~1170 to ~700 lines.
Validated against full test suite with no new regressions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>