Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2025-08-19 16:47:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.1085 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Tue Aug 19 16:47:52 2025 rev:735 rq:1300295 version:5.1755609067.e3c951fe Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2025-08-18 16:09:15.581435365 +0200 +++ /work/SRC/openSUSE:Factory/.openQA.new.1085/openQA.changes 2025-08-19 16:49:28.843260460 +0200 @@ -1,0 +2,9 @@ +Tue Aug 19 13:11:46 UTC 2025 - ok...@suse.com + +- Update to version 5.1755609067.e3c951fe: + * Stash gru_dependencies to avoid helper usage in view + * Move infopanel gru task link creation to the controller + * Create test for GRU task in test details + * Link minion job from openQA job with waiting task + +------------------------------------------------------------------- Old: ---- openQA-5.1755504216.b51ff4b1.obscpio New: ---- openQA-5.1755609067.e3c951fe.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.APNyqA/_old 2025-08-19 16:49:29.863302931 +0200 +++ /var/tmp/diff_new_pack.APNyqA/_new 2025-08-19 16:49:29.867303098 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1755504216.b51ff4b1 +Version: 5.1755609067.e3c951fe Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.APNyqA/_old 2025-08-19 16:49:29.891304097 +0200 +++ /var/tmp/diff_new_pack.APNyqA/_new 2025-08-19 16:49:29.891304097 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1755504216.b51ff4b1 +Version: 5.1755609067.e3c951fe Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.APNyqA/_old 2025-08-19 16:49:29.915305097 +0200 +++ /var/tmp/diff_new_pack.APNyqA/_new 2025-08-19 16:49:29.919305263 +0200 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1755504216.b51ff4b1 +Version: 5.1755609067.e3c951fe Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.APNyqA/_old 2025-08-19 16:49:29.939306096 +0200 +++ /var/tmp/diff_new_pack.APNyqA/_new 2025-08-19 16:49:29.943306262 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1755504216.b51ff4b1 +Version: 5.1755609067.e3c951fe Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.APNyqA/_old 2025-08-19 16:49:29.983307928 +0200 +++ /var/tmp/diff_new_pack.APNyqA/_new 2025-08-19 16:49:29.987308094 +0200 @@ -97,7 +97,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1755504216.b51ff4b1 +Version: 5.1755609067.e3c951fe Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-5.1755504216.b51ff4b1.obscpio -> openQA-5.1755609067.e3c951fe.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1755504216.b51ff4b1/lib/OpenQA/Shared/Plugin/Gru.pm new/openQA-5.1755609067.e3c951fe/lib/OpenQA/Shared/Plugin/Gru.pm --- old/openQA-5.1755504216.b51ff4b1/lib/OpenQA/Shared/Plugin/Gru.pm 2025-08-18 10:03:36.000000000 +0200 +++ new/openQA-5.1755609067.e3c951fe/lib/OpenQA/Shared/Plugin/Gru.pm 2025-08-19 15:11:07.000000000 +0200 @@ -211,7 +211,7 @@ @ttl, priority => $priority, delay => $delay, - notes => {gru_id => $gru_id, @notes}, + notes => {gru_id => $gru_id, "gru_id_$gru_id" => 1, @notes}, defined $lax ? (lax => $lax) : (), defined $parents ? (parents => $parents) : (), ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1755504216.b51ff4b1/lib/OpenQA/WebAPI/Controller/Test.pm new/openQA-5.1755609067.e3c951fe/lib/OpenQA/WebAPI/Controller/Test.pm --- old/openQA-5.1755504216.b51ff4b1/lib/OpenQA/WebAPI/Controller/Test.pm 2025-08-18 10:03:36.000000000 +0200 +++ new/openQA-5.1755609067.e3c951fe/lib/OpenQA/WebAPI/Controller/Test.pm 2025-08-19 15:11:07.000000000 +0200 @@ -522,8 +522,23 @@ }); } +sub _gru_tasks_items ($self, $job) { + return [ + map { + my $task = $_->gru_task; + my $label = 'id: ' . $task->id . ', name: ' . $task->taskname; + my $href = ''; + if ($self->is_operator) { + $href = $self->url_for('/minion/jobs')->query(note => 'gru_id_' . $task->id, task => $task->taskname); + } + {label => $label, href => $href} + } $job->gru_dependencies + ]; +} + sub infopanel ($self) { my $job = $self->_stash_job or return $self->reply->not_found; + $self->stash(gru_dependencies => $self->_gru_tasks_items($job)); $self->stash({worker => $job->assigned_worker, additional_data => 1}); $self->_stash_clone_info($job); $self->render('test/infopanel'); @@ -557,6 +572,7 @@ show_investigation => $job->should_show_investigation, show_live_tab => $job->state ne DONE, }); + $self->stash(gru_dependencies => $self->_gru_tasks_items($job)); $self->_stash_clone_info($job); $self->render('test/result'); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1755504216.b51ff4b1/t/ui/18-tests-details.t new/openQA-5.1755609067.e3c951fe/t/ui/18-tests-details.t --- old/openQA-5.1755504216.b51ff4b1/t/ui/18-tests-details.t 2025-08-18 10:03:36.000000000 +0200 +++ new/openQA-5.1755609067.e3c951fe/t/ui/18-tests-details.t 2025-08-19 15:11:07.000000000 +0200 @@ -563,6 +563,49 @@ my $t = Test::Mojo->new('OpenQA::WebAPI'); +subtest 'GRU dependency shown in infopanel' => sub { + my $job = $jobs->find(99927); + $job->update({state => SCHEDULED, result => NONE}); + + my $task = $schema->resultset('GruTasks')->create( + { + taskname => 'git_clone', + args => {}, + run_at => DateTime->now(), + priority => 0, + }); + my $gru_dep = $schema->resultset('GruDependencies')->create( + { + job_id => $job->id, + gru_task_id => $task->id, + }); + + $driver->get('/tests/' . $job->id); + wait_for_ajax msg => 'job with GRU dependency loaded'; + + my $gru_task_id = $gru_dep->gru_task_id; + + subtest 'operator sees link and it works' => sub { + ok my $link = $driver->find_element_by_link_text("id: $gru_task_id, name: git_clone"), 'found link'; + like $link->get_attribute('href'), qr{minion/jobs\?note=gru_id_$gru_task_id&task=git_clone}, + 'link to minion job shown'; + }; + + subtest 'guest user sees no link' => sub { + $driver->get('/logout'); + wait_for_ajax msg => 'job with GRU dependency loaded'; + $driver->get('/tests/' . $job->id); + wait_for_ajax msg => 'job with GRU dependency loaded'; + + my $txt = $driver->find_element('#info_box')->get_text; + like $txt, qr{State: .*, waiting for background tasks \(id: $gru_task_id, name: git_clone\)}, + 'The infobox is properly formatted'; + + my $links = $driver->find_elements('#info_box a[href*="/minion/jobs"]'); + is(scalar(@{$links}), 0, 'Expect 0 link to minion jobs as guest'); + }; +}; + subtest 'scheduled job' => sub { $t->get_ok('/tests/99927/infopanel_ajax')->status_is(200); $t->content_like(qr/scheduled.*, created.*\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/s, 'creation date displayed'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1755504216.b51ff4b1/templates/webapi/test/infopanel.html.ep new/openQA-5.1755609067.e3c951fe/templates/webapi/test/infopanel.html.ep --- old/openQA-5.1755504216.b51ff4b1/templates/webapi/test/infopanel.html.ep 2025-08-18 10:03:36.000000000 +0200 +++ new/openQA-5.1755609067.e3c951fe/templates/webapi/test/infopanel.html.ep 2025-08-19 15:11:07.000000000 +0200 @@ -45,13 +45,13 @@ % } % else { % my $state_detail = ''; - % if (my @gru_deps = $job->gru_dependencies) { + % if (@$gru_dependencies) { % $state_detail = join(';', map { - % 'id: ' . $_->id . ', name: ' . $_->taskname - % } map { $_->gru_task // () } @gru_deps); - % $state_detail = ", waiting for background tasks ($state_detail)"; + % $_->{href} ? link_to($_->{label} => $_->{href}) : $_->{label} + % } @$gru_dependencies); + % $state_detail = qq{, waiting for background tasks ($state_detail)}; % } - State: <b><%= $job->state %></b><%= $state_detail %>\ + State: <b><%= $job->state %></b><%== $state_detail %>\ % } % if ($job->t_finished) { <%= ', finished' =%> ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.APNyqA/_old 2025-08-19 16:49:52.116229535 +0200 +++ /var/tmp/diff_new_pack.APNyqA/_new 2025-08-19 16:49:52.120229701 +0200 @@ -1,5 +1,5 @@ name: openQA -version: 5.1755504216.b51ff4b1 -mtime: 1755504216 -commit: b51ff4b19a6116c3a2498e90e17aff064f5172bc +version: 5.1755609067.e3c951fe +mtime: 1755609067 +commit: e3c951fe1f8adbcc3e1c8182db6b8981fd7f8742