ast-merge v4.0.4 released!
4.0.4 - 2026-01-20
- TAG: v4.0.4
- COVERAGE: 96.37% β 2552/2648 lines in 50 files
- BRANCH COVERAGE: 87.22% β 812/931 branches in 50 files
- 98.81% documented
Added
- RSpec Split Loading Pattern: New files for granular RSpec dependency tag loading
lib/ast/merge/rspec/setup.rb- Loads only registry and helper classes (no RSpec configuration)lib/ast/merge/rspec/dependency_tags_helpers.rb- DependencyTags helper modulelib/ast/merge/rspec/dependency_tags_config.rb- RSpec.configure block with exclusion filters- Enables registering known gems before RSpec.configure runs (solving catch-22 problem)
- Required for ast-merge test suite to preserve SimpleCov coverage
- Required for merge gems that register other merge gems as dependencies
Ast::Merge::RSpec::MergeGemRegistry.force_check_availability!: Deferred availability checking for accurate test coverage- Called automatically in
before(:suite)hook AFTER SimpleCov is loaded - Prevents premature gem loading that would bypass coverage instrumentation
- Ensures accurate coverage reporting in merge gem test suites
- Called automatically in
Changed
- RSpec Dependency Tags: Fixed exclusion filter setup to properly skip tests when optional gems unavailable
- Exclusion filters now set during
RSpec.configure(not inbefore(:suite)which runs too late) - Fixed RSpec API usage:
config.filter_run_excluding tag => true(not[tag] = true) ast-mergeuses split loading pattern inspec/spec_helper.rbandspec/config/tree_haver.rbmarkdown-mergeuses split pattern (registers:commonmarker_merge,:markly_merge)markly-mergeuses split pattern (registers:prism_merge)commonmarker-mergeuses simple pattern (no registrations needed)
- Exclusion filters now set during
Fixed
- Test coverage accuracy: Fixed premature gem loading that bypassed SimpleCov instrumentation
MergeGemRegistry.registered_gemsnow returns ONLY explicitly registered gems, not all KNOWN_GEMS- RSpec exclusion filters are configured in
before(:suite)hook afterforce_check_availability!runs - This ensures gems are loaded AFTER SimpleCov sets up coverage instrumentation
- Previously, commonmarker-merge reported only 11 lines covered when it should have been far more
- RSpec Dependency Tags: Tests with tags like
:markdown_merge,:markly_mergenow properly skip when those gems arenβt available- Fixed 141 test failures caused by tests running without required gems loaded
- Removed
requirestatements from integration specs - dependency tags handle gem loading - Fixed tag usage: Tests using
Markdown::Merge::PartialTemplateMergerwith:marklybackend now correctly tagged with both:markdown_mergeand:markly_merge
- Thread-Safety Spec: Fixed JRuby concurrency test failure in
NodeTyping::Normalizer#canonical_type- Changed from unsynchronized
Arrayto thread-safeQueuefor collecting results from concurrent threads - Eliminates
ConcurrencyError: Detected invalid array contents due to unsynchronized modifications
- Changed from unsynchronized
Many paths lead to being a sponsor or a backer of this project. Are you on such a path?