Changes for version 0.41 - 2026-06-28
- Bug fixes
- Fix bin/test-generator-mutate's per-mutant prove invocation: switch from a workspace-copy + PERL5LIB strategy to in-place mutation of the project's own lib/ file (with save/restore) plus prove -l. The previous approach injected the mutated workspace via PERL5LIB, but test files that use 'use lib "$Bin/../lib"' (a common CPAN idiom) call unshift @INC at compile time, which prepends the project's actual lib/ before the PERL5LIB workspace path. Every test then loaded the original code instead of the mutant, making all 403 mutants survive and producing a 0% kill rate. In-place mutation writes the mutant directly to lib/, so every @INC strategy (PERL5LIB, -l, 'use lib "$Bin/../lib"') sees the mutated code. prove -l is used so tests that rely on -Ilib rather than 'use lib' also find the module. The workspace is retained as a staging area for the compile check; the original file is restored after every prove run regardless of outcome.
Documentation
Demonstrate the schema extractor
Extract test schemas from Perl modules
Extract schemas and optionally emit Perl tests
Generate fuzzing + corpus-based test harnesses from test schemas
Test coverage dashboard generator
Run mutation testing against a Perl test suite
Modules
Fuzz Testing, Mutation Testing, LCSAJ Metrics and Test Dashboard for Perl modules
AFL-style coverage-guided fuzzing for App::Test::Generator
Serialise a test plan to YAML
Static LCSAJ extraction for Perl
Merge LCSAJ path data with runtime hits
Evidence-based model of a single method under test
Negate boolean return expressions to expose missing assertion coverage
Replace return expressions with undef to expose missing undef-return checks in the test suite
Generate and apply mutation tests
Example module for schema extraction testing
Extract test schemas from Perl modules
Template for the test files generated by App::Test::Generator
Debugger backend for LCSAJ coverage
Provides
in lib/App/Test/Generator/Analyzer/Complexity.pm
in lib/App/Test/Generator/Analyzer/Return.pm
in lib/App/Test/Generator/Analyzer/ReturnMeta.pm
in lib/App/Test/Generator/Analyzer/SideEffect.pm
in lib/App/Test/Generator/Emitter/Perl.pm
in lib/App/Test/Generator/Mutant.pm
in lib/App/Test/Generator/Mutation/Base.pm
in lib/App/Test/Generator/Mutation/ConditionalInversion.pm
in lib/App/Test/Generator/Mutation/NumericBoundary.pm
in lib/App/Test/Generator/Planner.pm
in lib/App/Test/Generator/Planner/Fixture.pm
in lib/App/Test/Generator/Planner/Grouping.pm
in lib/App/Test/Generator/Planner/Isolation.pm
in lib/App/Test/Generator/Planner/Mock.pm
in lib/App/Test/Generator/TestStrategy.pm