diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index 711db583..43a379b7 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -94,7 +94,7 @@ jobs: - name: perl -V run: perl -V - name: Install Dependencies - uses: perl-actions/install-with-cpm@v1 + uses: perl-actions/install-with-cpanm@v1 with: sudo: false cpanfile: "cpanfile" diff --git a/Makefile.PL b/Makefile.PL index c4b0be56..d521dcbd 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -22,7 +22,9 @@ WriteMakefile( 'File::Slurper' => 0, 'File::Temp' => 0, 'File::Basename' => 0, - 'Test2::Harness::Util::IPC' => 0, + # Test2::Harness::Util::IPC was renamed to Test2::Harness::IPC::Util. + # t/lib/Test/TMF.pm handles both at runtime; tests skip gracefully + # when neither is available, so no hard dependency is needed. 'Test::MockModule' => 0, }, PREREQ_PM => { diff --git a/cpanfile b/cpanfile index 4e19f2a6..de3edca6 100644 --- a/cpanfile +++ b/cpanfile @@ -20,5 +20,6 @@ on 'test' => sub { requires 'File::Temp' => 0; requires 'File::Path' => 0; requires 'File::Basename' => 0; - requires 'Test2::Harness::Util::IPC' => 0; + # Test2::Harness::Util::IPC was renamed to Test2::Harness::IPC::Util. + # t/lib/Test/TMF.pm handles both at runtime and skips gracefully. }; diff --git a/t/lib/Test/TMF.pm b/t/lib/Test/TMF.pm index 2c60d9a4..662eb2a7 100644 --- a/t/lib/Test/TMF.pm +++ b/t/lib/Test/TMF.pm @@ -18,9 +18,19 @@ use Fcntl qw/SEEK_CUR/; use Cwd 'abs_path'; -use Test2::Harness::Util::IPC qw/run_cmd/; +our $RUN_CMD_AVAILABLE; +BEGIN { + # Test2::Harness::Util::IPC was deprecated in favor of Test2::Harness::IPC::Util. + # On some Perl versions (e.g. 5.20), neither module may compile successfully — + # the old one is a broken deprecation shim and the new one isn't installed. + $RUN_CMD_AVAILABLE = + eval { require Test2::Harness::IPC::Util; Test2::Harness::IPC::Util->import('run_cmd'); 1 } + || eval { require Test2::Harness::Util::IPC; Test2::Harness::Util::IPC->import('run_cmd'); 1 } + || 0; +} -use Exporter 'import'; +use Exporter (); +our @ISA = ('Exporter'); our @EXPORT = qw{ tmf_test_code @@ -29,6 +39,15 @@ our @EXPORT = qw{ }; +sub import { + my $class = shift; + unless ($RUN_CMD_AVAILABLE) { + require Test2::Tools::Basic; + Test2::Tools::Basic::plan( skip_all => "Test2::Harness IPC module not available (run_cmd)" ); + } + $class->export_to_level( 1, $class, @_ ); +} + our $TMP; # directory sub _setup_tmp_dir {