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-04-11 22:26:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openQA (Old)
 and      /work/SRC/openSUSE:Factory/.openQA.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openQA"

Sat Apr 11 22:26:36 2026 rev:835 rq:1346071 version:5.1775828534.8622a781

Changes:
--------
--- /work/SRC/openSUSE:Factory/openQA/openQA.changes    2026-04-10 
18:01:36.223125622 +0200
+++ /work/SRC/openSUSE:Factory/.openQA.new.21863/openQA.changes 2026-04-11 
22:31:57.258084107 +0200
@@ -2 +2 @@
-Thu Apr 09 16:47:28 UTC 2026 - [email protected]
+Fri Apr 10 13:42:25 UTC 2026 - [email protected]
@@ -4 +4,18 @@
-- Update to version 5.1775753240.e466faa2:
+- Update to version 5.1775828534.8622a781:
+  * refactor: Rename `results_storage_above_threshold`
+  * feat: Log a meaningful error message if `check_df` fails
+  * feat: Add separate setting for scheduler storage space check
+  * fix: address further XSS in admin_needle.js response loop
+  * fix: address XSS vulnerability in admin_needle.js handleSingleError
+  * fix: address further XSS vulnerabilities in admintable.js catch blocks
+  * fix: address XSS vulnerability in admintable.js catch block
+  * fix: address XSS vulnerability in ws_console.js sendAndLogCommand
+  * fix: address XSS vulnerability in ws_console.js logLine
+  * build(deps): bump lodash from 4.17.23 to 4.18.1
+  * fix: Calculate upload speed correctly by including milliseconds
+  * docs: Clarify description of `force_result_regex`
+  * test: Cover remaining lines of `upgradedb`
+  * test: Fix missing assignment in upgradedb test
+  * refactor: Avoid duplicating user handling in database scripts
+  * fix: Apply force result label correctly if `force_result_regex` is empty
+  * test: Verify applying force_result label from carried over comments
@@ -6,0 +24 @@
+  * build(deps-dev): bump eslint-plugin-prettier from 5.5.4 to 5.5.5

Old:
----
  openQA-5.1775753240.e466faa2.obscpio

New:
----
  openQA-5.1775828534.8622a781.obscpio

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

Other differences:
------------------
++++++ openQA-client-test.spec ++++++
--- /var/tmp/diff_new_pack.7FcBwH/_old  2026-04-11 22:31:58.906151513 +0200
+++ /var/tmp/diff_new_pack.7FcBwH/_new  2026-04-11 22:31:58.910151677 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-client
 Name:           %{short_name}-test
-Version:        5.1775753240.e466faa2
+Version:        5.1775828534.8622a781
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-devel-test.spec ++++++
--- /var/tmp/diff_new_pack.7FcBwH/_old  2026-04-11 22:31:59.014155931 +0200
+++ /var/tmp/diff_new_pack.7FcBwH/_new  2026-04-11 22:31:59.022156258 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-devel
 Name:           %{short_name}-test
-Version:        5.1775753240.e466faa2
+Version:        5.1775828534.8622a781
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-test.spec ++++++
--- /var/tmp/diff_new_pack.7FcBwH/_old  2026-04-11 22:31:59.098159366 +0200
+++ /var/tmp/diff_new_pack.7FcBwH/_new  2026-04-11 22:31:59.102159530 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA
 Name:           %{short_name}-test
-Version:        5.1775753240.e466faa2
+Version:        5.1775828534.8622a781
 Release:        0
 Summary:        Test package for openQA
 License:        GPL-2.0-or-later

++++++ openQA-worker-test.spec ++++++
--- /var/tmp/diff_new_pack.7FcBwH/_old  2026-04-11 22:31:59.166162148 +0200
+++ /var/tmp/diff_new_pack.7FcBwH/_new  2026-04-11 22:31:59.170162311 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-worker
 Name:           %{short_name}-test
-Version:        5.1775753240.e466faa2
+Version:        5.1775828534.8622a781
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA.spec ++++++
--- /var/tmp/diff_new_pack.7FcBwH/_old  2026-04-11 22:31:59.246165420 +0200
+++ /var/tmp/diff_new_pack.7FcBwH/_new  2026-04-11 22:31:59.250165583 +0200
@@ -99,7 +99,7 @@
 %define devel_requires %devel_no_selenium_requires chromedriver
 
 Name:           openQA
-Version:        5.1775753240.e466faa2
+Version:        5.1775828534.8622a781
 Release:        0
 Summary:        The openQA web-frontend, scheduler and tools
 License:        GPL-2.0-or-later

++++++ node_modules.obscpio ++++++
Binary files old/lodash-4.17.23.tgz and new/lodash-4.17.23.tgz differ
Binary files old/lodash-4.18.1.tgz and new/lodash-4.18.1.tgz differ

++++++ node_modules.spec.inc ++++++
--- /var/tmp/diff_new_pack.7FcBwH/_old  2026-04-11 22:32:00.550218755 +0200
+++ /var/tmp/diff_new_pack.7FcBwH/_new  2026-04-11 22:32:00.558219083 +0200
@@ -175,7 +175,7 @@
 Source1174:         
https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz
 Source1175:         
https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz
 Source1176:         
https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz
-Source1177:         
https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz#/lodash-4.17.23.tgz
+Source1177:         
https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz#/lodash-4.18.1.tgz
 Source1178:         
https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz
 Source1179:         
https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz#/mathml-tag-names-4.0.0.tgz
 Source1180:         
https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz#/mdn-data-2.27.1.tgz

++++++ openQA-5.1775753240.e466faa2.obscpio -> 
openQA-5.1775828534.8622a781.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/assets/javascripts/admin_needle.js 
new/openQA-5.1775828534.8622a781/assets/javascripts/admin_needle.js
--- old/openQA-5.1775753240.e466faa2/assets/javascripts/admin_needle.js 
2026-04-09 18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/assets/javascripts/admin_needle.js 
2026-04-10 15:42:14.000000000 +0200
@@ -149,9 +149,9 @@
       const handleSingleError = function (singleError) {
         $.each(nextIDs, function (index, id) {
           const errorElement = $('<li></li>');
-          errorElement.append($('#deletion-item-' + id).text());
+          errorElement.text($('#deletion-item-' + id).text());
           errorElement.append($('<br>'));
-          errorElement.append(singleError);
+          errorElement.append(document.createTextNode(singleError));
           failedList.append(errorElement);
           $('#deletion-item-' + id).remove();
         });
@@ -196,10 +196,10 @@
                 errorContext = $('#deletion-item-' + error.id).text();
               }
               if (errorContext) {
-                errorElement.append(errorContext);
+                errorElement.text(errorContext);
                 errorElement.append($('<br>'));
               }
-              errorElement.append(error.message);
+              errorElement.append(document.createTextNode(error.message));
               failedList.append(errorElement);
             });
           }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/assets/javascripts/admintable.js 
new/openQA-5.1775828534.8622a781/assets/javascripts/admintable.js
--- old/openQA-5.1775753240.e466faa2/assets/javascripts/admintable.js   
2026-04-09 18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/assets/javascripts/admintable.js   
2026-04-10 15:42:14.000000000 +0200
@@ -117,7 +117,7 @@
       showAdminTableRow(row);
     })
     .catch(error => {
-      addFlash('danger', error);
+      addFlash('danger', htmlEscape(error));
     });
 }
 
@@ -231,7 +231,7 @@
         handleAdminTableSubmit(tdElement, response, id);
       })
       .catch(error => {
-        addFlash('danger', error);
+        addFlash('danger', htmlEscape(error));
       });
   } else {
     // create new
@@ -248,7 +248,7 @@
         handleAdminTableSubmit(tdElement, response, response.id);
       })
       .catch(error => {
-        addFlash('danger', error);
+        addFlash('danger', htmlEscape(error));
       });
   }
 }
@@ -283,7 +283,7 @@
       removeAdminTableRow(tdElement);
     })
     .catch(error => {
-      addFlash('danger', error);
+      addFlash('danger', htmlEscape(error));
     });
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/assets/javascripts/ws_console.js 
new/openQA-5.1775828534.8622a781/assets/javascripts/ws_console.js
--- old/openQA-5.1775753240.e466faa2/assets/javascripts/ws_console.js   
2026-04-09 18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/assets/javascripts/ws_console.js   
2026-04-10 15:42:14.000000000 +0200
@@ -6,13 +6,13 @@
 }
 
 function logLine(msg) {
-  document.logElement.append('<== ' + msg + '\n');
+  document.logElement.append(document.createTextNode('<== ' + msg + '\n'));
   followLog();
 }
 
 function sendAndLogCommand(ws, command) {
   ws.send(command);
-  document.logElement.append('==> ' + command + '\n');
+  document.logElement.append(document.createTextNode('==> ' + command + '\n'));
   followLog();
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/codecov.yml 
new/openQA-5.1775828534.8622a781/codecov.yml
--- old/openQA-5.1775753240.e466faa2/codecov.yml        2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/codecov.yml        2026-04-10 
15:42:14.000000000 +0200
@@ -22,6 +22,7 @@
           - lib/OpenQA/
           - script/create_admin
           - script/initdb
+          - script/upgradedb
       tests:
         target: 100.0
         threshold: 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/etc/openqa/openqa.ini 
new/openQA-5.1775828534.8622a781/etc/openqa/openqa.ini
--- old/openQA-5.1775753240.e466faa2/etc/openqa/openqa.ini      2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/etc/openqa/openqa.ini      2026-04-10 
15:42:14.000000000 +0200
@@ -103,9 +103,9 @@
 ## The maximum amount of times a job will be restarted if the auto_clone_regex 
matches
 #auto_clone_limit = 20
 
-## A regex pattern that a "force_result" label description in job comments
-## must match to be accepted. If undefined and by default no rules are applied
-## and no description is expected
+## A regex pattern that a "force_result" label description in job comments must
+## match to be applied. If empty (the default), all "force_result" labels are
+## applied.
 #force_result_regex =
 
 ## Job results to collapse by default as parallel children on the test result
@@ -460,6 +460,10 @@
 #dynamic_job_limit_step = 10
 ## Minimum seconds between dynamic limit adjustments. Defaults to 60.
 #dynamic_job_limit_interval = 60
+## Minimum percentage of free storage in the file system where job results are
+## regularly stored on; scheduling is suspended if the free storage falls under
+## the specified percentage. Defaults to 0 which disables this check.
+#results_min_free_storage_space_percentage = 0
 
 ## Configuration of the label/bugref carry-over
 [carry_over]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/lib/OpenQA/Scheduler/Model/Jobs.pm 
new/openQA-5.1775828534.8622a781/lib/OpenQA/Scheduler/Model/Jobs.pm
--- old/openQA-5.1775753240.e466faa2/lib/OpenQA/Scheduler/Model/Jobs.pm 
2026-04-09 18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/lib/OpenQA/Scheduler/Model/Jobs.pm 
2026-04-10 15:42:14.000000000 +0200
@@ -10,7 +10,7 @@
 use Feature::Compat::Try;
 use OpenQA::Jobs::Constants;
 use OpenQA::Log qw(log_debug log_info log_warning);
-use OpenQA::Utils qw(random_string results_storage_above_threshold);
+use OpenQA::Utils qw(random_string results_storage_below_threshold);
 use OpenQA::Constants qw(WEBSOCKET_API_VERSION);
 use OpenQA::Schema;
 use OpenQA::Scheduler::DynamicLimit;
@@ -58,7 +58,7 @@
     my $schema = OpenQA::Schema->singleton;
     my $running = $schema->resultset('Jobs')->count({state => 
[OpenQA::Jobs::Constants::EXECUTION_STATES]});
     my $limit = $self->effective_job_limit;
-    if (results_storage_above_threshold()) {
+    if (results_storage_below_threshold()) {
         log_debug('Skipping job scheduling: free storage space in results 
directory below threshold');
         return ({}, {});
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/lib/OpenQA/Schema/Result/Comments.pm 
new/openQA-5.1775828534.8622a781/lib/OpenQA/Schema/Result/Comments.pm
--- old/openQA-5.1775753240.e466faa2/lib/OpenQA/Schema/Result/Comments.pm       
2026-04-09 18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/lib/OpenQA/Schema/Result/Comments.pm       
2026-04-10 15:42:14.000000000 +0200
@@ -199,7 +199,7 @@
     die "force_result labels only allowed for operators\n" if $c && 
!$c->is_operator;
     my $force_result_re = 
OpenQA::App->singleton->config->{global}->{force_result_regex} // '';
     die "force_result description '$description' does not match pattern 
'$force_result_re'\n"
-      unless ($description // '') =~ /$force_result_re/;
+      if $force_result_re && (($description // '') !~ /$force_result_re/);
     my $job = $self->job;
     die "force_result only allowed on finished jobs\n"
       unless OpenQA::Jobs::Constants::meta_state($job->state) eq 
OpenQA::Jobs::Constants::FINAL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/lib/OpenQA/Schema.pm 
new/openQA-5.1775828534.8622a781/lib/OpenQA/Schema.pm
--- old/openQA-5.1775753240.e466faa2/lib/OpenQA/Schema.pm       2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/lib/OpenQA/Schema.pm       2026-04-10 
15:42:14.000000000 +0200
@@ -19,6 +19,7 @@
 use OpenQA::Utils qw(:DEFAULT prjdir);
 use Mojo::File qw(path);
 use Feature::Compat::Try;
+use POSIX qw(setuid setgid);
 
 # after bumping the version please look at the instructions in the 
docs/Contributing.asciidoc file
 # on what scripts should be run and how
@@ -31,6 +32,14 @@
 use constant DEADLOCK_RETRIES => $ENV{OPENQA_DEADLOCK_RETRIES} // 3;
 use constant DEADLOCK_REGEX => qr/deadlock detected/;
 
+sub set_user ($user) {
+    return undef unless $user;
+    my $uid = getpwnam $user or die "No such login $user";
+    my $gid = getgrnam $user;
+    setgid($gid) or die "can't sgid to $user group" if $gid;
+    setuid($uid) or die "can't suid to $user";
+}
+
 sub set_search_path ($self, $search_path) {
     my $storage = $self->storage;
     $storage->dbh->do("SET search_path TO \"$search_path\"");
@@ -42,6 +51,8 @@
     $check_deploy //= 1;
     return $SINGLETON if $SINGLETON;
 
+    set_user($args{user});
+
     my $mode = $args{mode} || $ENV{OPENQA_DATABASE} || 'production';
     if ($mode eq 'test') {
         $SINGLETON = __PACKAGE__->connect($ENV{TEST_PG} // 
'DBI:Pg:dbname=openqa_test;host=/dev/shm/tpg');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/lib/OpenQA/Utils.pm 
new/openQA-5.1775828534.8622a781/lib/OpenQA/Utils.pm
--- old/openQA-5.1775753240.e466faa2/lib/OpenQA/Utils.pm        2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/lib/OpenQA/Utils.pm        2026-04-10 
15:42:14.000000000 +0200
@@ -144,7 +144,7 @@
   is_host_local
   format_tx_error
   regex_match
-  results_storage_above_threshold
+  results_storage_below_threshold
   config_autocommit_enabled
   load_avg
 );
@@ -933,15 +933,16 @@
     return \@load;
 }
 
-sub results_storage_above_threshold () {
-    my $percentage = 
OpenQA::App->singleton->config->{misc_limits}->{results_min_free_disk_space_percentage};
+sub results_storage_below_threshold () {
+    my $percentage = 
OpenQA::App->singleton->config->{scheduler}->{results_min_free_storage_space_percentage};
     return 0 unless defined $percentage;
     return 1 if $percentage == 100;
 
     my ($available_bytes, $total_bytes);
-    try { ($available_bytes, $total_bytes) = check_df(resultdir()) }
+    my $results_dir = resultdir();
+    try { ($available_bytes, $total_bytes) = check_df($results_dir) }
     catch ($e) {
-        log_warning "check_df failed: $e ";
+        log_error "Job assignments are prevented because free space under 
'$results_dir' cannot be determined: $e";
         return 1;
     }
     my $free_percentage = $available_bytes / $total_bytes * 100;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/lib/OpenQA/WebAPI/Controller/Test.pm 
new/openQA-5.1775828534.8622a781/lib/OpenQA/WebAPI/Controller/Test.pm
--- old/openQA-5.1775753240.e466faa2/lib/OpenQA/WebAPI/Controller/Test.pm       
2026-04-09 18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/lib/OpenQA/WebAPI/Controller/Test.pm       
2026-04-10 15:42:14.000000000 +0200
@@ -386,7 +386,7 @@
         $job_data;
     } @jobs;
     my %response = (data => \@scheduled);
-    $response{job_skipped_by_disk_limits} = 1 if 
results_storage_above_threshold();
+    $response{job_skipped_by_disk_limits} = 1 if 
results_storage_below_threshold();
     $self->render(json => \%response);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/lib/OpenQA/Worker/Job.pm 
new/openQA-5.1775828534.8622a781/lib/OpenQA/Worker/Job.pm
--- old/openQA-5.1775753240.e466faa2/lib/OpenQA/Worker/Job.pm   2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/lib/OpenQA/Worker/Job.pm   2026-04-10 
15:42:14.000000000 +0200
@@ -25,7 +25,7 @@
 use Scalar::Util 'looks_like_number';
 use File::Map 'map_file';
 use List::Util 'max';
-use Time::HiRes qw(usleep);
+use Time::HiRes qw(time usleep);
 use Feature::Compat::Try;
 
 use constant DEFAULT_UPLOAD_CHUNK_SIZE => 1_000_000;
@@ -1001,7 +1001,7 @@
         'upload_chunk.finish' => sub ($upload, $piece) {
             my $index = $piece->index;
             my $total = $piece->total;
-            my $spent = (time() - $t_start) || 1;
+            my $spent = (time - $t_start) || 1;
             my $kbytes = ($piece->end - $piece->start) / 1024;
             my $speed = sprintf '%.3f', $kbytes / $spent;
             my $show_in_autoinst_log = $index % 10 == 0 || $piece->is_last;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/package-lock.json 
new/openQA-5.1775828534.8622a781/package-lock.json
--- old/openQA-5.1775753240.e466faa2/package-lock.json  2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/package-lock.json  2026-04-10 
15:42:14.000000000 +0200
@@ -26,7 +26,7 @@
         "@stylistic/stylelint-plugin": "^5.0.1",
         "eslint": "^10.1.0",
         "eslint-config-prettier": "^10.1.8",
-        "eslint-plugin-prettier": "^5.5.4",
+        "eslint-plugin-prettier": "^5.5.5",
         "globals": "^17.4.0",
         "prettier": "^3.8.1",
         "stylelint": "^17.4.0",
@@ -2222,9 +2222,9 @@
       }
     },
     "node_modules/lodash": {
-      "version": "4.17.23",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz";,
-      "integrity": 
"sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
+      "version": "4.18.1",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz";,
+      "integrity": 
"sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
       "license": "MIT"
     },
     "node_modules/lodash.truncate": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/package.json 
new/openQA-5.1775828534.8622a781/package.json
--- old/openQA-5.1775753240.e466faa2/package.json       2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/package.json       2026-04-10 
15:42:14.000000000 +0200
@@ -16,7 +16,7 @@
     "@stylistic/stylelint-plugin": "^5.0.1",
     "eslint": "^10.1.0",
     "eslint-config-prettier": "^10.1.8",
-    "eslint-plugin-prettier": "^5.5.4",
+    "eslint-plugin-prettier": "^5.5.5",
     "globals": "^17.4.0",
     "prettier": "^3.8.1",
     "stylelint": "^17.4.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/script/initdb 
new/openQA-5.1775828534.8622a781/script/initdb
--- old/openQA-5.1775753240.e466faa2/script/initdb      2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/script/initdb      2026-04-10 
15:42:14.000000000 +0200
@@ -10,7 +10,6 @@
 use warnings;
 use DBIx::Class::DeploymentHandler;
 use File::Basename qw(dirname);
-use POSIX qw(getuid getgid setuid setgid);
 use OpenQA::Schema;
 use Getopt::Long;
 use IO::Dir;
@@ -52,15 +51,8 @@
 usage 0 if $help;
 usage 1 unless $result or $prepare_init or $init_database;
 
-if ($user) {
-    my $uid = getpwnam $user or die "No such login $user";
-    my $gid = getgrnam $user;
-    setgid($gid) || die "can't sgid to $user group" if $gid;
-    setuid($uid) || die "can't suid to $user";
-}
-
-my @databases = qw( PostgreSQL );
-my $schema = OpenQA::Schema::connect_db(deploy => 0, silent => 1, from_script 
=> 1);
+my $schema = OpenQA::Schema::connect_db(deploy => 0, silent => 1, from_script 
=> 1, user => $user);
+my @databases = qw(PostgreSQL);
 
 if ($prepare_init) {
     my $dh = DBIx::Class::DeploymentHandler->new(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/script/upgradedb 
new/openQA-5.1775828534.8622a781/script/upgradedb
--- old/openQA-5.1775753240.e466faa2/script/upgradedb   2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/script/upgradedb   2026-04-10 
15:42:14.000000000 +0200
@@ -13,7 +13,6 @@
 use Getopt::Long;
 use IO::Dir;
 use Fcntl ':mode';
-use POSIX qw(setuid setgid);
 
 my $prepare_upgrades = 0;
 my $upgrade_database = 0;
@@ -50,18 +49,8 @@
 usage 0 if $help;
 usage 1 unless $result or $prepare_upgrades or $upgrade_database;
 
-if ($user) {
-    my $uid = getpwnam $user or die "No such login $user";
-    my $gid = getgrnam $user;
-    if ($gid) {
-        setgid($gid) || die "can't sgid to $user group";
-    }
-    setuid($uid) || die "can't suid to $user";
-}
-
-my $schema = OpenQA::Schema::connect_db(deploy => 0, silent => 1, from_script 
=> 1);
-
-my @databases = qw( PostgreSQL );
+my $schema = OpenQA::Schema::connect_db(deploy => 0, silent => 1, from_script 
=> 1, user => $user);
+my @databases = qw(PostgreSQL);
 
 if ($prepare_upgrades) {
     my $dh = DH->new(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/t/04-scheduler.t 
new/openQA-5.1775828534.8622a781/t/04-scheduler.t
--- old/openQA-5.1775753240.e466faa2/t/04-scheduler.t   2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/t/04-scheduler.t   2026-04-10 
15:42:14.000000000 +0200
@@ -19,7 +19,7 @@
 use OpenQA::Jobs::Constants;
 require OpenQA::Test::Database;
 use OpenQA::Test::Utils qw(setup_mojo_app_with_default_worker_timeout 
simulate_load);
-use OpenQA::Utils qw(assetdir results_storage_above_threshold);
+use OpenQA::Utils qw(assetdir results_storage_below_threshold);
 use Test::Mojo;
 use Test::MockModule;
 use Test::Output qw(combined_like);
@@ -335,7 +335,7 @@
     undef $ws_send_error;
     $worker_db_obj->discard_changes;
     my $mock_utils = Test::MockModule->new('OpenQA::Utils');
-    local 
OpenQA::App->singleton->config->{misc_limits}->{results_min_free_disk_space_percentage}
 = 50;
+    local 
OpenQA::App->singleton->config->{scheduler}->{results_min_free_storage_space_percentage}
 = 50;
     $mock_utils->redefine(check_df => sub { (10, 100) });
     my @jobs;
     push @jobs, $jobs->create_from_settings(\%settings2) for 1 .. 10;
@@ -346,14 +346,14 @@
 
     subtest 'check_df fails' => sub {
         $mock_utils->redefine(check_df => sub { die 'df error' });
-        combined_like { results_storage_above_threshold() }
-        qr/check_df failed.*df error/, 'warning logged when check_df dies';
-        ok results_storage_above_threshold(), 'returns true (blocks) when 
check_df fails';
+        combined_like { results_storage_below_threshold() }
+        qr/job assignments.*prevented.*df error/i, 'warning logged when 
check_df dies';
+        ok results_storage_below_threshold(), 'returns true (blocks) when 
check_df fails';
     };
 
     subtest 'disk below threshold let job run' => sub {
         $mock_utils->redefine(check_df => sub { (60, 100) });
-        ok !results_storage_above_threshold(), 'returns false when disk is 
sufficient';
+        ok !results_storage_below_threshold(), 'returns false when disk is 
sufficient';
     };
     $jobs->find($_->id)->delete for @jobs;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1775753240.e466faa2/t/17-labels_carry_over.t 
new/openQA-5.1775828534.8622a781/t/17-labels_carry_over.t
--- old/openQA-5.1775753240.e466faa2/t/17-labels_carry_over.t   2026-04-09 
18:47:20.000000000 +0200
+++ new/openQA-5.1775828534.8622a781/t/17-labels_carry_over.t   2026-04-10 
15:42:14.000000000 +0200
@@ -138,10 +138,13 @@
 $schema->txn_begin;
 
 subtest 'failed->failed flag:carryover comments are carried over' => sub {
-    $t->post_ok("/api/v1/jobs/$old_job/comments", $auth => form => {text => 
'flag:carryover'})->status_is(200);
-    $t->post_ok("/api/v1/jobs/$job/set_done", $auth => form => {result => 
'failed'})->status_is(200);
+    my $comment_text = "flag:carryover 
label:force_result:softfailed:bsc#1257825\nAutomatic carryover";
+    $t->post_ok("/api/v1/jobs/$old_job/comments", $auth => form => {text => 
$comment_text})->status_is(200);
+    $t->post_ok("/api/v1/jobs/$job/set_done", $auth => form => {result => 
FAILED})->status_is(200);
     my @comments_new = @{comments("/tests/$job")};
-    like join('', @comments_new), qr(flag:carryover), 'Comment with 
flag:carryover present in new job';
+    my $expected_text = qr(flag:carryover.*label:force_result:softfailed);
+    like join('', @comments_new), $expected_text, 'Comment with flag:carryover 
present in new job';
+    is $jobs->find($job)->result, SOFTFAILED, 'force_result label from carried 
over comment is applied';
 };
 
 # Reset to a clean state
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1775753240.e466faa2/t/deploy.t 
new/openQA-5.1775828534.8622a781/t/deploy.t
--- old/openQA-5.1775753240.e466faa2/t/deploy.t 2026-04-09 18:47:20.000000000 
+0200
+++ new/openQA-5.1775828534.8622a781/t/deploy.t 2026-04-10 15:42:14.000000000 
+0200
@@ -105,9 +105,12 @@
     is $?, 0, 'initdb ok for new version';
     is $out, '', 'initdb shows no errors for new version';
     my $upgradedb = "$FindBin::RealBin/../script/upgradedb";
-    qx{$upgradedb --dir=$new_schema_dir --prepare_upgrades};
+    $out = qx{$upgradedb --dir=$new_schema_dir --prepare_upgrades};
     is $?, 0, 'upgradedb ok';
     is $out, '', 'upgradedb shows no errors';
+    $out = qx{$upgradedb --dir=$new_schema_dir --prepare_upgrades};
+    is $? >> 8, 1, 'upgradedb exists with non-zero return code if schema dir 
already exists';
+    like $out, qr/use.*--force/i, 'upgradedb suggests using --force if schmea 
dir already exists';
 };
 
 done_testing();

++++++ openQA.obsinfo ++++++
--- /var/tmp/diff_new_pack.7FcBwH/_old  2026-04-11 22:32:16.118855513 +0200
+++ /var/tmp/diff_new_pack.7FcBwH/_new  2026-04-11 22:32:16.126855840 +0200
@@ -1,5 +1,5 @@
 name: openQA
-version: 5.1775753240.e466faa2
-mtime: 1775753240
-commit: e466faa222210dc534a7f484da9a1d5aa01686e1
+version: 5.1775828534.8622a781
+mtime: 1775828534
+commit: 8622a7811a51b3959fd7433f0b69418778a57e84
 

Reply via email to