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-10-14 18:35:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old) and /work/SRC/openSUSE:Factory/.os-autoinst.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst" Wed Oct 14 18:35:40 2026 rev:630 rq:1384688 version:5.1791813843.3b85101 Changes: -------- --- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst.changes 2026-10-12 22:09:42.455528196 +0200 +++ /work/SRC/openSUSE:Factory/.os-autoinst.new.3698736/os-autoinst.changes 2026-10-14 18:36:34.818552836 +0200 @@ -1,0 +2,7 @@ +Mon Oct 12 17:55:38 UTC 2026 - [email protected] + +- Update to version 5.1791813843.3b85101: + * git subrepo pull (merge) --force external/os-autoinst-common + * style: fix perlcritic sigil and quote warnings + +------------------------------------------------------------------- Old: ---- os-autoinst-5.1791634386.2b02af1.obscpio New: ---- os-autoinst-5.1791813843.3b85101.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ os-autoinst-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.m0N3L4/_old 2026-10-14 18:36:36.822637215 +0200 +++ /var/tmp/diff_new_pack.m0N3L4/_new 2026-10-14 18:36:36.823637257 +0200 @@ -18,7 +18,7 @@ %define short_name os-autoinst-devel Name: %{short_name}-test -Version: 5.1791634386.2b02af1 +Version: 5.1791813843.3b85101 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-openvswitch-test.spec ++++++ --- /var/tmp/diff_new_pack.m0N3L4/_old 2026-10-14 18:36:36.853638520 +0200 +++ /var/tmp/diff_new_pack.m0N3L4/_new 2026-10-14 18:36:36.854638562 +0200 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst-openvswitch Name: %{short_name}%{?name_ext} -Version: 5.1791634386.2b02af1 +Version: 5.1791813843.3b85101 Release: 0 Summary: test package for %{short_name} License: GPL-2.0-or-later ++++++ os-autoinst-test.spec ++++++ --- /var/tmp/diff_new_pack.m0N3L4/_old 2026-10-14 18:36:36.882639741 +0200 +++ /var/tmp/diff_new_pack.m0N3L4/_new 2026-10-14 18:36:36.884639825 +0200 @@ -19,7 +19,7 @@ %define name_ext -test %define short_name os-autoinst Name: %{short_name}%{?name_ext} -Version: 5.1791634386.2b02af1 +Version: 5.1791813843.3b85101 Release: 0 Summary: test package for os-autoinst License: GPL-2.0-or-later ++++++ os-autoinst.spec ++++++ --- /var/tmp/diff_new_pack.m0N3L4/_old 2026-10-14 18:36:36.912641004 +0200 +++ /var/tmp/diff_new_pack.m0N3L4/_new 2026-10-14 18:36:36.913641046 +0200 @@ -17,7 +17,7 @@ Name: os-autoinst -Version: 5.1791634386.2b02af1 +Version: 5.1791813843.3b85101 Release: 0 Summary: OS-level test automation License: GPL-2.0-or-later ++++++ os-autoinst-5.1791634386.2b02af1.obscpio -> os-autoinst-5.1791813843.3b85101.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/OpenQA/Isotovideo/Utils.pm new/os-autoinst-5.1791813843.3b85101/OpenQA/Isotovideo/Utils.pm --- old/os-autoinst-5.1791634386.2b02af1/OpenQA/Isotovideo/Utils.pm 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/OpenQA/Isotovideo/Utils.pm 2026-10-12 16:04:03.000000000 +0200 @@ -33,7 +33,7 @@ sub _configure_safe_dir_cmd ($output) { return '' unless $output =~ /(git config.*safe.directory.*$)/; - return "TMPDIR=\$(mktemp -d --tmpdir os-autoinst-git.XXXXX) && HOME=\$TMPDIR && $1 &&"; # uncoverable statement + return 'TMPDIR=$(mktemp -d --tmpdir os-autoinst-git.XXXXX) && HOME=$TMPDIR && ' . $1 . ' &&'; # uncoverable statement } sub git_rev_parse ($dirname, $cmd_prefix = '') { @@ -61,7 +61,7 @@ return $fallback // 'UNKNOWN (origin remote not found)' unless grep { $_ eq 'origin' } @remotes; chomp(my $url = qx{$safe_dir_cmd git -C "$git_repo_dir" remote get-url origin 2>&1}); return git_remote_url($url, $url) if $? == 0; # recursive lookup to handle caching - bmwqemu::diag("Could not retrieve remote url of $git_repo_dir: \"$url\""); # uncoverable statement + bmwqemu::diag(qq{Could not retrieve remote url of $git_repo_dir: "$url"}); # uncoverable statement return $fallback // 'UNKNOWN (error on git remote call)'; # uncoverable statement } @@ -77,7 +77,7 @@ sub _clone_bare_repo ($clone_url, $clone_depth, $clone_cmd, $cache_dir, $handle_output) { return undef if -e $cache_dir; - bmwqemu::fctinfo "Creating bare repository for caching \"$clone_url\" under '$cache_dir'"; + bmwqemu::fctinfo qq{Creating bare repository for caching "$clone_url" under '$cache_dir'}; $handle_output->($?, qx{$clone_cmd --bare --depth='$clone_depth' '$clone_url' '$cache_dir' 2>&1}); } @@ -107,7 +107,7 @@ sub _determine_size ($dir, $handle_output) { $handle_output->($?, my $du = qx{du -s "$dir"}); - die "Unable to determine size of Git directory under \"$dir\": du returned '$du'\n" unless $du =~ /(\d+).*/; + die qq{Unable to determine size of Git directory under "$dir": du returned '$du'\n} unless $du =~ /(\d+).*/; return int $1; } @@ -161,10 +161,10 @@ my $direct_fetch = $args{direct_fetch}; if (-e $local_path) { - bmwqemu::diag "Skipping to clone \"$clone_url\"; $local_path already exists"; + bmwqemu::diag qq{Skipping to clone "$clone_url"; $local_path already exists}; return 1; } - bmwqemu::fctinfo "Cloning git URL \"$clone_url\" into '" . cwd . "'"; + bmwqemu::fctinfo qq{Cloning git URL "$clone_url" into '} . cwd . "'"; my $branch_args = ''; if ($branch) { bmwqemu::fctinfo "Checking out git refspec/branch '$branch'"; @@ -174,7 +174,7 @@ my $clone_cmd = 'env GIT_SSH_COMMAND="ssh -oBatchMode=yes" git clone'; my $handle_output = sub ($return_value, @out) { bmwqemu::diag "@out" if @out; - die "Unable to clone Git repository \"$dir\" specified via $dir_variable (see log for details)" unless $return_value == 0; + die qq{Unable to clone Git repository "$dir" specified via $dir_variable (see log for details)} unless $return_value == 0; return 1; }; @@ -204,7 +204,7 @@ # * https://stackoverflow.com/questions/18515488/how-to-check-if-the-commit-exists-in-a-git-repository-by-its-sha-1 # * https://stackoverflow.com/questions/26135216/why-isnt-there-a-git-clone-specific-commit-option bmwqemu::diag "Fetching more remote objects to ensure availability of '$branch'"; - my $branch_not_found_err = "Could not find '$branch' in complete history in cloned Git repository \"$dir\""; + my $branch_not_found_err = qq{Could not find '$branch' in complete history in cloned Git repository "$dir"}; while (qx{git -C "$local_path" cat-file -e "$branch^{commit}" 2>&1} =~ /Not a valid object/) { die $branch_not_found_err if qx{git -C "$local_path" rev-parse --is-shallow-repository 2>&1} =~ /^false/m; $clone_depth *= 2; @@ -214,7 +214,7 @@ } @out = qx{git -C "$local_path" checkout "$branch"}; bmwqemu::diag "@out" if @out; - die "Unable to check out branch '$branch' in cloned Git repository \"$dir\"" unless $? == 0; + die qq{Unable to check out branch '$branch' in cloned Git repository "$dir"} unless $? == 0; return 1; } @@ -334,7 +334,7 @@ } my $hash = calculate_git_hash($dir); my $url = git_remote_url($dir); - bmwqemu::diag "git url in '$dir': \"$url\""; + bmwqemu::diag qq{git url in '$dir': "$url"}; return ($url, $hash); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/backend/baseclass.pm new/os-autoinst-5.1791813843.3b85101/backend/baseclass.pm --- old/os-autoinst-5.1791634386.2b02af1/backend/baseclass.pm 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/backend/baseclass.pm 2026-10-12 16:04:03.000000000 +0200 @@ -293,7 +293,7 @@ my $name = $self->{select_read}->get_name($fh); my $msg = "The file descriptor $fd_nr ($name) hit the read attempts threshold of $hits_limit/${wait_time_limit}s by $cnt. "; $msg .= "Active console '$console' is not responding, it could be a half-open socket or you need to increase _CHKSEL_RATE_HITS value. "; - $msg .= "Make sure the console is reachable or disable stall detection on expected disconnects with '\$console->disable_vnc_stalls', for example in case of intended machine shutdown."; + $msg .= q{Make sure the console is reachable or disable stall detection on expected disconnects with '$console->disable_vnc_stalls', for example in case of intended machine shutdown.}; OpenQA::Exception::ConsoleReadError->throw(error => $msg); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/backend/svirt.pm new/os-autoinst-5.1791813843.3b85101/backend/svirt.pm --- old/os-autoinst-5.1791634386.2b02af1/backend/svirt.pm 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/backend/svirt.pm 2026-10-12 16:04:03.000000000 +0200 @@ -172,7 +172,7 @@ sleep 10; last unless $self->run_ssh_cmd( - "pgrep --full --list-full xfreerdp.*\$(cat xfreerdp_${vmname}_stop.bkp)", + 'pgrep --full --list-full xfreerdp.*$(cat xfreerdp_' . $vmname . '_stop.bkp)', $self->get_ssh_credentials('hyperv')); $self->die('xfreerdp did not start') if ($i eq 5); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/consoles/sshX3270.pm new/os-autoinst-5.1791813843.3b85101/consoles/sshX3270.pm --- old/os-autoinst-5.1791634386.2b02af1/consoles/sshX3270.pm 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/consoles/sshX3270.pm 2026-10-12 16:04:03.000000000 +0200 @@ -15,7 +15,7 @@ my $console_info = $self->new_3270_console({vnc_backend => $self}); # do ssh connect my $s3270 = $console_info->{console}; - $s3270->send_3270("Connect(\"-e $sshcommand\")"); + $s3270->send_3270(qq{Connect("-e $sshcommand")}); # wait for 10 seconds for password prompt for my $i (-9 .. 0) { $s3270->send_3270('Snap'); @@ -26,7 +26,7 @@ die 'ssh password prompt timeout' unless $i; sleep 1; } - $s3270->send_3270("String(\"$sshpassword\")"); + $s3270->send_3270(qq{String("$sshpassword")}); $s3270->send_3270('ENTER'); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/distribution.pm new/os-autoinst-5.1791813843.3b85101/distribution.pm --- old/os-autoinst-5.1791634386.2b02af1/distribution.pm 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/distribution.pm 2026-10-12 16:04:03.000000000 +0200 @@ -209,7 +209,7 @@ testapi::type_string "export _OAM=$str; $cmd\n", max_interval => $args{max_interval}; } else { - my $marker = "; echo $str-\$?-" . ($args{output} ? "Comment: $args{output}" : ''); + my $marker = "; echo $str-" . '$?-' . ($args{output} ? "Comment: $args{output}" : ''); my $final_cmd = _no_marker_prefix($cmd, $skip_pretty); if (testapi::is_serial_terminal) { testapi::type_string "$final_cmd$marker", max_interval => $args{max_interval}; @@ -258,7 +258,7 @@ $cmd = _no_marker_prefix("( $cmd )"); testapi::type_string $cmd; my $str = testapi::hashed_string('SR' . $cmd); - my $marker = "& echo $str-\$!-" . ($args{output} ? "Comment: $args{output}" : ''); + my $marker = "& echo $str-" . '$!-' . ($args{output} ? "Comment: $args{output}" : ''); if (testapi::is_serial_terminal) { testapi::type_string $marker; testapi::wait_serial($cmd . $marker, no_regex => 1, quiet => 1, internal_marker => 1) or _handle_cmd_typing_error($cmd, \%args); @@ -336,9 +336,9 @@ if (testapi::is_serial_terminal) { my $heretag = 'EOT_' . $marker; - my $cat = "cat > $script_path << '$heretag'; echo $marker-\$?-"; + my $cat = "cat > $script_path << '$heretag'; echo $marker-" . '$?-'; testapi::wait_serial($self->{serial_term_prompt}, no_regex => 1, quiet => 1); - bmwqemu::log_call("Content of $script_path :\n \"$cat\" \n"); + bmwqemu::log_call(qq{Content of $script_path :\n "$cat" \n}); testapi::type_string $cat . "\n"; testapi::wait_serial("$cat", no_regex => 1, quiet => 1); # Wait for input prompt of here tag before typing $script. This avoids @@ -370,7 +370,7 @@ # might encounter on the serial device depending on how it is used in the # SUT my $shell_cmd = testapi::is_serial_terminal() ? 'bash -oe pipefail' : 'bash -eox pipefail'; - my $run_script = _no_marker_prefix("echo $marker; $shell_cmd $script_path ; echo SCRIPT_FINISHED$marker-\$?-"); + my $run_script = _no_marker_prefix("echo $marker; $shell_cmd $script_path ; echo SCRIPT_FINISHED$marker-" . '$?-'); if (testapi::is_serial_terminal) { testapi::wait_serial($self->{serial_term_prompt}, no_regex => 1, quiet => 1); testapi::type_string "$run_script\n"; @@ -660,7 +660,7 @@ return $self->{_serial_marker_level}->{$console} = $level; } - testapi::type_string "echo \"BASH:\$BASH_VERSION:\" > /dev/$testapi::serialdev\n"; + testapi::type_string('echo "BASH:$BASH_VERSION:" > /dev/' . $testapi::serialdev . "\n"); my $out = testapi::wait_serial(qr/BASH:([^:]*):/, 10); if ($out && $out =~ /BASH:(?:[3-9]|\d{2,})/) { $level = 3; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/base-commit-message-checker.yml new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/base-commit-message-checker.yml --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/base-commit-message-checker.yml 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/base-commit-message-checker.yml 2026-10-12 16:04:03.000000000 +0200 @@ -10,7 +10,7 @@ permissions: contents: read steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - name: Install gitlint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/perl-author-tests.yml new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/perl-author-tests.yml --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/perl-author-tests.yml 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/perl-author-tests.yml 2026-10-12 16:04:03.000000000 +0200 @@ -12,7 +12,7 @@ container: image: registry.opensuse.org/devel/openqa/containers/os-autoinst_dev steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - run: | git config --system --add safe.directory "$GITHUB_WORKSPACE" make test-author diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/perl-lint-checks.yml new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/perl-lint-checks.yml --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/perl-lint-checks.yml 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/perl-lint-checks.yml 2026-10-12 16:04:03.000000000 +0200 @@ -12,5 +12,5 @@ container: image: registry.opensuse.org/devel/openqa/containers/os-autoinst_dev steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - run: GITHUB_ACTIONS=1 make test-tidy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/test.yaml new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/test.yaml --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/test.yaml 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/test.yaml 2026-10-12 16:04:03.000000000 +0200 @@ -11,5 +11,5 @@ container: image: registry.opensuse.org/devel/openqa/containers/os-autoinst_dev steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - run: make test-t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/yamllint.yml new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/yamllint.yml --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.github/workflows/yamllint.yml 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.github/workflows/yamllint.yml 2026-10-12 16:04:03.000000000 +0200 @@ -10,7 +10,7 @@ contents: read name: "YAML-lint" steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: docker://registry.opensuse.org/home/okurz/container/containers/tumbleweed:yamllint with: entrypoint: make diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.gitrepo new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.gitrepo --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.gitrepo 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.gitrepo 2026-10-12 16:04:03.000000000 +0200 @@ -6,7 +6,7 @@ [subrepo] remote = [email protected]:os-autoinst/os-autoinst-common.git branch = master - commit = 7e1f983c44858679f93e2046ed1aa82171bd7f4b - parent = e750fdd98b1e45e1b516447e46b8289b6d438fbd + commit = f3dfe451b64618d5a91eb5e3d1c8e7471134681f + parent = 293c3877c7bf226fe419a5ff28ae32122d52c3a6 method = merge - cmdver = 0.4.6 + cmdver = 0.4.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.perlcriticrc new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.perlcriticrc --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/.perlcriticrc 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/.perlcriticrc 2026-10-12 16:04:03.000000000 +0200 @@ -36,6 +36,10 @@ severity = 1 # == Custom Policies +# -- Prohibit escaped double quotes inside double-quoted strings +[OpenQA::ProhibitEscapedDoubleQuotes] +severity = 3 + # -- Useless quotes on hashes [OpenQA::HashKeyQuotes] severity = 5 @@ -43,3 +47,7 @@ # -- Superfluous use strict/warning. [OpenQA::RedundantStrictWarning] equivalent_modules = Test::Most + +# -- Prohibit escaped sigils that can be avoided with q{} or qq{} +[OpenQA::ProhibitEscapedSigils] +severity = 3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedDoubleQuotes.pm new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedDoubleQuotes.pm --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedDoubleQuotes.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedDoubleQuotes.pm 2026-10-12 16:04:03.000000000 +0200 @@ -0,0 +1,26 @@ +# Copyright SUSE LLC +# SPDX-License-Identifier: GPL-2.0-or-later + +package Perl::Critic::Policy::OpenQA::ProhibitEscapedDoubleQuotes; + +use strict; +use warnings; +use experimental 'signatures'; +use base 'Perl::Critic::Policy'; + +use Perl::Critic::Utils qw( :severities ); + +our $VERSION = '0.0.1'; + +my $DESC = q{Nested escaped double quotes in double-quoted string}; +my $EXPL = q{Use qq{...} or other delimiters to avoid backslash-escaping double quotes inside strings}; + +sub default_severity { $SEVERITY_MEDIUM } +sub default_themes { qw(openqa) } +sub applies_to { qw(PPI::Token::Quote::Double) } + +sub violates ($self, $elem, $doc) { + return $elem->string =~ tr/\"// ? $self->violation($DESC, $EXPL, $elem) : (); +} + +1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedSigils.pm new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedSigils.pm --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedSigils.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/lib/perlcritic/Perl/Critic/Policy/OpenQA/ProhibitEscapedSigils.pm 2026-10-12 16:04:03.000000000 +0200 @@ -0,0 +1,43 @@ +# Copyright SUSE LLC +# SPDX-License-Identifier: GPL-2.0-or-later + +package Perl::Critic::Policy::OpenQA::ProhibitEscapedSigils; + +use strict; +use warnings; +use experimental 'signatures'; +use base 'Perl::Critic::Policy'; + +use Perl::Critic::Utils qw( :severities :classification :ppi ); + +our $VERSION = '0.0.1'; + +sub default_severity { return $SEVERITY_MEDIUM } +sub default_themes { return qw(openqa) } +sub applies_to { return qw(PPI::Token::Quote::Double) } + +sub violates ($self, $elem, $document) { + my $content = $elem->string; + + # Check if there is any escaped sigil. + return () unless $content =~ m/(?<!\\)(?:\\\\)*\\([\$\@])/; + + # Prohibit if always unnecessary (not followed by alphanumeric, underscore, sigils, or backslash) + if ($content =~ m/(?<!\\)(?:\\\\)*\\([\$\@])(?![a-zA-Z0-9_{\$\@\x5c])/) { + my $desc = 'Double-quoted string contains unnecessary backslash-escaped sigils'; + my $expl = 'Use the q{} or qq{} operators instead of escaping characters to improve readability'; + return $self->violation($desc, $expl, $elem); + } + + # Prohibit if followed by valid identifier but string has no actual interpolation (unescaped sigil) + my $has_interpolation = $content =~ m/(?<!\\)(?:\\\\)*[\$\@][a-zA-Z0-9_{]/; + unless ($has_interpolation) { + my $desc = 'Double-quoted string contains unnecessary backslash-escaped sigils'; + my $expl = 'Use the q{} or qq{} operators instead of escaping characters to improve readability'; + return $self->violation($desc, $expl, $elem); + } + + return (); +} + +1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/t/OpenQA/ProhibitEscapedDoubleQuotes.run new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/t/OpenQA/ProhibitEscapedDoubleQuotes.run --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/t/OpenQA/ProhibitEscapedDoubleQuotes.run 1970-01-01 01:00:00.000000000 +0100 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/t/OpenQA/ProhibitEscapedDoubleQuotes.run 2026-10-12 16:04:03.000000000 +0200 @@ -0,0 +1,16 @@ +## name Passing +## failures 0 +## cut + +my $sql = qq{DROP SCHEMA IF EXISTS "$schema_name" CASCADE}; +my $sql2 = qq{CREATE SCHEMA "$schema_name"}; +my $msg = "This has no escaped quotes"; +my $msg2 = "This has an escaped backslash \\\\ and a quote"; +my $msg3 = 'Single quotes are OK with \"'; + +## name Failing +## failures 2 +## cut + +my $sql3 = "DROP SCHEMA IF EXISTS \"$schema_name\" CASCADE"; +my $sql4 = "Another escaped quote \""; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/t/OpenQA/ProhibitEscapedSigils.run new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/t/OpenQA/ProhibitEscapedSigils.run --- old/os-autoinst-5.1791634386.2b02af1/external/os-autoinst-common/t/OpenQA/ProhibitEscapedSigils.run 1970-01-01 01:00:00.000000000 +0100 +++ new/os-autoinst-5.1791813843.3b85101/external/os-autoinst-common/t/OpenQA/ProhibitEscapedSigils.run 2026-10-12 16:04:03.000000000 +0200 @@ -0,0 +1,22 @@ +## name Passing +## failures 0 +## cut + +my $s1 = 'hello'; +my $s2 = "hello"; +my $s3 = q{hello "world" $var @arr}; +my $s4 = qq{hello "world" $var @arr}; +my $s5 = "hello world"; +my $s6 = "hello \\ world"; +my $s7 = "hello \" world"; +my $s8 = "something \\$var"; +my $s9 = "$args{username}\@$args{hostname}"; +my $s10 = "unsupported \$result '$nargs{result}'"; + +## name Failing +## failures 3 +## cut + +my $f2 = "hello \$world"; +my $f3 = "hello \@array"; +my $f4 = "something \\\\\$var"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/script/os-autoinst-generate-needle-preview new/os-autoinst-5.1791813843.3b85101/script/os-autoinst-generate-needle-preview --- old/os-autoinst-5.1791634386.2b02af1/script/os-autoinst-generate-needle-preview 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/script/os-autoinst-generate-needle-preview 2026-10-12 16:04:03.000000000 +0200 @@ -83,17 +83,17 @@ } else { say ' style="fill:#000000;fill-opacity:0.5;stroke:#808080;stroke-width:2;stroke-opacity:0.75"'; } - printf " id=\"rect%d\"\n", $area_counter; - printf " width=\"%d\"\n", $area->{width}; - printf " height=\"%d\"\n", $area->{height}; - printf " x=\"%d\"\n", $area->{xpos}; - printf " y=\"%d\" />\n", $area->{ypos}; + printf qq{ id="rect%d"\n}, $area_counter; + printf qq{ width="%d"\n}, $area->{width}; + printf qq{ height="%d"\n}, $area->{height}; + printf qq{ x="%d"\n}, $area->{xpos}; + printf qq{ y="%d" />\n}, $area->{ypos}; if ($area->{click_point}) { say ' <circle'; say ' style="fill:#ffffff;fill-opacity:0.5;stroke:#ffffff;stroke-width:2;stroke-opacity:0.75"'; - printf " id=\"path%d\"\n", $area_counter; - printf " cx=\"%f\"\n", $area->{xpos} + $area->{click_point}->{xpos}; - printf " cy=\"%f\"\n", $area->{ypos} + $area->{click_point}->{ypos}; + printf qq{ id="path%d"\n}, $area_counter; + printf qq{ cx="%f"\n}, $area->{xpos} + $area->{click_point}->{xpos}; + printf qq{ cy="%f"\n}, $area->{ypos} + $area->{click_point}->{ypos}; say ' r="10" />'; } $area_counter++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/t/17-basetest.t new/os-autoinst-5.1791813843.3b85101/t/17-basetest.t --- old/os-autoinst-5.1791634386.2b02af1/t/17-basetest.t 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/t/17-basetest.t 2026-10-12 16:04:03.000000000 +0200 @@ -315,7 +315,7 @@ my $mock = Test::MockModule->new('basetest'); $mock->noop('take_screenshot'); $mock->mock(run => sub { - die "Can't locate HTTP/Request/Common.pm in \@INC (you may need to install the HTTP::Request::Common module)\n"; + die q{Can't locate HTTP/Request/Common.pm in @INC (you may need to install the HTTP::Request::Common module)} . "\n"; }); local $bmwqemu::vars{MAX_TEST_STEPS} = 100; my $basetest = bless {details => [], name => 'foo', fullname => 'foo', category => 'category1'}, 'basetest'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-autoinst-5.1791634386.2b02af1/t/28-signalblocker.t new/os-autoinst-5.1791813843.3b85101/t/28-signalblocker.t --- old/os-autoinst-5.1791634386.2b02af1/t/28-signalblocker.t 2026-10-10 14:13:06.000000000 +0200 +++ new/os-autoinst-5.1791813843.3b85101/t/28-signalblocker.t 2026-10-12 16:04:03.000000000 +0200 @@ -65,7 +65,7 @@ # any crashes without the signal blocker in place (OS_AUTOINST_TEST_NO_SIGNAL_BLOCKER=1). my $pid = $$; my $timeout = 5; -exec bash => '-e', '-c', "for i in {1..100}; do echo \"# sending SIGTERM \$i\" && kill $pid; done" unless my $fork = fork; +exec bash => '-e', '-c', 'for i in {1..100}; do echo "# sending SIGTERM $i" && kill ' . $pid . '; done' unless my $fork = fork; waitpid $fork, 0; note 'waiting for at least one signal to be handled' and sleep .2 while $received_sigterm < 1 && ($timeout -= .2) >= 0; note "handled $received_sigterm TERM signals"; ++++++ os-autoinst.obsinfo ++++++ --- /var/tmp/diff_new_pack.m0N3L4/_old 2026-10-14 18:36:38.558710309 +0200 +++ /var/tmp/diff_new_pack.m0N3L4/_new 2026-10-14 18:36:38.561710436 +0200 @@ -1,5 +1,5 @@ name: os-autoinst -version: 5.1791634386.2b02af1 -mtime: 1791634386 -commit: 2b02af1759f2aece404e97b9a79ded32695b77f3 +version: 5.1791813843.3b85101 +mtime: 1791813843 +commit: 3b85101553bc9ee20b29916a47d5ce879de2f2f1
