From 489d00faaea6b1490210c28a669cda120312d029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C5=8Dan?= Date: Wed, 25 Feb 2026 20:53:32 -0700 Subject: [PATCH 1/2] ci: bump external actions to current stable versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - actions/checkout: v4 → v6 (node24 runtime, persist creds to separate file) - perl-actions/perl-versions: v1 → v2 (supports 'latest' keyword, multiple targets) - perl-actions/install-with-cpm: stays at v1 (floating tag already resolves to v1.9) --- .github/workflows/testsuite.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index 5d4f14682..b4e79b2e2 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - run: perl -V - name: install dependencies from cpanfile.ci uses: perl-actions/install-with-cpm@v1 @@ -51,7 +51,7 @@ jobs: perl-versions: ${{ steps.action.outputs.perl-versions }} steps: - id: action - uses: perl-actions/perl-versions@v1 + uses: perl-actions/perl-versions@v2 with: since-perl: v5.10 with-devel: true @@ -77,7 +77,7 @@ jobs: container: perldocker/perl-tester:${{ matrix.perl-version }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - run: perl -V - name: Install Dependencies run: | From 4d0a6e9dd26572f5e55c5e15f57c4d285e65a1c2 Mon Sep 17 00:00:00 2001 From: Koan Bot Date: Thu, 26 Feb 2026 10:51:44 -0700 Subject: [PATCH 2/2] Fix #300: guard field access in interactive mode post-processing Guard display and formatter field() calls with check_field() in _post_process_interactive so that 'yath failed --interactive' no longer crashes with "The 'quiet' field does not exist" when the display/formatter prefixes lack those fields. Adds a regression test for 'failed -i'. Co-Authored-By: Claude --- lib/App/Yath/Options/Debug.pm | 8 +++++--- t/integration/failed.t | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/App/Yath/Options/Debug.pm b/lib/App/Yath/Options/Debug.pm index c41fd644e..dc36f92b9 100644 --- a/lib/App/Yath/Options/Debug.pm +++ b/lib/App/Yath/Options/Debug.pm @@ -168,12 +168,14 @@ sub _post_process_interactive { ${$settings->debug->vivify_field('fifo')} = $fifo; if ($settings->check_prefix('display')) { - $settings->display->field(quiet => 0); - $settings->display->field(verbose => 1) unless $settings->display->verbose; + my $display = $settings->display; + $display->field(quiet => 0) if $display->check_field('quiet'); + $display->field(verbose => 1) if $display->check_field('verbose') && !$display->verbose; } if ($settings->check_prefix('formatter')) { - $settings->formatter->field(qvf => 0); + my $formatter = $settings->formatter; + $formatter->field(qvf => 0) if $formatter->check_field('qvf'); } if ($settings->check_prefix('run')) { diff --git a/t/integration/failed.t b/t/integration/failed.t index c0c890325..e8d450665 100644 --- a/t/integration/failed.t +++ b/t/integration/failed.t @@ -34,6 +34,20 @@ yath( unlike($out->{output}, qr{pass\.tx}, "'pass.tx' was not seen as a failure when reading the log"); }, ); + + # GH #300: 'yath failed --interactive' should not crash with + # "The 'quiet' field does not exist" + $out = yath( + command => 'failed', + args => ['-i', $logfile], + exit => 0, + test => sub { + my $out = shift; + + ok(!$out->{exit}, "'failed -i' command exits true"); + unlike($out->{output}, qr{field does not exist}, "'failed -i' does not crash on missing display fields"); + }, + ); }, );