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-02 16:59:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old)
 and      /work/SRC/openSUSE:Factory/.os-autoinst.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "os-autoinst"

Wed Sep  2 16:59:53 2026 rev:618 rq:1375193 version:5.1787772129.e7dc5f2

Changes:
--------
--- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst.changes  2026-08-19 
18:02:47.635629264 +0200
+++ /work/SRC/openSUSE:Factory/.os-autoinst.new.1265/os-autoinst.changes        
2026-09-02 17:00:01.427680492 +0200
@@ -1,0 +2,10 @@
+Wed Aug 26 19:22:19 UTC 2026 - [email protected]
+
+- Update to version 5.1787772129.e7dc5f2:
+  * fix(myjsonrpc): omit newline delimiter between JSON objects
+  * feat: Avoid problems with pretty serial markers and multiline commands
+  * chore: Update Perl-Tidy to 20260808
+  * docs(guidelines): prefer self-explanatory test descriptions
+  * feat: decouple pretty serial output from mechanism
+
+-------------------------------------------------------------------

Old:
----
  os-autoinst-5.1787055635.69d1218.obscpio

New:
----
  os-autoinst-5.1787772129.e7dc5f2.obscpio

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

Other differences:
------------------
++++++ os-autoinst-devel-test.spec ++++++
--- /var/tmp/diff_new_pack.SFsZfD/_old  2026-09-02 17:00:03.987769489 +0200
+++ /var/tmp/diff_new_pack.SFsZfD/_new  2026-09-02 17:00:03.989769559 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name os-autoinst-devel
 Name:           %{short_name}-test
-Version:        5.1787055635.69d1218
+Version:        5.1787772129.e7dc5f2
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ os-autoinst-openvswitch-test.spec ++++++
--- /var/tmp/diff_new_pack.SFsZfD/_old  2026-09-02 17:00:04.020770636 +0200
+++ /var/tmp/diff_new_pack.SFsZfD/_new  2026-09-02 17:00:04.021770671 +0200
@@ -19,7 +19,7 @@
 %define name_ext -test
 %define         short_name os-autoinst-openvswitch
 Name:           %{short_name}%{?name_ext}
-Version:        5.1787055635.69d1218
+Version:        5.1787772129.e7dc5f2
 Release:        0
 Summary:        test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ os-autoinst-test.spec ++++++
--- /var/tmp/diff_new_pack.SFsZfD/_old  2026-09-02 17:00:04.065772201 +0200
+++ /var/tmp/diff_new_pack.SFsZfD/_new  2026-09-02 17:00:04.067772270 +0200
@@ -19,7 +19,7 @@
 %define name_ext -test
 %define         short_name os-autoinst
 Name:           %{short_name}%{?name_ext}
-Version:        5.1787055635.69d1218
+Version:        5.1787772129.e7dc5f2
 Release:        0
 Summary:        test package for os-autoinst
 License:        GPL-2.0-or-later

++++++ os-autoinst.spec ++++++
--- /var/tmp/diff_new_pack.SFsZfD/_old  2026-09-02 17:00:04.106773626 +0200
+++ /var/tmp/diff_new_pack.SFsZfD/_new  2026-09-02 17:00:04.108773696 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           os-autoinst
-Version:        5.1787055635.69d1218
+Version:        5.1787772129.e7dc5f2
 Release:        0
 Summary:        OS-level test automation
 License:        GPL-2.0-or-later

++++++ os-autoinst-5.1787055635.69d1218.obscpio -> 
os-autoinst-5.1787772129.e7dc5f2.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/AGENTS.md 
new/os-autoinst-5.1787772129.e7dc5f2/AGENTS.md
--- old/os-autoinst-5.1787055635.69d1218/AGENTS.md      2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/AGENTS.md      2026-08-26 
21:22:09.000000000 +0200
@@ -19,7 +19,8 @@
   for Perl changes before claiming completion.
 - Testing: Always add tests for new features or bug fixes in `t/`. Prefer
   reusing existing failing test modules (e.g. from `t/data/tests`) for
-  integration tests.
+  integration tests. Prefer self-explanatory test description strings rather
+  than in-file comments.
 - Dependencies: Update `dependencies.yaml` and run `make update-deps`.
 
 ## Constraints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/basetest.pm 
new/os-autoinst-5.1787772129.e7dc5f2/basetest.pm
--- old/os-autoinst-5.1787055635.69d1218/basetest.pm    2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/basetest.pm    2026-08-26 
21:22:09.000000000 +0200
@@ -458,7 +458,7 @@
     # take screenshot for documentation (screenshot does not represent fail 
itself)
     $self->take_screenshot() unless (testapi::is_serial_terminal);
 
-    my $pretty = $testapi::distri ? 
$testapi::distri->get_pretty_serial_marker() : 
(testapi::get_var('PRETTY_SERIAL_MARKER', 1) || 
testapi::get_var('HIDE_MARKER_EVALUATION'));
+    my $pretty = testapi::get_var('PRETTY_SERIAL_OUTPUT', 1) || 
testapi::get_var('HIDE_MARKER_EVALUATION');
     my $internal = $args{internal_marker};
     my $output_string = $string;
     my $captured_val;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/cpanfile 
new/os-autoinst-5.1787772129.e7dc5f2/cpanfile
--- old/os-autoinst-5.1787055635.69d1218/cpanfile       2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/cpanfile       2026-08-26 
21:22:09.000000000 +0200
@@ -104,7 +104,7 @@
     requires 'Devel::Cover';
     requires 'Module::CPANfile';
     requires 'PPI';
-    requires 'Perl::Tidy', '== 20260705.0.0';
+    requires 'Perl::Tidy', '== 20260808.0.0';
     requires 'Template::Toolkit';
     requires 'Test::CheckGitStatus';
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/dependencies.yaml 
new/os-autoinst-5.1787772129.e7dc5f2/dependencies.yaml
--- old/os-autoinst-5.1787055635.69d1218/dependencies.yaml      2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/dependencies.yaml      2026-08-26 
21:22:09.000000000 +0200
@@ -101,7 +101,7 @@
   perl(Devel::Cover):
   perl(Module::CPANfile):
   perl(Template::Toolkit):
-  perl(Perl::Tidy): == 20260705.0.0
+  perl(Perl::Tidy): == 20260808.0.0
   perl(PPI):
   perl(Test::CheckGitStatus):
   shfmt:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/distribution.pm 
new/os-autoinst-5.1787772129.e7dc5f2/distribution.pm
--- old/os-autoinst-5.1787055635.69d1218/distribution.pm        2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/distribution.pm        2026-08-26 
21:22:09.000000000 +0200
@@ -182,8 +182,14 @@
         if ($level > 1 && $cmd =~ 
m{(?:>|>>|\btee)\s+(?:-a\s+)?/dev/\Q$testapi::serialdev\E\b}) {
             bmwqemu::diag('Temporarily disabling PRETTY_SERIAL_MARKER to 
prevent corruption with serial terminal redirection');
             bmwqemu::diag("Manual redirection to /dev/$testapi::serialdev is 
deprecated and might conflict with advanced serial markers. Use script_output() 
or use script_run() without the quiet parameter instead.");
-            $level = 1;
-            $skip_pretty = 1;
+            $level = $skip_pretty = 1;
+        }
+        # Disable pretty serial markers for multiline commands where we will 
otherwise get an unexpected end marker per command
+        # note: We could try to split $cmd and wait for the end marker of the 
last command. However, splitting $cmd in the same way the shell
+        #       does is complicated, e.g. we would have to handle multiline 
string literals.
+        if ($level > 1 && $cmd =~ m{\n.+$}) {
+            bmwqemu::diag('Temporarily disabling PRETTY_SERIAL_MARKER for 
command containing newline characters');
+            $level = $skip_pretty = 1;
         }
         my ($str, $wait_pattern);
         if ($level == 3) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/doc/backend_vars.md 
new/os-autoinst-5.1787772129.e7dc5f2/doc/backend_vars.md
--- old/os-autoinst-5.1787055635.69d1218/doc/backend_vars.md    2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/doc/backend_vars.md    2026-08-26 
21:22:09.000000000 +0200
@@ -41,7 +41,8 @@
 | PAUSE_ON_NEXT_COMMAND | boolean | 0 | Pause test execution on the next test 
API command. Same notes as for `PAUSE_AT` apply. |
 | PAUSE_ON_FAILURE | boolean | 0 | Pause test execution on a test failure 
(instead of invoking the post-fail hook and terminating). Same notes as for 
`PAUSE_AT` apply. |
 | _QUIET_SCRIPT_CALLS | boolean | 0 | Add quiet flag to all the calls to 
script_run, script_output and validate_script_output. It will omit all the 
squares "wait_serial expected" on the Details view of the test case. This 
option might be useful for serial terminal tests. |
-| PRETTY_SERIAL_MARKER | boolean | 1 | Enable "pretty" serial markers. When 
enabled, os-autoinst attempts to automatically detect SUT shell capabilities 
(like bash PROMPT_COMMAND and fc history) to forward command exit codes to 
serial without typing them visibly over VNC. Falls back to regular serial 
markers if no advanced shell features are detected. Implication: the detection 
installs a persistent PROMPT_COMMAND hook into the SUT's `~/.bashrc` and 
`~/.profile`, which then emits `OA:DONE`/`OA:START` markers to 
`/dev/$SERIALDEV` (i.e. `serial0.txt`) on every prompt of every shell that 
sources those files (including login/`exec $SHELL`/`su` and non-serial-terminal 
VNC consoles). Because the hook is persisted, it survives into later jobs 
booting the same qcow. To keep `serial0.txt` completely clean (e.g. for tests 
that parse it as a data channel or that run mostly via the virtio serial 
terminal where markers already appear in `serial_terminal.txt`), set 
`PRETTY_SERIAL_MARKER=0` for th
 e whole cluster, i.e. on both the parent job that creates the qcow image (so 
no hook is ever baked in) and all downstream jobs. Note that on the virtio 
serial terminal itself the hook is never installed; the residual `serial0.txt` 
markers in such tests originate from the VNC/tty consoles they still use. |
+| PRETTY_SERIAL_MARKER | boolean | 1 | Enable "pretty" serial markers. When 
enabled, os-autoinst attempts to automatically detect SUT shell capabilities 
(like bash PROMPT_COMMAND and fc history) to forward command exit codes to 
serial without typing them visibly over VNC. Falls back to regular serial 
markers if no advanced shell features are detected. Implication: the detection 
installs a persistent PROMPT_COMMAND hook into the SUT's `~/.bashrc` and 
`~/.profile`, which then emits `OA:DONE`/`OA:START` markers to 
`/dev/$SERIALDEV` (i.e. `serial0.txt`) on every prompt of every shell that 
sources those files (including login/`exec $SHELL`/`su` and non-serial-terminal 
VNC consoles). Because the hook is persisted, it survives into later jobs 
booting the same qcow. To keep `serial0.txt` completely clean (e.g. for tests 
that parse it as a data channel or that run mostly via the virtio serial 
terminal where markers already appear in `serial_terminal.txt`), set 
`PRETTY_SERIAL_MARKER=0` for th
 e whole cluster, i.e. on both the parent job that creates the qcow image (so 
no hook is ever baked in) and all downstream jobs. Note that on the virtio 
serial terminal itself the hook is never installed; the residual `serial0.txt` 
markers in such tests originate from the VNC/tty consoles they still use. 
Disabling this mechanism does not disable the improved step details (see 
`PRETTY_SERIAL_OUTPUT`). |
+| PRETTY_SERIAL_OUTPUT | boolean | 1 | Enable "pretty" serial marker output in 
the openQA Web UI step details (hiding internal sync markers, displaying `# 
Command:` and `# Exit code:` or `# PID:`). Independent of 
`PRETTY_SERIAL_MARKER`'s mechanism. |
 | _WAIT_STILL_SCREEN_ON_HERE_DOC_INPUT | float | 0 | If this value is greater 
then 0, it is used by `wait_still_screen` before starting to write the script 
into the here document used in `testapi::script_output()` function (see: 
poo#60566). By default this depends on the backend. |
 | AUTOINST_URL_HOSTNAME | string |  | hostname or IP address of host running 
the autoinst webserver endpoint, defaults to the local IP address within the 
qemu network for the qemu backend or the `WORKER_HOSTNAME` otherwise. |
 | UPLOAD_METER | boolean | 0 | Display curl progress meter in `upload_logs()` 
and `upload_assets()` test API functions. |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/myjsonrpc.pm 
new/os-autoinst-5.1787772129.e7dc5f2/myjsonrpc.pm
--- old/os-autoinst-5.1787055635.69d1218/myjsonrpc.pm   2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/myjsonrpc.pm   2026-08-26 
21:22:09.000000000 +0200
@@ -47,7 +47,6 @@
 
     my $json = $cjx->encode(\%cmdcopy);
     bmwqemu::diag(sprintf 'send_json(%d) JSON=%s', fileno($to_fd), $json =~ 
s/"([^"]{30})[^"]+"/"$1"/gr) if is_debug();
-    $json .= "\n";
 
     confess 'myjsonrpc: called on undefined file descriptor' unless defined 
$to_fd;
     my $written_bytes = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/t/05-distribution.t 
new/os-autoinst-5.1787772129.e7dc5f2/t/05-distribution.t
--- old/os-autoinst-5.1787055635.69d1218/t/05-distribution.t    2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/t/05-distribution.t    2026-08-26 
21:22:09.000000000 +0200
@@ -381,7 +381,7 @@
     like $typed, qr/echo '_OAPV=\d+;_oap\(\)/, 'The version tag is persisted 
together with the hook definition';
 };
 
-subtest 'serial_terminal_redirection_guard' => sub {
+subtest 'serial markers are skipped for manual redirections and multiline 
commands' => sub {
     my $d = distribution->new;
     my $mock_testapi = Test::MockModule->new('testapi');
     my $mock_bmwqemu = Test::MockModule->new('bmwqemu');
@@ -402,6 +402,8 @@
 
     my @cases = (
         {cmd => 'foo', guard => 0, msg => 'normal command without serial 
redirection does not trigger the guard'},
+        {cmd => "foo\n", guard => 0, msg => 'trailing newline characters does 
not trigger the guard'},
+        {cmd => "foo\nbar\n", guard => 2, msg => 'newline characters trigger 
the guard'},
         {cmd => 'foo | tee /dev/ttyS0', guard => 1, msg => 'piping to the 
serial terminal triggers the guard'},
         {cmd => 'bar > /dev/ttyS0', guard => 1, msg => 'redirection to the 
serial terminal triggers the guard'},
         {cmd => 'baz >> /dev/ttyS0', guard => 1, msg => 'appending to the 
serial terminal triggers the guard'},
@@ -416,13 +418,18 @@
         $d->{serial_term_prompt} = '# ';
 
         $d->script_run($case->{cmd});
-        if ($case->{guard}) {
+        if ($case->{guard} == 1) {
             like $typed, qr/_OANM=1; /, $case->{msg};
             like $diag_msg, qr/Manual redirection to \/dev\/ttyS0 is 
deprecated/, 'deprecation warning shown';
         }
+        elsif ($case->{guard} == 2) {
+            like $typed, qr/_OANM=1; /, $case->{msg};
+            like $diag_msg, qr/Temporarily disabling.*newline characters/, 
'info message shown';
+        }
         else {
             unlike $typed, qr/_OANM=1; /, $case->{msg};
             unlike $diag_msg, qr/Manual redirection to \/dev\/ttyS0 is 
deprecated/, 'no deprecation warning for normal command';
+            unlike $diag_msg, qr/Temporarily disabling.*newline characters/, 
'no newline info shown';
         }
         is $vars{PRETTY_SERIAL_MARKER}, 1, "PRETTY_SERIAL_MARKER is active 
again after '$case->{cmd}'";
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-autoinst-5.1787055635.69d1218/t/17-basetest.t 
new/os-autoinst-5.1787772129.e7dc5f2/t/17-basetest.t
--- old/os-autoinst-5.1787055635.69d1218/t/17-basetest.t        2026-08-18 
14:20:35.000000000 +0200
+++ new/os-autoinst-5.1787772129.e7dc5f2/t/17-basetest.t        2026-08-26 
21:22:09.000000000 +0200
@@ -571,13 +571,20 @@
 
     my @test_cases = (
         {
-            name => 'expected regex is visible when PRETTY_SERIAL_MARKER is 0',
-            vars => {PRETTY_SERIAL_MARKER => 0},
+            name => 'expected regex is visible when PRETTY_SERIAL_OUTPUT is 0 
and PRETTY_SERIAL_MARKER is 1',
+            vars => {PRETTY_SERIAL_OUTPUT => 0, PRETTY_SERIAL_MARKER => 1},
             params => ['regex', 'ok', 'some output marker', internal_marker => 
1, marker_pattern => 'marker'],
             expected => [qr/# wait_serial expected: regex/],
             not_expected => [],
         },
         {
+            name => 'expected regex is hidden when PRETTY_SERIAL_OUTPUT is 1 
and PRETTY_SERIAL_MARKER is 0',
+            vars => {PRETTY_SERIAL_OUTPUT => 1, PRETTY_SERIAL_MARKER => 0},
+            params => ['regex', 'ok', "some output\nmarker\n", internal_marker 
=> 1, marker_pattern => 'marker'],
+            expected => [qr/some output\n\s*\n/],
+            not_expected => [qr/# wait_serial expected: regex/],
+        },
+        {
             name => 'expected regex is hidden by default (no pretty vars set)',
             vars => {},
             params => ['regex', 'ok', 'some output marker', internal_marker => 
1, marker_pattern => 'marker'],
@@ -585,8 +592,8 @@
             not_expected => [qr/# wait_serial expected: regex/],
         },
         {
-            name => 'expected regex is hidden and literal marker is stripped 
when PRETTY_SERIAL_MARKER is set',
-            vars => {PRETTY_SERIAL_MARKER => 1},
+            name => 'expected regex is hidden and literal marker is stripped 
when PRETTY_SERIAL_OUTPUT is set',
+            vars => {PRETTY_SERIAL_OUTPUT => 1},
             params => ['regex', 'ok', "some output\nmarker\n", internal_marker 
=> 1, marker_pattern => 'marker'],
             expected => [qr/some output\n\s*\n/],
             not_expected => [qr/# wait_serial expected: regex/],
@@ -600,7 +607,7 @@
         },
         {
             name => 'Exit code is displayed when capture_name is provided',
-            vars => {PRETTY_SERIAL_MARKER => 1},
+            vars => {PRETTY_SERIAL_OUTPUT => 1},
             params => ['regex', 'ok', "command output\nOA:DONE-1234-0-\n", 
internal_marker => 1, marker_pattern => qr/OA:DONE-[0-9a-f]{4}-(\d+)-/, 
capture_name => 'Exit code'],
             expected => [qr/# Exit code: 0/, qr/command output\n\s*\n/],
             not_expected => [qr/# wait_serial expected: regex/],
@@ -614,14 +621,14 @@
         },
         {
             name => 'no hiding occurs if it is not an internal marker even if 
pretty vars are set',
-            vars => {PRETTY_SERIAL_MARKER => 1, HIDE_MARKER_EVALUATION => 1},
+            vars => {PRETTY_SERIAL_OUTPUT => 1, HIDE_MARKER_EVALUATION => 1},
             params => ['regex', 'ok', 'some output marker', internal_marker => 
0, marker_pattern => 'marker'],
             expected => [qr/# wait_serial expected: regex/],
             not_expected => [],
         },
         {
             name => 'regex marker is provided but string does not match (e.g. 
on timeout)',
-            vars => {PRETTY_SERIAL_MARKER => 1},
+            vars => {PRETTY_SERIAL_OUTPUT => 1},
             params => ['regex', 'fail', "some output that did not hit the 
marker\n", internal_marker => 1, marker_pattern => 
qr/OA:DONE-[0-9a-f]{4}-(\d+)-/, capture_name => 'Exit code'],
             expected => [qr/some output that did not hit the marker\n/],
             not_expected => [qr/# Exit code:/],

++++++ os-autoinst.obsinfo ++++++
--- /var/tmp/diff_new_pack.SFsZfD/_old  2026-09-02 17:00:06.258848440 +0200
+++ /var/tmp/diff_new_pack.SFsZfD/_new  2026-09-02 17:00:06.270848857 +0200
@@ -1,5 +1,5 @@
 name: os-autoinst
-version: 5.1787055635.69d1218
-mtime: 1787055635
-commit: 69d12181d071203c9ce43249351c5f5ac6760a3e
+version: 5.1787772129.e7dc5f2
+mtime: 1787772129
+commit: e7dc5f2d2570ad6384c32f6c1966ee3dc1f43691
 

Reply via email to