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-01-29 17:45:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openQA (Old)
 and      /work/SRC/openSUSE:Factory/.openQA.new.1995 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openQA"

Thu Jan 29 17:45:38 2026 rev:802 rq:1329691 version:5.1769603414.6c0fa72e

Changes:
--------
--- /work/SRC/openSUSE:Factory/openQA/openQA.changes    2026-01-28 
15:16:01.272159219 +0100
+++ /work/SRC/openSUSE:Factory/.openQA.new.1995/openQA.changes  2026-01-29 
17:48:18.317876959 +0100
@@ -1,0 +2,9 @@
+Wed Jan 28 15:07:49 UTC 2026 - [email protected]
+
+- Update to version 5.1769603414.6c0fa72e:
+  * Handle links on test_log on missing git repo extension
+  * test: Consider `Test.pm` fully covered
+  * test: Extend tests for showing dependency graph
+  * fix: Merge parallel clusters correctly for displaying dependency tree
+
+-------------------------------------------------------------------

Old:
----
  openQA-5.1769550212.662a4f95.obscpio

New:
----
  openQA-5.1769603414.6c0fa72e.obscpio

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

Other differences:
------------------
++++++ openQA-client-test.spec ++++++
--- /var/tmp/diff_new_pack.qeLCWF/_old  2026-01-29 17:48:21.025992967 +0100
+++ /var/tmp/diff_new_pack.qeLCWF/_new  2026-01-29 17:48:21.029993138 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-client
 Name:           %{short_name}-test
-Version:        5.1769550212.662a4f95
+Version:        5.1769603414.6c0fa72e
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-devel-test.spec ++++++
--- /var/tmp/diff_new_pack.qeLCWF/_old  2026-01-29 17:48:21.177999479 +0100
+++ /var/tmp/diff_new_pack.qeLCWF/_new  2026-01-29 17:48:21.194000164 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-devel
 Name:           %{short_name}-test
-Version:        5.1769550212.662a4f95
+Version:        5.1769603414.6c0fa72e
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-test.spec ++++++
--- /var/tmp/diff_new_pack.qeLCWF/_old  2026-01-29 17:48:21.318005476 +0100
+++ /var/tmp/diff_new_pack.qeLCWF/_new  2026-01-29 17:48:21.326005819 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA
 Name:           %{short_name}-test
-Version:        5.1769550212.662a4f95
+Version:        5.1769603414.6c0fa72e
 Release:        0
 Summary:        Test package for openQA
 License:        GPL-2.0-or-later

++++++ openQA-worker-test.spec ++++++
--- /var/tmp/diff_new_pack.qeLCWF/_old  2026-01-29 17:48:21.562015929 +0100
+++ /var/tmp/diff_new_pack.qeLCWF/_new  2026-01-29 17:48:21.582016786 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-worker
 Name:           %{short_name}-test
-Version:        5.1769550212.662a4f95
+Version:        5.1769603414.6c0fa72e
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA.spec ++++++
--- /var/tmp/diff_new_pack.qeLCWF/_old  2026-01-29 17:48:21.734023298 +0100
+++ /var/tmp/diff_new_pack.qeLCWF/_new  2026-01-29 17:48:21.734023298 +0100
@@ -99,7 +99,7 @@
 %define devel_requires %devel_no_selenium_requires chromedriver
 
 Name:           openQA
-Version:        5.1769550212.662a4f95
+Version:        5.1769603414.6c0fa72e
 Release:        0
 Summary:        The openQA web-frontend, scheduler and tools
 License:        GPL-2.0-or-later

++++++ openQA-5.1769550212.662a4f95.obscpio -> 
openQA-5.1769603414.6c0fa72e.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1769550212.662a4f95/codecov.yml 
new/openQA-5.1769603414.6c0fa72e/codecov.yml
--- old/openQA-5.1769550212.662a4f95/codecov.yml        2026-01-27 
22:43:32.000000000 +0100
+++ new/openQA-5.1769603414.6c0fa72e/codecov.yml        2026-01-28 
13:30:14.000000000 +0100
@@ -25,6 +25,7 @@
           - lib/OpenQA/Utils.pm
           - lib/OpenQA/WebAPI/Controller/File.pm
           - lib/OpenQA/WebAPI/Controller/Step.pm
+          - lib/OpenQA/WebAPI/Controller/Test.pm
       tests:
         target: 100.0
         threshold: 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1769550212.662a4f95/lib/OpenQA/Utils.pm 
new/openQA-5.1769603414.6c0fa72e/lib/OpenQA/Utils.pm
--- old/openQA-5.1769550212.662a4f95/lib/OpenQA/Utils.pm        2026-01-27 
22:43:32.000000000 +0100
+++ new/openQA-5.1769603414.6c0fa72e/lib/OpenQA/Utils.pm        2026-01-28 
13:30:14.000000000 +0100
@@ -230,11 +230,12 @@
 sub git_commit_url ($repo_url) {
     return '' unless defined $repo_url;
     if ($repo_url =~ m/^http(s?)/) {
-        $repo_url =~ s{\.git$}{/commit/};
-        return $repo_url;
+        $repo_url =~ s{\.git$}{};
+        return $repo_url . '/commit/';
     }
     my @url_tokenized = split /:/, $repo_url;
-    $url_tokenized[1] =~ s{\.git$}{/commit/};
+    $url_tokenized[1] =~ s{\.git$}{};
+    $url_tokenized[1] .= '/commit/';
     my @githost = split('@', $url_tokenized[0]);
     return "https://$githost[1]/$url_tokenized[1]";;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1769550212.662a4f95/lib/OpenQA/WebAPI/Controller/Test.pm 
new/openQA-5.1769603414.6c0fa72e/lib/OpenQA/WebAPI/Controller/Test.pm
--- old/openQA-5.1769550212.662a4f95/lib/OpenQA/WebAPI/Controller/Test.pm       
2026-01-27 22:43:32.000000000 +0100
+++ new/openQA-5.1769603414.6c0fa72e/lib/OpenQA/WebAPI/Controller/Test.pm       
2026-01-28 13:30:14.000000000 +0100
@@ -982,8 +982,10 @@
     my $cluster = $dependency_data->{cluster};
     if ($job1_cluster_id && $job2_cluster_id) {
         # both jobs are already part of a cluster: merge clusters unless 
they're already the same
-        push(@{$cluster->{$job1_cluster_id}}, @{delete 
$cluster_by_job->{$job2_cluster_id}})
-          unless $job1_cluster_id eq $job2_cluster_id;
+        return undef if $job1_cluster_id eq $job2_cluster_id;
+        my $jobs_to_move = delete $cluster->{$job2_cluster_id};
+        push(@{$cluster->{$job1_cluster_id}}, @$jobs_to_move);
+        $cluster_by_job->{$_} = $job1_cluster_id for @$jobs_to_move;
     }
     elsif ($job1_cluster_id) {
         # only job1 is already in a cluster: move job2 into that cluster, too
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1769550212.662a4f95/t/16-utils.t 
new/openQA-5.1769603414.6c0fa72e/t/16-utils.t
--- old/openQA-5.1769550212.662a4f95/t/16-utils.t       2026-01-27 
22:43:32.000000000 +0100
+++ new/openQA-5.1769603414.6c0fa72e/t/16-utils.t       2026-01-28 
13:30:14.000000000 +0100
@@ -410,6 +410,10 @@
         is git_commit_url("git\@github.com:$repo.git"), 
"https://github.com/$repo/commit/";, 'correct git url for ssh';
         is git_commit_url("https://github.com/$repo.git";), 
"https://github.com/$repo/commit/";,
           'correct git url for http';
+        is git_commit_url("git\@github.com:$repo"), 
"https://github.com/$repo/commit/";,
+          'correct ssh url without .git extension';
+        is git_commit_url("https://github.com/$repo";), 
"https://github.com/$repo/commit/";,
+          'correct https url without .git extension';
     };
     subtest 'custom OPENQA_BASEDIR and OPENQA_SHAREDIR' => sub {
         local $ENV{OPENQA_BASEDIR} = '/tmp/test';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1769550212.662a4f95/t/ui/16-tests_dependencies.t 
new/openQA-5.1769603414.6c0fa72e/t/ui/16-tests_dependencies.t
--- old/openQA-5.1769550212.662a4f95/t/ui/16-tests_dependencies.t       
2026-01-27 22:43:32.000000000 +0100
+++ new/openQA-5.1769603414.6c0fa72e/t/ui/16-tests_dependencies.t       
2026-01-28 13:30:14.000000000 +0100
@@ -15,8 +15,38 @@
 use OpenQA::Client;
 use OpenQA::SeleniumTest;
 use OpenQA::Schema::Result::JobDependencies;
-use OpenQA::JobDependencies::Constants qw(CHAINED DIRECTLY_CHAINED);
+use OpenQA::JobDependencies::Constants qw(CHAINED DIRECTLY_CHAINED PARALLEL);
 use OpenQA::Jobs::Constants;
+use OpenQA::WebAPI::Controller::Test;
+
+subtest 'detailed behavior of merging parallel jobs into clusters' => sub {
+    my (%clusters, %cluster_by_job);
+    my %data = (cluster => \%clusters, cluster_by_job => \%cluster_by_job);
+    my $add_parallel_dependency = sub ($parent_job_id, $child_job_id) {
+        OpenQA::WebAPI::Controller::Test::_add_dependency_to_graph(\%data, 
$parent_job_id, $child_job_id, PARALLEL);
+    };
+
+    $add_parallel_dependency->(1, 2);
+    is_deeply \%clusters, {cluster_2 => [2, 1]}, 'new cluster created';
+
+    $add_parallel_dependency->(3, 4);
+    is_deeply \%clusters, {cluster_2 => [2, 1], cluster_4 => [4, 3]}, 'another 
distinct cluster created';
+    is_deeply \%cluster_by_job, {1 => 'cluster_2', 2 => 'cluster_2', 3 => 
'cluster_4', 4 => 'cluster_4'},
+      'clusters tracked by job';
+
+    $add_parallel_dependency->(3, 5);
+    is_deeply \%clusters, {cluster_2 => [2, 1], cluster_4 => [4, 3, 5]}, 
'child added into existing cluster';
+
+    $add_parallel_dependency->(6, 5);
+    is_deeply \%clusters, {cluster_2 => [2, 1], cluster_4 => [4, 3, 5, 6]}, 
'parent added into existing cluster';
+
+    $add_parallel_dependency->(3, 5);
+    is_deeply \%clusters, {cluster_2 => [2, 1], cluster_4 => [4, 3, 5, 6]}, 
'no change if jobs already in same cluster';
+
+    $add_parallel_dependency->(6, 1);
+    is_deeply \%clusters, {cluster_2 => [2, 1, 4, 3, 5, 6]}, 'the two existing 
clusters were merged';
+    is_deeply \%cluster_by_job, {map { $_ => 'cluster_2' } 1 .. 6}, 'all jobs 
in one cluster after merge';
+};
 
 my $test_case = OpenQA::Test::Case->new;
 my $schema_name = OpenQA::Test::Database::generate_schema_name;
@@ -227,5 +257,16 @@
     };
 };
 
+subtest 'overall behavior with advanced clusters' => sub {
+    $dependencies->create({child_job_id => 99940, parent_job_id => 99963, 
dependency => PARALLEL});
+    $dependencies->create({child_job_id => 80000, parent_job_id => 99940, 
dependency => PARALLEL});
+    my $json = 
$t->get_ok('/tests/99961/dependencies_ajax')->status_is(200)->tx->res->json;
+    my @expected_cluster = (80000, 99940, 99961, 99963), my $present_clusters 
= $json->{cluster};
+    my @present_cluster_ids = keys %$present_clusters;
+    is @present_cluster_ids, 1, 'exactly one cluster present';
+    is_deeply [sort @{$present_clusters->{$present_cluster_ids[0]}}], 
\@expected_cluster,
+      'parallel jobs shown in one big cluster';
+};
+
 kill_driver();
 done_testing();

++++++ openQA.obsinfo ++++++
--- /var/tmp/diff_new_pack.qeLCWF/_old  2026-01-29 17:48:36.406651833 +0100
+++ /var/tmp/diff_new_pack.qeLCWF/_new  2026-01-29 17:48:36.414652176 +0100
@@ -1,5 +1,5 @@
 name: openQA
-version: 5.1769550212.662a4f95
-mtime: 1769550212
-commit: 662a4f9509bcf8ede5f5f5fa2ac947596fbba7ea
+version: 5.1769603414.6c0fa72e
+mtime: 1769603414
+commit: 6c0fa72ec7b1b63bbc5faec28aaf246adb5acd8e
 

Reply via email to