diff --git a/Makefile b/Makefile index 94918a966..ba010de65 100644 --- a/Makefile +++ b/Makefile @@ -376,7 +376,7 @@ endif test-cpan-release-acceptance: build @mkdir -p build/reports @log="build/reports/cpan-release-acceptance.log"; \ - modules='PPR,Catalyst,Mojolicious,Image::ExifTool,DateTime,Template,DBIx::Class'; \ + modules='PPR,Catalyst,Mojolicious,Image::ExifTool,DateTime,Template,DBIx::Class,Excel::Writer::XLSX'; \ echo "CPAN release acceptance log: $$log"; \ echo "Selected modules: $$modules" > "$$log"; \ echo "Commit: $$(git rev-parse --short HEAD)" >> "$$log"; \ diff --git a/dev/tools/cpan_random_tester.pl b/dev/tools/cpan_random_tester.pl index d61328e57..4c9c24ffa 100644 --- a/dev/tools/cpan_random_tester.pl +++ b/dev/tools/cpan_random_tester.pl @@ -84,8 +84,9 @@ # cap is extended when necessary so every exception gets its full soft timeout # plus the configured idle grace period. my %MODULE_TIMEOUT_SECONDS = ( - 'DBIx::Class' => 3600, - 'Image::ExifTool' => 3600, + 'DBIx::Class' => 3600, + 'Excel::Writer::XLSX' => 7200, + 'Image::ExifTool' => 3600, ); # CPAN package index @@ -2207,7 +2208,7 @@ sub print_usage { - Targets are randomly chosen from modules that haven't passed yet (or from --modules if specified). - Dependencies discovered during a run are recorded too (PASS/FAIL). - - A few heavy targets (e.g. DBIx::Class) have a higher per-module timeout in the script. + - A few heavy targets (e.g. DBIx::Class and Excel::Writer::XLSX) have a higher per-module timeout in the script. Their effective hard cap is also extended to include the configured idle grace period, so a smaller global --max-runtime does not cancel the exception. - Long targets are not killed merely for crossing --timeout if their output diff --git a/dev/tools/tests/cpan_random_tester_parser.t b/dev/tools/tests/cpan_random_tester_parser.t index 04c5cbae4..f15e7fd31 100644 --- a/dev/tools/tests/cpan_random_tester_parser.t +++ b/dev/tools/tests/cpan_random_tester_parser.t @@ -263,7 +263,15 @@ is(pass_percentage(8833, 8277), '51.6', 'pass percentage excludes skipped and standard-Perl-failed modules'); is(pass_percentage(0, 0), '0.0', 'empty pass/fail denominator is stable'); -my %slow = ('Image::ExifTool' => 3600); +my %slow = ( + 'Excel::Writer::XLSX' => 7200, + 'Image::ExifTool' => 3600, +); +is_deeply( + [effective_timeout_limits('Excel::Writer::XLSX', 120, 600, 300, \%slow)], + [7200, 7800], + 'Excel::Writer::XLSX keeps its extended soft limit and idle grace', +); is_deeply( [effective_timeout_limits('Image::ExifTool', 120, 600, 300, \%slow)], [3600, 4200], diff --git a/dev/tools/tests/cpan_release_acceptance_contract.t b/dev/tools/tests/cpan_release_acceptance_contract.t index 8cc5922f3..28b53b6f0 100644 --- a/dev/tools/tests/cpan_release_acceptance_contract.t +++ b/dev/tools/tests/cpan_release_acceptance_contract.t @@ -16,7 +16,7 @@ open my $tf, '<', $tester or die "Cannot read $tester: $!"; my $tester_text = do { local $/; <$tf> }; close $tf; -my @modules = qw(PPR Catalyst Mojolicious Image::ExifTool DateTime Template DBIx::Class); +my @modules = qw(PPR Catalyst Mojolicious Image::ExifTool DateTime Template DBIx::Class Excel::Writer::XLSX); like($make_text, qr/^test-cpan-release-acceptance: build$/m, 'release acceptance target builds before testing'); like($make_text, qr/--modules "\$\$modules".*--jobs 8 --strict-exit/s, diff --git a/docs/about/changelog.md b/docs/about/changelog.md index 2a6e9ee11..b57716fd0 100644 --- a/docs/about/changelog.md +++ b/docs/about/changelog.md @@ -6,6 +6,8 @@ priorities and future plans. ## Work in progress +- Extend CPAN release acceptance coverage to Excel::Writer::XLSX with a timeout suitable for its large test suite. + - Restore `local` compatibility for tied hash and array elements, sparse arrays, magic stashes, implicit `$_` foreach aliases (including early return), and localized regex captures on both execution backends.