From de7c9d1c777817cbfb4714ab94895b03b02e84b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B8=D0=B2=D0=BE=D0=B5=D0=B2=20=D0=9D=D0=B8=D0=BA?= =?UTF-8?q?=D0=B8=D1=82=D0=B0?= Date: Sun, 12 Jul 2026 18:53:13 +0300 Subject: [PATCH 1/3] fix: use filtered tests to count timeout --- src/imgtests/runner.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/imgtests/runner.py b/src/imgtests/runner.py index 794fd4f2..923a258e 100644 --- a/src/imgtests/runner.py +++ b/src/imgtests/runner.py @@ -597,6 +597,11 @@ def _run_single(distro: Distro, mode: Runner, config: dict[str, Any]) -> None: if filtered_tests: suite.tests = tuple(filtered_tests) + suite.test_duration = ( + suite.total_duration // len(filtered_tests) + if len(filtered_tests) > 0 + else 0 + ) logger.info( "Filtered %s: %d -> %d tests", suite_name, From 61525896af4d6204ccab46c625ef9c2fb200c9a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B8=D0=B2=D0=BE=D0=B5=D0=B2=20=D0=9D=D0=B8=D0=BA?= =?UTF-8?q?=D0=B8=D1=82=D0=B0?= Date: Sun, 12 Jul 2026 18:56:25 +0300 Subject: [PATCH 2/3] fix: don't reset unsaved config after filtering tests --- src/imgtests/web/static/js/test_config.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/imgtests/web/static/js/test_config.js b/src/imgtests/web/static/js/test_config.js index 79dd4971..c5cfcf25 100644 --- a/src/imgtests/web/static/js/test_config.js +++ b/src/imgtests/web/static/js/test_config.js @@ -333,26 +333,30 @@ class TestConfigManager { ), ).map((cb) => cb.value); - if (!this.currentConfig.selected_tests) { - this.currentConfig.selected_tests = {}; - } + const selectedTests = { + ...(this.currentConfig.selected_tests ?? {}), + }; if (selected.length > 0) { - this.currentConfig.selected_tests[suiteName] = selected; + selectedTests[suiteName] = selected; this.showStatus( `Selected ${selected.length} tests for ${suiteName}`, "success", ); } else { - delete this.currentConfig.selected_tests[suiteName]; + delete selectedTests[suiteName]; this.showStatus( `Will run all tests for ${suiteName}`, "success", ); } + this.currentConfig = { + ...this.currentConfig, + selected_tests: selectedTests, + }; + modal.remove(); - this.renderConfigUI(); }); document @@ -424,6 +428,7 @@ class TestConfigManager { const error = await response.text(); throw new Error(`HTTP ${response.status}: ${error}`); } + this.renderConfigUI(); } catch (error) { console.error("Save failed:", error); this.showStatus( From 01c4387bbd47e6cce9a86810662c69a47f1fd297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B8=D0=B2=D0=BE=D0=B5=D0=B2=20=D0=9D=D0=B8=D0=BA?= =?UTF-8?q?=D0=B8=D1=82=D0=B0?= Date: Sun, 12 Jul 2026 19:00:13 +0300 Subject: [PATCH 3/3] refactor: use default time if missing filtered tests --- src/imgtests/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/imgtests/runner.py b/src/imgtests/runner.py index 923a258e..7e6b0893 100644 --- a/src/imgtests/runner.py +++ b/src/imgtests/runner.py @@ -600,7 +600,7 @@ def _run_single(distro: Distro, mode: Runner, config: dict[str, Any]) -> None: suite.test_duration = ( suite.total_duration // len(filtered_tests) if len(filtered_tests) > 0 - else 0 + else suite.test_duration ) logger.info( "Filtered %s: %d -> %d tests",