• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kettle-rb / tree_haver / 20907944323
87%

Build:
DEFAULT BRANCH: main
Ran 12 Jan 2026 04:24AM UTC
Jobs 1
Files 30
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 Jan 2026 04:19AM UTC coverage: 86.793% (-1.2%) from 88.026%
20907944323

push

github

pboling
✨ Improved RSpec Support

### Added

- `TreeHaver::RSpec::TestableNode` - A testable node class for creating mock TreeHaver::Node instances
  in tests without requiring an actual parser backend. Available via `require "tree_haver/rspec/testable_node"`
  or automatically when using `require "tree_haver/rspec"`.
  - `TestableNode.create(type:, text:, ...)` - Create a single test node
  - `TestableNode.create_list(...)` - Create multiple test nodes
  - `MockInnerNode` - The underlying mock that simulates backend-specific nodes
  - Top-level `TestableNode` constant for convenience in specs
- **Fully Dynamic Tag Registration** in `TreeHaver::BackendRegistry`:
  - `register_tag(tag_name, category:, backend_name:, require_path:)` - Register a complete dependency tag
    with lazy loading support. External gems can now get full RSpec tag support without any hardcoded
    knowledge in tree_haver.
  - `tag_available?(tag_name)` - Check if a tag's dependency is available, with automatic lazy loading
    via the registered `require_path`
  - `registered_tags` - Get all registered tag names
  - `tags_by_category(category)` - Get tags filtered by category (:backend, :gem, :parsing, :grammar, :engine, :other)
  - `tag_metadata(tag_name)` - Get full metadata for a registered tag
  - `tag_summary` - Get availability status of all registered tags

### Changed

- **Fully Dynamic Backend Availability** in `BackendRegistry` and `DependencyTags`:
  - `register_tag` now dynamically defines `*_available?` methods on `DependencyTags` at registration time
  - External gems automatically get availability methods when they call `register_tag`
  - No changes to tree_haver are needed for new external backend gems
  - Built-in backends (prism, psych, citrus, parslet) retain explicit methods
  - `summary` method dynamically includes registered backends from BackendRegistry
  - `backend_availability_methods` and `backend_tags` hashes are built dynamically
- RSpec exclusion filters fo... (continued)

931 of 1191 branches covered (78.17%)

Branch coverage included in aggregate %.

22 of 58 new or added lines in 3 files covered. (37.93%)

2309 of 2542 relevant lines covered (90.83%)

69.35 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
3
70.7
-1.6% lib/tree_haver/parser.rb
33
60.31
-38.0% lib/tree_haver/backend_registry.rb
Jobs
ID Job ID Ran Files Coverage
1 20907944323.1 12 Jan 2026 04:24AM UTC 30
86.79
GitHub Action Run
Source Files on build 20907944323
  • Tree
  • List 30
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • ffa8b209 on github
  • Prev Build on main (#20893681361)
  • Next Build on main (#20908168960)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc