Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package os-autoinst for openSUSE:Factory checked in at 2026-09-22 15:50:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old) and /work/SRC/openSUSE:Factory/.os-autoinst.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst" Tue Sep 22 15:50:43 2026 rev:621 rq:1379508 version:5.1790003666.465c975 Changes: -------- --- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst.changes 2026-09-19 22:22:09.532147934 +0200 +++ /work/SRC/openSUSE:Factory/.os-autoinst.new.383539/os-autoinst.changes 2026-09-22 15:50:54.039454722 +0200 @@ -1,0 +2,14 @@ +Mon Sep 21 15:14:36 UTC 2026 - [email protected] + +- Update to version 5.1790003666.465c975: + * build(deps): bump codecov/codecov-action in the all-actions group (#3103) + * refactor: remove ProhibitExcessComplexity exclusion from read_json + * refactor: remove ProhibitManyArgs exclusions from sshVirtsh + * refactor: remove ProhibitManyArgs exclusion from add_existing_drive + * refactor: remove ProhibitManyArgs exclusion from clone_git + * refactor: remove ProhibitManyArgs exclusion from Dewebsockify + * style: remove redundant max_arguments override from perlcritic + * style: remove perlcritic cascading if-elsif override + * refactor: remove redundant perlcritic complexity overrides + +------------------------------------------------------------------- Old: ---- os-autoinst-5.1789452256.93a96a0.obscpio New: ---- os-autoinst-5.1790003666.465c975.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ os-autoinst-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.beEBFq/_old 2026-09-22 15:50:56.626562653 +0200 +++ /var/tmp/diff_new_pack.beEBFq/_new 2026-09-22 15:50:56.628562737 +0200 @@ -18,7 +18,7 @@ %define short_name os-autoinst-devel Name: %{short_name}-test -Version: 5.1789452256.93a96a0 +Version: 5.1790003666.465c975 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-openvswitch-test.spec ++++++ --- /var/tmp/diff_new_pack.beEBFq/_old 2026-09-22 15:50:56.660564072 +0200 +++ /var/tmp/diff_new_pack.beEBFq/_new 2026-09-22 15:50:56.663564197 +0200 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst-openvswitch Name: %{short_name}%{?name_ext} -Version: 5.1789452256.93a96a0 +Version: 5.1790003666.465c975 Release: 0 Summary: test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-test.spec ++++++ --- /var/tmp/diff_new_pack.beEBFq/_old 2026-09-22 15:50:56.695565532 +0200 +++ /var/tmp/diff_new_pack.beEBFq/_new 2026-09-22 15:50:56.696565574 +0200 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst Name: %{short_name}%{?name_ext} -Version: 5.1789452256.93a96a0 +Version: 5.1790003666.465c975 Release: 0 Summary: test package for os-autoinst License: GPL-2.0-or-later ++++++ os-autoinst.spec ++++++ --- /var/tmp/diff_new_pack.beEBFq/_old 2026-09-22 15:50:56.741567451 +0200 +++ /var/tmp/diff_new_pack.beEBFq/_new 2026-09-22 15:50:56.742567493 +0200 @@ -17,7 +17,7 @@ Name: os-autoinst -Version: 5.1789452256.93a96a0 +Version: 5.1790003666.465c975 Release: 0 Summary: OS-level test automation License: GPL-2.0-or-later ++++++ os-autoinst-5.1789452256.93a96a0.obscpio -> os-autoinst-5.1790003666.465c975.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/.github/workflows/ci.yml new/os-autoinst-5.1790003666.465c975/.github/workflows/ci.yml --- old/os-autoinst-5.1789452256.93a96a0/.github/workflows/ci.yml 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/.github/workflows/ci.yml 2026-09-21 17:14:26.000000000 +0200 @@ -15,7 +15,7 @@ - name: Static checks, unit tests and integration tests run: tools/container_run_ci - name: Upload coverage to Codecov - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7 + uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7 with: # should not be necessary for public repos, but might help avoid sporadic upload token errors token: ${{ secrets.CODECOV_TOKEN }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/.perlcriticrc new/os-autoinst-5.1790003666.465c975/.perlcriticrc --- old/os-autoinst-5.1789452256.93a96a0/.perlcriticrc 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/.perlcriticrc 2026-09-21 17:14:26.000000000 +0200 @@ -66,21 +66,7 @@ # BuiltinFunctions::ProhibitComplexMappings # RegularExpressions::ProhibitUnusedCapture -[Modules::ProhibitExcessMainComplexity] -# Reduce me! (backend/qemu.pm::start_qemu has 156) -max_mccabe = 100 - -[ControlStructures::ProhibitCascadingIfElse] -# Reduce me! (t/03-testapi.t has 12 elsif, consoles/VNC.pm has 7 elsif) -max_elsif = 12 - -[Subroutines::ProhibitExcessComplexity] -# Reduce me! (backend/qemu.pm::start_qemu has 156) -max_mccabe = 160 - [Subroutines::ProhibitManyArgs] -# Reduce me! -max_arguments = 12 # Ignore first arg if called $self or $class skip_object = 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/OpenQA/Isotovideo/Dewebsockify.pm new/os-autoinst-5.1790003666.465c975/OpenQA/Isotovideo/Dewebsockify.pm --- old/os-autoinst-5.1789452256.93a96a0/OpenQA/Isotovideo/Dewebsockify.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/OpenQA/Isotovideo/Dewebsockify.pm 2026-09-21 17:14:26.000000000 +0200 @@ -9,7 +9,12 @@ use Mojo::Log; use Mojo::UserAgent; -sub establish_websocket_connection ($log, $ws_url, $tosend, $ua, $ws_connection, $stream, $cookie = undef) { +sub establish_websocket_connection ($log, $ws_url, $stream, %args) { + my $tosend = $args{tosend}; + my $ua = $args{ua}; + my $ws_connection = $args{ws_connection}; + my $cookie = $args{cookie}; + $log->info("Establishing WebSocket connection to $ws_url"); @$tosend = (); my $tx = $ua->build_websocket_tx($ws_url); @@ -90,7 +95,13 @@ $stream = Mojo::IOLoop::Stream->new($handle); $stream->start; $stream->reactor->start unless $stream->reactor->is_running; - establish_websocket_connection($log, $ws_url, \@tosend, $ua, \$ws_connection, $stream, $cookie) unless $ws_connection; + establish_websocket_connection( + $log, $ws_url, $stream, + tosend => \@tosend, + ua => $ua, + ws_connection => \$ws_connection, + cookie => $cookie + ) unless $ws_connection; # pass data from raw socket to websocket $stream->on(read => sub ($s, $bytes) { if ($ws_connection) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/OpenQA/Isotovideo/Utils.pm new/os-autoinst-5.1790003666.465c975/OpenQA/Isotovideo/Utils.pm --- old/os-autoinst-5.1789452256.93a96a0/OpenQA/Isotovideo/Utils.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/OpenQA/Isotovideo/Utils.pm 2026-09-21 17:14:26.000000000 +0200 @@ -153,7 +153,13 @@ return $cache_dir; } -sub clone_git ($local_path, $clone_url, $clone_depth, $branch, $dir, $dir_variable, $direct_fetch) { +sub clone_git ($local_path, $clone_url, %args) { + my $clone_depth = $args{clone_depth}; + my $branch = $args{branch}; + my $dir = $args{dir}; + my $dir_variable = $args{dir_variable}; + my $direct_fetch = $args{direct_fetch}; + if (-e $local_path) { bmwqemu::diag "Skipping to clone \"$clone_url\"; $local_path already exists"; return 1; @@ -248,7 +254,16 @@ my $error; do { my $status; - try { $status = clone_git($local_path, $clone_url, $clone_depth, $branch, $dir, $dir_variable, $args{direct_fetch} // 1) } + try { + $status = clone_git( + $local_path, $clone_url, + clone_depth => $clone_depth, + branch => $branch, + dir => $dir, + dir_variable => $dir_variable, + direct_fetch => $args{direct_fetch} // 1 + ); + } catch ($e) { $error = $e } return $local_abs if $status; bmwqemu::diag "Clone failed, retries left: $tries of $retry_count"; @@ -403,6 +418,7 @@ my $main_path = path($productdir, 'main.pm'); my $nested_main_path = $distri ? path($productdir, 'products', $distri, 'main.pm') : undef; try { + ## no critic (ControlStructures::ProhibitCascadingIfElse) if (-e $main_path) { unshift @INC, '.'; require $main_path; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/OpenQA/Qemu/BlockDevConf.pm new/os-autoinst-5.1790003666.465c975/OpenQA/Qemu/BlockDevConf.pm --- old/os-autoinst-5.1789452256.93a96a0/OpenQA/Qemu/BlockDevConf.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/OpenQA/Qemu/BlockDevConf.pm 2026-09-21 17:14:26.000000000 +0200 @@ -109,7 +109,10 @@ =cut -sub add_existing_drive ($self, $id, $file_name, $model, $size, $num_queues = undef, $sector_size = undef) { +sub add_existing_drive ($self, $id, $file_name, $model, $size, %args) { + my $num_queues = $args{num_queues}; + my $sector_size = $args{sector_size}; + my $base_drive = $self->add_existing_base($id, $file_name, $size)->implicit(1)->deduce_driver; my $overlay = $self->add_new_overlay($id . OVERLAY_POSTFIX . '0', $base_drive); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/OpenQA/Qemu/Proc.pm new/os-autoinst-5.1790003666.465c975/OpenQA/Qemu/Proc.pm --- old/os-autoinst-5.1789452256.93a96a0/OpenQA/Qemu/Proc.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/OpenQA/Qemu/Proc.pm 2026-09-21 17:14:26.000000000 +0200 @@ -155,6 +155,7 @@ =cut +## no critic (Subroutines::ProhibitExcessComplexity) sub configure_blockdevs ($self, $bootfrom, $basedir, $vars) { my $bdc = $self->blockdev_conf; my @scsi_ctrs = $self->controller_conf->get_controllers(qr/scsi/); @@ -184,7 +185,11 @@ $backing_file = $path . $name; } $size //= $self->get_img_size($backing_file); - $drive = $bdc->add_existing_drive($node_id, $backing_file, $hdd_model, $size, $num_queues, $sector_size); + $drive = $bdc->add_existing_drive( + $node_id, $backing_file, $hdd_model, $size, + num_queues => $num_queues, + sector_size => $sector_size + ); } else { $size //= $vars->{HDDSIZEGB} . 'G'; $drive = $bdc->add_new_drive($node_id, $hdd_model, $size, $num_queues, $sector_size); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/autotest.pm new/os-autoinst-5.1790003666.465c975/autotest.pm --- old/os-autoinst-5.1789452256.93a96a0/autotest.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/autotest.pm 2026-09-21 17:14:26.000000000 +0200 @@ -538,6 +538,7 @@ return $rsp; } +## no critic (Subroutines::ProhibitExcessComplexity) sub runalltests () { die 'ERROR: no tests loaded' unless @testorder; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/backend/baseclass.pm new/os-autoinst-5.1790003666.465c975/backend/baseclass.pm --- old/os-autoinst-5.1789452256.93a96a0/backend/baseclass.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/backend/baseclass.pm 2026-09-21 17:14:26.000000000 +0200 @@ -206,6 +206,7 @@ return 1; } +## no critic (Subroutines::ProhibitExcessComplexity) sub do_capture ($self, $buckets, $timeout = undef, $starttime = undef) { my $wait_time_limit = $self->{wait_time_limit}; my $hits_limit = $self->{hits_limit}; @@ -415,6 +416,7 @@ return; } +## no critic (Subroutines::ProhibitExcessComplexity) sub _stop_video_encoder ($self) { my $video_encoders = delete $self->{video_encoders}; return undef unless defined $video_encoders && keys %$video_encoders; @@ -1025,6 +1027,7 @@ $self->assert_screen_last_check(undef); } +## no critic (Subroutines::ProhibitExcessComplexity) sub check_asserted_screen ($self, $args) { return undef unless my $img = $self->last_image; # no screenshot yet to search on my $watch = OpenQA::Benchmark::Stopwatch->new(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/backend/qemu.pm new/os-autoinst-5.1790003666.465c975/backend/qemu.pm --- old/os-autoinst-5.1789452256.93a96a0/backend/qemu.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/backend/qemu.pm 2026-09-21 17:14:26.000000000 +0200 @@ -640,6 +640,7 @@ my $vars = \%bmwqemu::vars; my $device; my $options = ''; + ## no critic (ControlStructures::ProhibitCascadingIfElse) if ($vars->{QEMU_VIDEO_DEVICE}) { bmwqemu::fctwarn('Both QEMUVGA and QEMU_VIDEO_DEVICE set, ignoring deprecated QEMUVGA!') if $vars->{QEMUVGA}; $device = $vars->{QEMU_VIDEO_DEVICE}; @@ -686,6 +687,7 @@ $self->{qemu_version} = $qemu_version; } +## no critic (Subroutines::ProhibitExcessComplexity) sub start_qemu ($self) { my $vars = \%bmwqemu::vars; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/consoles/VNC.pm new/os-autoinst-5.1790003666.465c975/consoles/VNC.pm --- old/os-autoinst-5.1789452256.93a96a0/consoles/VNC.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/consoles/VNC.pm 2026-09-21 17:14:26.000000000 +0200 @@ -214,6 +214,7 @@ $socket->print($protocol_version); } +## no critic (Subroutines::ProhibitExcessComplexity) sub _handshake_security ($self) { my $socket = $self->socket; @@ -353,6 +354,7 @@ $socket->print(pack 'C', !$self->ikvm); # share } +## no critic (Subroutines::ProhibitExcessComplexity) sub _server_initialization ($self) { my $socket = $self->socket; $socket->read(my $server_init, 24) || die 'unexpected end of data'; @@ -833,6 +835,7 @@ return $message_type; } +## no critic (Subroutines::ProhibitExcessComplexity) sub _receive_update ($self) { $self->_last_update_received(time); my $image = $self->_framebuffer; @@ -855,6 +858,7 @@ # work around buggy addrlink VNC next if $encoding_type > 0 && $w * $h == 0; + ## no critic (ControlStructures::ProhibitCascadingIfElse) if ($encoding_type == 0 && !$self->ikvm) { # Raw $socket->read(my $data, $w * $h * $self->_bpp / 8) || die 'unexpected end of data'; $image->map_raw_data($data, $x, $y, $w, $h, $self->vncinfo); @@ -1000,6 +1004,7 @@ $self->_framebuffer($image); } +## no critic (Subroutines::ProhibitExcessComplexity) sub _receive_ikvm_encoding ($self, $encoding_type, $x, $y, $w, $h) { my $socket = $self->socket; my $image = $self->_framebuffer; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/consoles/sshVirtsh.pm new/os-autoinst-5.1790003666.465c975/consoles/sshVirtsh.pm --- old/os-autoinst-5.1789452256.93a96a0/consoles/sshVirtsh.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/consoles/sshVirtsh.pm 2026-09-21 17:14:26.000000000 +0200 @@ -399,7 +399,12 @@ return $dest_image; } -sub _copy_image_vmware ($self, $name, $backingfile, $file_basename, $vmware_openqa_datastore, $vmware_disk_path, $vmware_disk_path_thinfile, $copy_timeout = 600) { +sub _copy_image_vmware ($self, $name, $backingfile, $file_basename, %args) { + my $vmware_openqa_datastore = $args{vmware_openqa_datastore}; + my $vmware_disk_path = $args{vmware_disk_path}; + my $vmware_disk_path_thinfile = $args{vmware_disk_path_thinfile}; + my $copy_timeout = $args{copy_timeout} // 600; + # If the file exists, make sure someone else is not copying it there right now, # otherwise copy image from NFS datastore. my $nfs_dir = $backingfile ? 'hdd' : 'iso'; @@ -464,7 +469,12 @@ } } -sub _copy_image_to_vm_host ($self, $args, $vmware_openqa_datastore, $file, $name, $basedir, $cdrom) { +sub _copy_image_to_vm_host ($self, $args, $vmware_openqa_datastore, %opts) { + my $file = $opts{file}; + my $name = $opts{name}; + my $basedir = $opts{basedir}; + my $cdrom = $opts{cdrom}; + # Copy image to VM host die 'No file given' unless $args->{file}; my $file_basename = basename($args->{file}); @@ -473,7 +483,12 @@ my $vmware_disk_path_thinfile = $vmware_disk_path =~ s/\.vmdk/_${name}_thinfile\.vmdk/r; if ($cdrom || $backingfile) { if ($self->vmm_family eq 'vmware') { - $self->_copy_image_vmware($name, $backingfile, $file_basename, $vmware_openqa_datastore, $vmware_disk_path, $vmware_disk_path_thinfile); + $self->_copy_image_vmware( + $name, $backingfile, $file_basename, + vmware_openqa_datastore => $vmware_openqa_datastore, + vmware_disk_path => $vmware_disk_path, + vmware_disk_path_thinfile => $vmware_disk_path_thinfile + ); $self->_copy_nvram_vmware($name, $vmware_openqa_datastore, $vmware_disk_path) if ($backingfile); } else { @@ -539,7 +554,13 @@ $file = $self->_create_disk($args, $vmware_openqa_datastore, $file, $name, $basedir); } else { - $file = $self->_copy_image_to_vm_host($args, $vmware_openqa_datastore, $file, $name, $basedir, $cdrom); + $file = $self->_copy_image_to_vm_host( + $args, $vmware_openqa_datastore, + file => $file, + name => $name, + basedir => $basedir, + cdrom => $cdrom + ); } my $doc = $self->{domainxml}; @@ -593,6 +614,7 @@ return $encoded_config; } +## no critic (Subroutines::ProhibitExcessComplexity) sub define_and_start ($self, %args) { $args{pre_cleanup} //= 1; my $remote_vmm; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/consoles/video_stream.pm new/os-autoinst-5.1790003666.465c975/consoles/video_stream.pm --- old/os-autoinst-5.1789452256.93a96a0/consoles/video_stream.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/consoles/video_stream.pm 2026-09-21 17:14:26.000000000 +0200 @@ -406,6 +406,7 @@ my ($width, $height, $format, $stride) = unpack 'IIa4ICCxxI', substr $ustreamer_map, $meta_offset, 28; my $img; + ## no critic (ControlStructures::ProhibitCascadingIfElse) if ($format eq 'JPEG') { # tinycv::from_ppm in fact handles a bunch of formats, including JPEG $img = tinycv::from_ppm(substr $ustreamer_map, $data_offset, $used); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/myjsonrpc.pm new/os-autoinst-5.1790003666.465c975/myjsonrpc.pm --- old/os-autoinst-5.1789452256.93a96a0/myjsonrpc.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/myjsonrpc.pm 2026-09-21 17:14:26.000000000 +0200 @@ -78,6 +78,33 @@ return undef; } +sub _parse_and_handle_hash ($cjx, $results, %args) { + my $fd = $args{fd}; + my $cmd_token = $args{cmd_token}; + my $multi = $args{multi}; + my $socket = $args{socket}; + + my $hash = $cjx->incr_parse(); + return 0 unless $hash; + + bmwqemu::diag(sprintf 'read_json(%d) json_cmd_token=%s', $fd, $hash->{json_cmd_token} // 'no-token') if is_debug(); + if ($hash->{QUIT}) { + bmwqemu::diag('received magic close'); + push @$results, undef; + return 'last'; + } + if ($cmd_token && ($hash->{json_cmd_token} || '') ne $cmd_token) { + $interleaved_command_handler ? $interleaved_command_handler->($hash, $socket) : (push @$results, $hash); + return 'next'; + } + else { + push @$results, $hash; + # parse all lines from buffer + return 'next' if $multi; + return 'last'; + } +} + sub read_json ($socket, $cmd_token = undef, $multi = undef) { my $fd = fileno $socket; bmwqemu::diag("read_json($fd)") if is_debug(); @@ -96,26 +123,17 @@ # add more data to it. As the backend sends things unasked, we might # run into the next message otherwise while (1) { - my $hash = $cjx->incr_parse(); - if ($hash) { - bmwqemu::diag(sprintf 'read_json(%d) json_cmd_token=%s', $fd, $hash->{json_cmd_token} // 'no-token') if is_debug(); - if ($hash->{QUIT}) { - bmwqemu::diag('received magic close'); - push @$results, undef; - last; - } - if ($cmd_token && ($hash->{json_cmd_token} || '') ne $cmd_token) { - $interleaved_command_handler ? $interleaved_command_handler->($hash, $socket) : (push @$results, $hash); - next; - } - else { - push @$results, $hash; - # parse all lines from buffer - next if $multi; - last; - } - } - elsif ($multi and @$results) { + my $status = _parse_and_handle_hash( + $cjx, $results, + fd => $fd, + cmd_token => $cmd_token, + multi => $multi, + socket => $socket + ); + last if $status eq 'last'; + next if $status eq 'next'; + + if ($multi and @$results) { # read at least one item in list context last; } @@ -124,7 +142,10 @@ handle_read_error($fd) until (my @res = $s->can_read); my $qbuffer; - if (!sysread $socket, $qbuffer, READ_BUFFER) { bmwqemu::fctwarn("sysread failed: $!") if is_debug(); return $multi ? () : undef } + if (!sysread $socket, $qbuffer, READ_BUFFER) { + bmwqemu::fctwarn("sysread failed: $!") if is_debug(); + return $multi ? () : undef; + } $cjx->incr_parse($qbuffer); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/needle.pm new/os-autoinst-5.1790003666.465c975/needle.pm --- old/os-autoinst-5.1789452256.93a96a0/needle.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/needle.pm 2026-09-21 17:14:26.000000000 +0200 @@ -31,6 +31,7 @@ || $click_point eq 'center'; } +## no critic (Subroutines::ProhibitExcessComplexity) sub new ($classname, $jsonfile) { die 'needles not initialized via needle::init() before needle constructor called' unless defined $needles_dir; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/ppmclibs/tinycv.pm new/os-autoinst-5.1790003666.465c975/ppmclibs/tinycv.pm --- old/os-autoinst-5.1789452256.93a96a0/ppmclibs/tinycv.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/ppmclibs/tinycv.pm 2026-09-21 17:14:26.000000000 +0200 @@ -43,6 +43,7 @@ # } # ] # } +## no critic (Subroutines::ProhibitExcessComplexity) sub search_ ($self, $needle, $threshold, $search_ratio, $stopwatch = undef) { $threshold ||= 0.0; $search_ratio ||= 0.0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/03-testapi.t new/os-autoinst-5.1790003666.465c975/t/03-testapi.t --- old/os-autoinst-5.1789452256.93a96a0/t/03-testapi.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/03-testapi.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) use Test::Most; use Mojo::Base -signatures; @@ -51,9 +51,11 @@ sub fake_send_json ($to_fd, $cmd) { push @$cmds, $cmd } +## no critic (Subroutines::ProhibitExcessComplexity) sub fake_read_json ($fd) { my $lcmd = $cmds->[-1]; my $cmd = $lcmd->{cmd}; + ## no critic (ControlStructures::ProhibitCascadingIfElse) if ($cmd eq 'backend_wait_serial') { my $str = $lcmd->{regexp}; $str =~ s/\(\?\^.*?://; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/05-distribution.t new/os-autoinst-5.1790003666.465c975/t/05-distribution.t --- old/os-autoinst-5.1789452256.93a96a0/t/05-distribution.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/05-distribution.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) # Copyright SUSE LLC # SPDX-License-Identifier: GPL-2.0-or-later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/08-autotest.t new/os-autoinst-5.1790003666.465c975/t/08-autotest.t --- old/os-autoinst-5.1789452256.93a96a0/t/08-autotest.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/08-autotest.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) use Test::Most; use Mojo::Base -signatures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/14-isotovideo.t new/os-autoinst-5.1790003666.465c975/t/14-isotovideo.t --- old/os-autoinst-5.1789452256.93a96a0/t/14-isotovideo.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/14-isotovideo.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) use Test::Most; use Mojo::Base -signatures; @@ -163,8 +163,8 @@ my $utils_mock = Test::MockModule->new('OpenQA::Isotovideo::Utils'); my $bmwqemu_mock = Test::MockModule->new('bmwqemu'); my @repos; - $utils_mock->redefine(clone_git => sub ($local_path, $clone_url, $clone_depth, $branch, $dir, $dir_variable, $direct_fetch) { - push @repos, [$clone_url, $branch]; + $utils_mock->redefine(clone_git => sub ($local_path, $clone_url, %args) { + push @repos, [$clone_url, $args{branch}]; return 1; }); checkout_wheels($case_dir, $wheels_dir); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/17-basetest.t new/os-autoinst-5.1790003666.465c975/t/17-basetest.t --- old/os-autoinst-5.1789452256.93a96a0/t/17-basetest.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/17-basetest.t 2026-09-21 17:14:26.000000000 +0200 @@ -47,6 +47,7 @@ sub fake_read_json ($fd) { my $lcmd = $cmds->[-1]; my $cmd = $lcmd->{cmd}; + ## no critic (ControlStructures::ProhibitCascadingIfElse) if ($cmd eq 'read_serial') { return { serial => substr($serial_buffer, $lcmd->{position}), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/18-backend-qemu.t new/os-autoinst-5.1790003666.465c975/t/18-backend-qemu.t --- old/os-autoinst-5.1789452256.93a96a0/t/18-backend-qemu.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/18-backend-qemu.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) use Test::Most; use Mojo::Base -signatures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/18-qemu.t new/os-autoinst-5.1790003666.465c975/t/18-qemu.t --- old/os-autoinst-5.1789452256.93a96a0/t/18-qemu.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/18-qemu.t 2026-09-21 17:14:26.000000000 +0200 @@ -109,7 +109,7 @@ $cmdl[-1] .= ',logical_block_size=4096,physical_block_size=4096'; $bdc = OpenQA::Qemu::BlockDevConf->new(); -$bdc->add_existing_drive('hd1', '/abs/path/sle15-minimal.qcow2', 'virtio-blk', 22_548_578_304, undef, 4096); +$bdc->add_existing_drive('hd1', '/abs/path/sle15-minimal.qcow2', 'virtio-blk', 22_548_578_304, sector_size => 4096); @gcmdl = $bdc->gen_cmdline(); is_deeply \@gcmdl, \@cmdl, 'Generate qemu command line for existing drive with 4k sector size'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/22-svirt.t new/os-autoinst-5.1790003666.465c975/t/22-svirt.t --- old/os-autoinst-5.1789452256.93a96a0/t/22-svirt.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/22-svirt.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) use Test::Most; use Mojo::Base -signatures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/23-baseclass.t new/os-autoinst-5.1790003666.465c975/t/23-baseclass.t --- old/os-autoinst-5.1789452256.93a96a0/t/23-baseclass.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/23-baseclass.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) use Test::Most; use Mojo::Base -signatures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/27-consoles-s3270.t new/os-autoinst-5.1790003666.465c975/t/27-consoles-s3270.t --- old/os-autoinst-5.1789452256.93a96a0/t/27-consoles-s3270.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/27-consoles-s3270.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) use Test::Most; use Mojo::Base -signatures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/27-consoles-vnc.t new/os-autoinst-5.1790003666.465c975/t/27-consoles-vnc.t --- old/os-autoinst-5.1789452256.93a96a0/t/27-consoles-vnc.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/27-consoles-vnc.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) # Copyright SUSE LLC # SPDX-License-Identifier: GPL-2.0-or-later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/30-mmapi.t new/os-autoinst-5.1790003666.465c975/t/30-mmapi.t --- old/os-autoinst-5.1789452256.93a96a0/t/30-mmapi.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/30-mmapi.t 2026-09-21 17:14:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl ## no critic (Modules::ProhibitExcessMainComplexity) # # Copyright SUSE LLC # SPDX-License-Identifier: GPL-2.0-or-later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/t/34-git.t new/os-autoinst-5.1790003666.465c975/t/34-git.t --- old/os-autoinst-5.1789452256.93a96a0/t/34-git.t 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/t/34-git.t 2026-09-21 17:14:26.000000000 +0200 @@ -118,7 +118,14 @@ my $orga_cache_dir = $git_cache_dir->child($orga); my $repo_cache_dir = $orga_cache_dir->child("$repo$suffix"); - my @clone_args = ($repo, $url, 1, $rev, $repo, '?', 1); + my @clone_args = ( + $repo, $url, + clone_depth => 1, + branch => $rev, + dir => $repo, + dir_variable => '?', + direct_fetch => 1 + ); my $clone = sub { combined_from { ok OpenQA::Isotovideo::Utils::clone_git(@clone_args), 'cloned repo' }; }; @@ -158,7 +165,14 @@ }; subtest 'clone default branch' => sub { $working_tree_dir->remove_tree; # ensure we actually clone the repo again - my @clone_args = ($repo, $url, 1, '', $repo, '?', 1); + my @clone_args = ( + $repo, $url, + clone_depth => 1, + branch => '', + dir => $repo, + dir_variable => '?', + direct_fetch => 1 + ); chomp(my $branch = qx{git -C $git_dir symbolic-ref --short HEAD}); combined_like { ok OpenQA::Isotovideo::Utils::clone_git(@clone_args), 'cloned repo with default branch' } qr/$branch/, "detected $branch branch"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1789452256.93a96a0/testapi.pm new/os-autoinst-5.1790003666.465c975/testapi.pm --- old/os-autoinst-5.1789452256.93a96a0/testapi.pm 2026-09-15 08:04:16.000000000 +0200 +++ new/os-autoinst-5.1790003666.465c975/testapi.pm 2026-09-21 17:14:26.000000000 +0200 @@ -283,6 +283,7 @@ } +## no critic (Subroutines::ProhibitExcessComplexity) sub _check_backend_response ($rsp, $check, $timeout, $mustmatch) { my $tags = $rsp->{tags}; if (my $foundneedle = $rsp->{found}) { ++++++ os-autoinst.obsinfo ++++++ --- /var/tmp/diff_new_pack.beEBFq/_old 2026-09-22 15:50:58.891657150 +0200 +++ /var/tmp/diff_new_pack.beEBFq/_new 2026-09-22 15:50:58.896657359 +0200 @@ -1,5 +1,5 @@ name: os-autoinst -version: 5.1789452256.93a96a0 -mtime: 1789452256 -commit: 93a96a0e188f2d021df61fad35f78b73ba9f0464 +version: 5.1790003666.465c975 +mtime: 1790003666 +commit: 465c975b2356744070591e7333d2950f28b8f49f
