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-02-24 15:38:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Tue Feb 24 15:38:28 2026 rev:810 rq:1334553 version:5.1771846996.b67911c1 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2026-02-23 16:12:08.108316713 +0100 +++ /work/SRC/openSUSE:Factory/.openQA.new.1977/openQA.changes 2026-02-24 15:39:03.239548298 +0100 @@ -1,0 +2,8 @@ +Mon Feb 23 16:01:06 UTC 2026 - [email protected] + +- Update to version 5.1771846996.b67911c1: + * fix: update ajv to fix moderate severity ReDoS vulnerability + * fix: update minimatch override to fix high severity ReDoS vulnerability + * openqa-load-templates: Slightly simplify + +------------------------------------------------------------------- Old: ---- openQA-5.1771626210.b82f14f2.obscpio New: ---- openQA-5.1771846996.b67911c1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.WQ7Icz/_old 2026-02-24 15:39:04.603604921 +0100 +++ /var/tmp/diff_new_pack.WQ7Icz/_new 2026-02-24 15:39:04.607605087 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1771626210.b82f14f2 +Version: 5.1771846996.b67911c1 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.WQ7Icz/_old 2026-02-24 15:39:04.639606416 +0100 +++ /var/tmp/diff_new_pack.WQ7Icz/_new 2026-02-24 15:39:04.639606416 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1771626210.b82f14f2 +Version: 5.1771846996.b67911c1 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.WQ7Icz/_old 2026-02-24 15:39:04.671607744 +0100 +++ /var/tmp/diff_new_pack.WQ7Icz/_new 2026-02-24 15:39:04.671607744 +0100 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1771626210.b82f14f2 +Version: 5.1771846996.b67911c1 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.WQ7Icz/_old 2026-02-24 15:39:04.703609073 +0100 +++ /var/tmp/diff_new_pack.WQ7Icz/_new 2026-02-24 15:39:04.707609239 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1771626210.b82f14f2 +Version: 5.1771846996.b67911c1 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.WQ7Icz/_old 2026-02-24 15:39:04.739610567 +0100 +++ /var/tmp/diff_new_pack.WQ7Icz/_new 2026-02-24 15:39:04.743610733 +0100 @@ -99,7 +99,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1771626210.b82f14f2 +Version: 5.1771846996.b67911c1 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ node_modules.obscpio ++++++ Binary files old/@isaacs-balanced-match-4.0.1.tgz and new/@isaacs-balanced-match-4.0.1.tgz differ Binary files old/@isaacs-brace-expansion-5.0.1.tgz and new/@isaacs-brace-expansion-5.0.1.tgz differ Binary files old/ajv-6.12.6.tgz and new/ajv-6.12.6.tgz differ Binary files old/ajv-6.14.0.tgz and new/ajv-6.14.0.tgz differ Binary files old/balanced-match-4.0.4.tgz and new/balanced-match-4.0.4.tgz differ Binary files old/brace-expansion-5.0.3.tgz and new/brace-expansion-5.0.3.tgz differ Binary files old/minimatch-10.1.2.tgz and new/minimatch-10.1.2.tgz differ Binary files old/minimatch-10.2.2.tgz and new/minimatch-10.2.2.tgz differ ++++++ node_modules.spec.inc ++++++ --- /var/tmp/diff_new_pack.WQ7Icz/_old 2026-02-24 15:39:05.491641784 +0100 +++ /var/tmp/diff_new_pack.WQ7Icz/_new 2026-02-24 15:39:05.499642117 +0100 @@ -11,20 +11,20 @@ Source1010: https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz#/@humanfs-node-0.16.7.tgz Source1011: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#/@humanwhocodes-module-importer-1.0.1.tgz Source1012: https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz#/@humanwhocodes-retry-0.4.3.tgz -Source1013: https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#/@isaacs-balanced-match-4.0.1.tgz -Source1014: https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz#/@isaacs-brace-expansion-5.0.1.tgz -Source1015: https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz#/@pkgr-core-0.2.9.tgz -Source1016: https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz#/@popperjs-core-2.11.8.tgz -Source1017: https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#/@types-estree-1.0.8.tgz -Source1018: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#/@types-json-schema-7.0.15.tgz -Source1019: https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.4.tgz#/ace-builds-1.43.4.tgz -Source1020: https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz#/acorn-8.15.0.tgz -Source1021: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz -Source1022: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz -Source1023: https://registry.npmjs.org/anser/-/anser-2.3.2.tgz#/anser-2.3.2.tgz -Source1024: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz -Source1025: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz -Source1026: https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz#/bootstrap-5.3.8.tgz +Source1013: https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz#/@pkgr-core-0.2.9.tgz +Source1014: https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz#/@popperjs-core-2.11.8.tgz +Source1015: https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#/@types-estree-1.0.8.tgz +Source1016: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#/@types-json-schema-7.0.15.tgz +Source1017: https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.4.tgz#/ace-builds-1.43.4.tgz +Source1018: https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz#/acorn-8.15.0.tgz +Source1019: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz +Source1020: https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz#/ajv-6.14.0.tgz +Source1021: https://registry.npmjs.org/anser/-/anser-2.3.2.tgz#/anser-2.3.2.tgz +Source1022: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz +Source1023: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz +Source1024: https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz#/balanced-match-4.0.4.tgz +Source1025: https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz#/bootstrap-5.3.8.tgz +Source1026: https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz#/brace-expansion-5.0.3.tgz Source1027: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#/callsites-3.1.0.tgz Source1028: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#/chalk-4.1.2.tgz Source1029: https://registry.npmjs.org/chosen-js/-/chosen-js-1.8.7.tgz#/chosen-js-1.8.7.tgz @@ -114,7 +114,7 @@ Source1113: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz Source1114: https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz#/lodash-4.17.23.tgz Source1115: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#/lodash.merge-4.6.2.tgz -Source1116: https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz#/minimatch-10.1.2.tgz +Source1116: https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz#/minimatch-10.2.2.tgz Source1117: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#/ms-2.1.3.tgz Source1118: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz Source1119: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz ++++++ openQA-5.1771626210.b82f14f2.obscpio -> openQA-5.1771846996.b67911c1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771626210.b82f14f2/package-lock.json new/openQA-5.1771846996.b67911c1/package-lock.json --- old/openQA-5.1771626210.b82f14f2/package-lock.json 2026-02-20 23:23:30.000000000 +0100 +++ new/openQA-5.1771846996.b67911c1/package-lock.json 2026-02-23 12:43:16.000000000 +0100 @@ -209,29 +209,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@pkgr/core": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", @@ -299,9 +276,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -343,6 +320,16 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/bootstrap": { "version": "5.3.8", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", @@ -362,6 +349,19 @@ "@popperjs/core": "^2.11.8" } }, + "node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1425,16 +1425,16 @@ "dev": true }, "node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771626210.b82f14f2/package.json new/openQA-5.1771846996.b67911c1/package.json --- old/openQA-5.1771626210.b82f14f2/package.json 2026-02-20 23:23:30.000000000 +0100 +++ new/openQA-5.1771846996.b67911c1/package.json 2026-02-23 12:43:16.000000000 +0100 @@ -34,6 +34,6 @@ "dagre-d3": { "d3": "npm:d3" }, - "minimatch": "10.1.2" + "minimatch": "10.2.2" } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771626210.b82f14f2/script/openqa-load-templates new/openQA-5.1771846996.b67911c1/script/openqa-load-templates --- old/openQA-5.1771626210.b82f14f2/script/openqa-load-templates 2026-02-20 23:23:30.000000000 +0100 +++ new/openQA-5.1771846996.b67911c1/script/openqa-load-templates 2026-02-23 12:43:16.000000000 +0100 @@ -126,43 +126,46 @@ })->res; } -sub post_entry ($table, $entry) { - my %param; +sub handle_job_groups ($entry) { + # Try to create the group first + my $job_groups_url = $url->clone->path($options{apibase} . '/job_groups'); + my $create_res = $client->post($job_groups_url, form => {name => $entry->{group_name}})->res; + # this is what we get from the API if the group exists + my $exists = ($create_res->code == 500 && $create_res->json->{already_exists}); + # return 0 (indicating no change) unless --clean or --update passed + return 0 if ($exists && !$options{update} && !$options{clean}); + print_error($create_res) unless ($create_res->is_success || $exists); + # Post the job template YAML - if ($table eq 'JobGroups') { - # Try to create the group first - my $job_groups_url = $url->clone->path($options{apibase} . '/job_groups'); - my $create_res = $client->post($job_groups_url, form => {name => $entry->{group_name}})->res; - # this is what we get from the API if the group exists - my $exists = ($create_res->code == 500 && $create_res->json->{already_exists}); - # return 0 (indicating no change) unless --clean or --update passed - return 0 if ($exists && !$options{update} && !$options{clean}); - print_error($create_res) unless ($create_res->is_success || $exists); - # Post the job template YAML - - my $yaml_res = post_yaml_templates($entry->{group_name}, $entry->{template}); - print_error($yaml_res) unless $yaml_res->is_success; - return 1; - } + my $yaml_res = post_yaml_templates($entry->{group_name}, $entry->{template}); + print_error($yaml_res) unless $yaml_res->is_success; + return 1; +} - if ($table eq 'JobTemplates') { - unless (defined($entry->{prio})) { - # we have to migrate the prio from the TestSuite to the JobTemplate - for my $ts (@{$info->{TestSuites}}) { - if ($ts->{name} eq $entry->{test_suite}{name}) { - $entry->{prio} = $ts->{prio}; - } +sub handle_job_templates ($entry) { + unless (defined($entry->{prio})) { + # we have to migrate the prio from the TestSuite to the JobTemplate + for my $ts (@{$info->{TestSuites}}) { + if ($ts->{name} eq $entry->{test_suite}{name}) { + $entry->{prio} = $ts->{prio}; } } - unless (defined($entry->{group_name})) { - # we have to create a group_name from the Product - my $gn = $entry->{product}{distri}; - if ($entry->{product}{version} ne '*') { - $gn .= "-" . $entry->{product}{version}; - } - $entry->{group_name} = $gn; + } + unless (defined($entry->{group_name})) { + # we have to create a group_name from the Product + my $gn = $entry->{product}{distri}; + if ($entry->{product}{version} ne '*') { + $gn .= "-" . $entry->{product}{version}; } + $entry->{group_name} = $gn; } +} + +sub post_entry ($table, $entry) { + my %param; + + return handle_job_groups($entry) if $table eq 'JobGroups'; + handle_job_templates($entry) if $table eq 'JobTemplates'; for my $key (keys %{$entry}) { if ($key eq 'machine' && defined $entry->{machine}{name}) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771626210.b82f14f2/t/40-script_load_dump_templates.t new/openQA-5.1771846996.b67911c1/t/40-script_load_dump_templates.t --- old/openQA-5.1771626210.b82f14f2/t/40-script_load_dump_templates.t 2026-02-20 23:23:30.000000000 +0100 +++ new/openQA-5.1771846996.b67911c1/t/40-script_load_dump_templates.t 2026-02-23 12:43:16.000000000 +0100 @@ -252,4 +252,68 @@ # make sure all job templates are for opensuse group not fedora group check_property($schema, 'JobTemplates', 'group_id', [$opensuse->id, $opensuse->id, $opensuse->id]); +subtest 'missing fields in job templates' => sub { + $schema->resultset($_)->delete for qw(Machines TestSuites Products JobTemplates JobGroups); + # prepare dependencies: machine and testsuite + $schema->resultset('Machines')->create({name => '64bit', backend => 'qemu'}); + $schema->resultset('TestSuites')->create({name => 'textmode'}); + $schema->resultset('Products') + ->create({name => '', arch => 'x86_64', distri => 'opensuse', flavor => 'DVD', version => '42.3'}); + $schema->resultset('Products') + ->create({name => '', arch => 'x86_64', distri => 'opensuse', flavor => 'DVD', version => '*'}); + + my ($fh, $tempfilename) = tempfile(UNLINK => 1, SUFFIX => '.pl'); + print $fh <<'EOF'; +{ + JobGroups => [], + JobTemplates => [ + { + machine => {name => '64bit'}, + product => { + arch => 'x86_64', + distri => 'opensuse', + flavor => 'DVD', + version => '42.3', + }, + test_suite => {name => 'textmode'}, + }, + { + machine => {name => '64bit'}, + product => { + arch => 'x86_64', + distri => 'opensuse', + flavor => 'DVD', + version => '*', + }, + test_suite => {name => 'textmode'}, + }, + ], + Machines => [], + Products => [], + TestSuites => [ + { + name => 'textmode', + prio => 60, + }, + ], +} +EOF + close $fh; + + my $args = "$base_args $tempfilename"; + # 2 JobTemplates, 1 TestSuite (others exist but will be '0 added') + my $expected = qr/JobTemplates +=> \{ added => 2, of => 2 \}/; + test_once $args, $expected, 'imported templates with missing fields'; + + my @jts = sort { $a->product->version cmp $b->product->version } $schema->resultset('JobTemplates')->all; + is @jts, 2, 'two job templates loaded'; + is $jts[0]->product->version, '*', 'first jt has version *'; + is $jts[0]->group->name, 'opensuse', 'correct group name for version *'; + is $jts[0]->prio, 60, 'prio migrated from test suite'; + + is $jts[1]->product->version, '42.3', 'second jt has version 42.3'; + is $jts[1]->group->name, 'opensuse-42.3', 'correct group name for version 42.3'; + is $jts[1]->prio, 60, 'prio migrated from test suite'; +}; + done_testing; ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.WQ7Icz/_old 2026-02-24 15:39:18.220170082 +0100 +++ /var/tmp/diff_new_pack.WQ7Icz/_new 2026-02-24 15:39:18.232170579 +0100 @@ -1,5 +1,5 @@ name: openQA -version: 5.1771626210.b82f14f2 -mtime: 1771626210 -commit: b82f14f264a3bfd05ca065a2fe9ef1e22f3f580f +version: 5.1771846996.b67911c1 +mtime: 1771846996 +commit: b67911c1b3876efb4f401ab0a48964e715b8c1ee
