Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package openQA for openSUSE:Factory checked 
in at 2026-10-17 21:25:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openQA (Old)
 and      /work/SRC/openSUSE:Factory/.openQA.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openQA"

Sat Oct 17 21:25:30 2026 rev:892 rq:1385270 version:5.1792169851.d54cd4e4

Changes:
--------
--- /work/SRC/openSUSE:Factory/openQA/openQA.changes    2026-10-16 
20:14:18.215803517 +0200
+++ /work/SRC/openSUSE:Factory/.openQA.new.3698736/openQA.changes       
2026-10-17 21:25:32.837242903 +0200
@@ -1,0 +2,12 @@
+Fri Oct 16 17:44:24 UTC 2026 - [email protected]
+
+- Update to version 5.1792169851.d54cd4e4:
+  * chore(deps-dev): bump globby from 16.2.2 to 16.2.4 (#7961)
+
+-------------------------------------------------------------------
+Fri Oct 16 14:31:16 UTC 2026 - [email protected]
+
+- Update to version 5.1792155122.83ee034b:
+  * feat: filter jobs by minimum number of restarts
+
+-------------------------------------------------------------------

Old:
----
  openQA-5.1792132198.63d05d40.obscpio

New:
----
  openQA-5.1792169851.d54cd4e4.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openQA-client-test.spec ++++++
--- /var/tmp/diff_new_pack.QwiCfn/_old  2026-10-17 21:25:34.777323836 +0200
+++ /var/tmp/diff_new_pack.QwiCfn/_new  2026-10-17 21:25:34.778323878 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-client
 Name:           %{short_name}-test
-Version:        5.1792132198.63d05d40
+Version:        5.1792169851.d54cd4e4
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-test.spec ++++++
--- /var/tmp/diff_new_pack.QwiCfn/_old  2026-10-17 21:25:34.805325004 +0200
+++ /var/tmp/diff_new_pack.QwiCfn/_new  2026-10-17 21:25:34.807325088 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA
 Name:           %{short_name}-test
-Version:        5.1792132198.63d05d40
+Version:        5.1792169851.d54cd4e4
 Release:        0
 Summary:        Test package for openQA
 License:        GPL-2.0-or-later

++++++ openQA-worker-test.spec ++++++
--- /var/tmp/diff_new_pack.QwiCfn/_old  2026-10-17 21:25:34.837326339 +0200
+++ /var/tmp/diff_new_pack.QwiCfn/_new  2026-10-17 21:25:34.838326381 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-worker
 Name:           %{short_name}-test
-Version:        5.1792132198.63d05d40
+Version:        5.1792169851.d54cd4e4
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA.spec ++++++
--- /var/tmp/diff_new_pack.QwiCfn/_old  2026-10-17 21:25:34.875327925 +0200
+++ /var/tmp/diff_new_pack.QwiCfn/_new  2026-10-17 21:25:34.877328008 +0200
@@ -104,7 +104,7 @@
 %define devel_requires %devel_no_selenium_requires chromedriver
 
 Name:           openQA
-Version:        5.1792132198.63d05d40
+Version:        5.1792169851.d54cd4e4
 Release:        0
 Summary:        Framework for automated system-level testing (web-frontend, 
scheduler and tools)
 Group:          Development/Tools/Other

++++++ node_modules.obscpio ++++++
Binary files old/globby-16.2.2.tgz and new/globby-16.2.2.tgz differ
Binary files old/globby-16.2.4.tgz and new/globby-16.2.4.tgz differ

++++++ node_modules.spec.inc ++++++
--- /var/tmp/diff_new_pack.QwiCfn/_old  2026-10-17 21:25:35.575357127 +0200
+++ /var/tmp/diff_new_pack.QwiCfn/_new  2026-10-17 21:25:35.578357252 +0200
@@ -136,7 +136,7 @@
 Source1135:         
https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz
 Source1136:         
https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz
 Source1137:         
https://registry.npmjs.org/globals/-/globals-17.4.0.tgz#/globals-17.4.0.tgz
-Source1138:         
https://registry.npmjs.org/globby/-/globby-16.2.2.tgz#/globby-16.2.2.tgz
+Source1138:         
https://registry.npmjs.org/globby/-/globby-16.2.4.tgz#/globby-16.2.4.tgz
 Source1139:         
https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz
 Source1140:         
https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz#/graphlib-2.1.8.tgz
 Source1141:         
https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz#/has-flag-5.0.1.tgz

++++++ openQA-5.1792132198.63d05d40.obscpio -> 
openQA-5.1792169851.d54cd4e4.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1792132198.63d05d40/lib/OpenQA/Constants.pm 
new/openQA-5.1792169851.d54cd4e4/lib/OpenQA/Constants.pm
--- old/openQA-5.1792132198.63d05d40/lib/OpenQA/Constants.pm    2026-10-16 
08:29:58.000000000 +0200
+++ new/openQA-5.1792169851.d54cd4e4/lib/OpenQA/Constants.pm    2026-10-16 
18:57:31.000000000 +0200
@@ -104,8 +104,10 @@
 
 use constant FRAGMENT_REGEX => 
qr'(#([-?/:@.~!$&\'()*+,;=\w]|%[0-9a-fA-F]{2})*)*';
 
+use constant MAX_RESTART_FILTER_JOINS => 10;
+
 use constant JOBS_OVERVIEW_SEARCH_CRITERIA =>
-  (qw(distri version flavor arch build test machine modules modules_result 
module_re group groupid id));
+  (qw(distri version flavor arch build test machine modules modules_result 
module_re group groupid id min_restarts));
 
 # the build_version_sort column of job_groups and job_group_parents
 use constant {
@@ -133,6 +135,7 @@
   DB_TIMESTAMP_ACCURACY
   VIDEO_FILE_NAME_START VIDEO_FILE_NAME_REGEX
   FRAGMENT_REGEX
+  MAX_RESTART_FILTER_JOINS
   JOBS_OVERVIEW_SEARCH_CRITERIA
   BUILD_SORT_BY_NAME BUILD_SORT_BY_NEWEST_JOB BUILD_SORT_BY_OLDEST_JOB
   VNCPORT_OFFSET VNC_PORT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1792132198.63d05d40/lib/OpenQA/WebAPI/Plugin/Helpers.pm 
new/openQA-5.1792169851.d54cd4e4/lib/OpenQA/WebAPI/Plugin/Helpers.pm
--- old/openQA-5.1792132198.63d05d40/lib/OpenQA/WebAPI/Plugin/Helpers.pm        
2026-10-16 08:29:58.000000000 +0200
+++ new/openQA-5.1792169851.d54cd4e4/lib/OpenQA/WebAPI/Plugin/Helpers.pm        
2026-10-16 18:57:31.000000000 +0200
@@ -5,7 +5,7 @@
 use Mojo::Base 'Mojolicious::Plugin', -signatures;
 
 use Mojo::ByteStream;
-use OpenQA::Constants qw(JOBS_OVERVIEW_SEARCH_CRITERIA);
+use OpenQA::Constants qw(JOBS_OVERVIEW_SEARCH_CRITERIA 
MAX_RESTART_FILTER_JOINS);
 use OpenQA::Schema;
 use OpenQA::Utils qw(bugurl human_readable_size render_escaped_refs 
href_to_bugref);
 use OpenQA::Events;
@@ -394,6 +394,7 @@
     $v->optional($_, 'not_empty') for JOBS_OVERVIEW_SEARCH_CRITERIA;
     $v->optional('comment');
     $v->optional('groupid')->num(0, undef);
+    $v->optional('min_restarts')->num(1, undef);
     $v->optional('modules', 'comma_separated');
     $v->optional('flavor', 'comma_separated');
     $v->optional('limit', 'not_empty')->num(1, undef);
@@ -540,7 +541,29 @@
     my $archs = $c->every_non_empty_param('arch');
     my $machines = $c->every_non_empty_param('machine');
     my $failed_modules = $c->every_non_empty_param('failed_modules');
+    my $min_restarts = $c->validation->param('min_restarts');
+    my $capped_restarts = $min_restarts ? min($min_restarts, 
MAX_RESTART_FILTER_JOINS) : 0;
     my @conds = (
+        (
+            $min_restarts
+            ? \[
+                'EXISTS (
+                    WITH RECURSIVE job_restart_chain AS (
+                        SELECT id AS ancestor_id, 1 AS level
+                        FROM jobs
+                        WHERE clone_id = me.id
+                        UNION ALL
+                        SELECT j.id AS ancestor_id, c.level + 1 AS level
+                        FROM jobs j
+                        JOIN job_restart_chain c ON j.clone_id = c.ancestor_id
+                        WHERE c.level < ?
+                    )
+                    SELECT 1 FROM job_restart_chain WHERE level >= ? LIMIT 1
+                )',
+                ($capped_restarts) x 2
+              ]
+            : ()
+        ),
         (@$states ? {'me.state' => {-in => $states}} : ()),
         (@$results ? {'me.result' => {-in => $results}} : ()),
         (@$states_not ? {'me.state' => {-not_in => $states_not}} : ()),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1792132198.63d05d40/package-lock.json 
new/openQA-5.1792169851.d54cd4e4/package-lock.json
--- old/openQA-5.1792132198.63d05d40/package-lock.json  2026-10-16 
08:29:58.000000000 +0200
+++ new/openQA-5.1792169851.d54cd4e4/package-lock.json  2026-10-16 
18:57:31.000000000 +0200
@@ -1873,9 +1873,9 @@
       }
     },
     "node_modules/globby": {
-      "version": "16.2.2",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.2.tgz";,
-      "integrity": 
"sha512-NLvV9ubZ6NDsJaOpKPy3cQeJpKi9DcWiyCiFUpJPA0YihRqiE6RWaLUmgNNPr8MgPpLZjnBjSmou7uZBRJv9wA==",
+      "version": "16.2.4",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.4.tgz";,
+      "integrity": 
"sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -1883,6 +1883,7 @@
         "fast-glob": "^3.3.3",
         "ignore": "^7.0.5",
         "is-path-inside": "^4.0.0",
+        "micromatch": "^4.0.8",
         "slash": "^5.1.0",
         "unicorn-magic": "^0.4.0"
       },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1792132198.63d05d40/t/10-tests_overview.t 
new/openQA-5.1792169851.d54cd4e4/t/10-tests_overview.t
--- old/openQA-5.1792132198.63d05d40/t/10-tests_overview.t      2026-10-16 
08:29:58.000000000 +0200
+++ new/openQA-5.1792169851.d54cd4e4/t/10-tests_overview.t      2026-10-16 
18:57:31.000000000 +0200
@@ -11,6 +11,7 @@
 use OpenQA::Test::Case;
 use OpenQA::Test::TimeLimit '18';
 use OpenQA::Jobs::Constants;
+use OpenQA::Constants qw(MAX_RESTART_FILTER_JOINS);
 use OpenQA::App;
 use Date::Format 'time2str';
 use Mojo::Parameters;
@@ -643,6 +644,27 @@
     is $clone2_data->{restarts}, 2, 'AJAX list contains restart count 2';
 };
 
+subtest 'filter by min_restarts' => sub {
+    $t->get_ok('/tests/overview' => form => {build => '198077', min_restarts 
=> 1})->status_is(200);
+    $t->element_exists('.restarts .fa-clock-rotate-left', 'Overview shows job 
with restarts when min_restarts=1');
+
+    $t->get_ok('/tests/overview' => form => {build => '198077', min_restarts 
=> 2})->status_is(200);
+    $t->element_exists('.restarts .fa-clock-rotate-left', 'Overview shows job 
with restarts when min_restarts=2');
+    $t->element_exists('[title="Restarted 2 times"]', 'Expected job with 2 
restarts found');
+
+    $t->get_ok('/tests/overview' => form => {build => '198077', min_restarts 
=> 3})->status_is(200);
+    $t->element_exists_not('.restarts .fa-clock-rotate-left',
+        'Overview hides jobs without enough restarts when min_restarts=3');
+
+    $t->get_ok('/tests/overview' => form => {build => '198077', min_restarts 
=> MAX_RESTART_FILTER_JOINS + 1})
+      ->status_is(200);
+    $t->element_exists_not('.restarts .fa-clock-rotate-left',
+        'Overview caps nested joins for min_restarts > ' . 
MAX_RESTART_FILTER_JOINS);
+
+    $t->get_ok('/tests/overview' => form => {build => '198077', min_restarts 
=> 'invalid'})->status_is(200);
+    $t->element_exists('.restarts .fa-clock-rotate-left', 'Overview ignores 
invalid min_restarts values');
+};
+
 subtest 'advanced restart options' => sub {
     $test_case->login($t, 'percival');
     
$t->get_ok('/tests/overview?groupid=1001&distri=opensuse&version=13.1&build=0091');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1792132198.63d05d40/templates/webapi/test/overview.html.ep 
new/openQA-5.1792169851.d54cd4e4/templates/webapi/test/overview.html.ep
--- old/openQA-5.1792132198.63d05d40/templates/webapi/test/overview.html.ep     
2026-10-16 08:29:58.000000000 +0200
+++ new/openQA-5.1792169851.d54cd4e4/templates/webapi/test/overview.html.ep     
2026-10-16 18:57:31.000000000 +0200
@@ -196,6 +196,16 @@
                     </div>
                     <div class="col-5">
                         <div class="mb-3">
+                            <label class="form-label" 
for="filter-min-restarts"><strong>Minimum restarts</strong></label>
+                            <%= help_popover('Help for the <em>Minimum 
restarts</em> filter' => '
+                            <p>Shows jobs that have been restarted at least 
this many times</p>') %>
+                            <input type="number" class="form-control" 
name="min_restarts" id="filter-min-restarts" min="1" placeholder="e.g. 1">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-5">
+                        <div class="mb-3">
                             <strong>Misc</strong>
                             <input value="1" name="todo" type="checkbox" 
id="filter-todo">
                             <label class="form-label" 
for="filter-todo">TODO</label>

++++++ openQA.obsinfo ++++++
--- /var/tmp/diff_new_pack.QwiCfn/_old  2026-10-17 21:25:45.674778438 +0200
+++ /var/tmp/diff_new_pack.QwiCfn/_new  2026-10-17 21:25:45.679778647 +0200
@@ -1,5 +1,5 @@
 name: openQA
-version: 5.1792132198.63d05d40
-mtime: 1792132198
-commit: 63d05d409d6cf5d2712ed3b2ea326913b7f90563
+version: 5.1792169851.d54cd4e4
+mtime: 1792169851
+commit: d54cd4e47a8a3eb4b40ca1bba954b13daa295bc2
 

Reply via email to