App-Test-Generator
view release on metacpan or search on metacpan
a body/source key, not a Model::Method instance. POD corrected to
describe the real calling convention.
- Fix README.md's extract-schemas usage example passing two
positional arguments and referencing a nonexistent
lib/Sample/Module.pm with a .yaml extension; corrected to the real
invocation (extract-schemas lib/App/Test/Generator/Sample/Module.pm
&& fuzz-harness-generator -r schemas/greet.yml) and updated its
GitHub Actions example to the same pinned action SHAs already used
in dashboard.yml/mutate.yml.
[Enhancements]
- Add comprehensive black-box subtests to t/unit.t validating the
public, POD-documented API of every .pm file under lib/ (all 27
modules), written strictly against each module's documented
Arguments/Returns contract rather than incidental implementation
behaviour. Where a module's existing dedicated test file
(e.g. t/Planner-Isolation.t, t/TestStrategy.t,
t/Template_unit.t) already exercised its public API exhaustively
in equivalent black-box style, no duplicate coverage was added to
t/unit.t.
- Add missing public-API POD (Purpose, Arguments, Returns, API
specification) to every previously undocumented public method in
Model::Method.pm, which had none beyond a VERSION section; to
Template.pm's get_data_section(); and to Planner.pm's build_plan(),
which previously carried only an internal TODO-style comment
despite being a public method.
- Add Notes sections to Mutation::BooleanNegation, ::ConditionalInversion,
::NumericBoundary, and ::ReturnUndef documenting the context and
line_content fields each mutant carries for Mutator's fast-mode
dedup, and to CoverageGuidedFuzzer.pm documenting that a
target_sub die is only recorded as a bug when the triggering input
is schema-valid.
0.38 Mon May 18 21:19:40 EDT 2026
[Bug fixes]
- Fix missing TER1/TER2/TER3 column in mutation dashboard
- remove duplicate _lcsaj_coverage_for_file calls
- move skipped-annotation note inside summary div
- Fix MUTANT_SKIP_BEGIN/END regex to match only lines where the annotation is the entire content,
preventing false positives in comments and POD
0.37 Mon May 18 14:58:48 EDT 2026
[Enhancements]
- Add MUTANT_SKIP_BEGIN / MUTANT_SKIP_END source annotations to exclude
lines from mutation testing; mismatched markers are fatal. Skipped
line counts appear in the per-file mutation report and summary table.
[Bug fixes]
- Fix fuzz schema generation looking in xt/conf instead of t/conf.
- Fix mutate.yml for external repos: add commit step so mutation.json
is persisted after each run, enabling the dashboard workflow_run
trigger to pick up fresh results.
- Fix BSD::Resource dependency failing on Windows; guard with OS check.
0.36 Sat May 9 18:54:04 EDT 2026
[Bug fixes]
- Fix uninitialized $version warning in CPAN Testers "no failures"
message when the CPAN API returns a 404 (no release data available).
- Fix "Can't open lib/App/Test/Generator.pm" error when test-generator-index
is run from a repository other than ATG itself; ATG version is now
found by searching @INC with fallback to the configured module_file path.
0.35 Sat May 9 09:40:08 EDT 2026
[Enhancements]
- Dashboard footer now shows the App::Test::Generator version used
to generate it, linking to the MetaCPAN distribution page.
- Executive Summary wording now varies by mutation score: positive
framing for high scores, an actionable hint for low scores, and a
clear message when no mutation data is available yet. Thresholds
use med_threshold and low_threshold from %config rather than
magic numbers.
- Coverage dashboard per-file HTML links now work correctly; Devel::Cover
instrumentation restored to use cover -test for accurate per-file
HTML generation.
- Dashboard file links now correctly target blib-lib-* filenames as
generated by Devel::Cover, fixing persistent 404 errors on all
per-file coverage pages.
- generate-test-dashboard now derives the Devel::Cover -select pattern
dynamically from GITHUB_REPOSITORY, making the script portable across
CPAN distributions without hardcoded module paths.
- Fuzz schema generation now correctly looks in t/conf rather than
xt/conf for existing schemas to augment.
- Redundant exclusion of mutant_*.t from prove invocation removed;
mutant stubs are in xt/ and were never matched by the t/ find anyway.
[Bug fixes]
- Fix https://www.cpantesters.org/cpan/report/04c7279a-476f-11f1-bf55-cb595875c975
Make t/type_params.t an extended test
0.34 Sun May 3 10:30:24 EDT 2026
[Bug fixes]
- Emitter::Perl: _emit_void_test() generated ok(!defined $result || 1, ...)
which is a tautology and always passes regardless of return value.
Fixed to ok(!defined $result, '$method returns nothing (void)').
- Generator: schema files named after Perl builtins (e.g. abs.yml) caused
generated tests to emit "use abs" which fails to compile. Added
_is_perl_builtin() guard to prevent builtin names being used as module
names in use_ok() calls.
- bin/test-generator-index: mutant stub generator incorrectly called
new_ok() for class methods such as App::Test::Generator::generate().
Added _is_class_method() helper to detect $class vs $self and emit
the correct calling convention in generated stubs.
- bin/test-generator-index: CPAN Testers failure table showed all
expected NA rows for Perl < 5.036 as noise. Rows below the detected
Perl version cliff are now omitted with a count notice, leaving only
unexpected failures visible.
- CoverageGuidedFuzzer: _load_json_module() used require $mod where $mod
contained '::' which Perl does not convert to path separators for
variable require. Fixed with s{::}{/}g conversion before require.
[Enhancements]
- Comprehensive test suite added across all modules:
- Function tests (white-box) for all private helpers
- Black-box unit tests for every public method against POD API spec
- Integration tests covering 10 end-to-end pipelines
- Edge case / destructive / boundary-condition tests
- Extended tests targeting surviving mutants and coverage gaps
- mutate.yml and dashboard.yml are now portable to any CPAN module.
Copying both files to another module's .github/workflows/ directory
will produce a working mutation test run and coverage dashboard
without modification. ATG-specific behaviour is gated on
github.repository = nigelhorne/App-Test-Generator.
- dashboard.yml: added missing local/bin PATH setup so installed
ATG scripts are found correctly on non-ATG modules.
- mutate.yml: Sample/Module.pm excluded from mutation scoring to
remove 30 artificial survivors from the overall score.
- Emitter::Perl mutation score improved from 37.5% to 100% through
targeted direct assertions on all _emit_*() helper return values.
- t/test-generator-index.t: 33 new tests for detect_perl_version_cliff(),
parse_version(), extract_perl_versions(), make_key(),
confidence_score(), and perldelta_url().
0.33 Tue Apr 21 16:09:24 EDT 2026
- Fixed NumericBoundary mutator incorrectly identifying the '<' in
( run in 1.737 second using v1.01-cache-2.11-cpan-bbb979687b5 )