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

kettle-rb / tree_haver / 20692700137
87%

Build:
DEFAULT BRANCH: main
Ran 04 Jan 2026 12:13PM UTC
Jobs 1
Files 23
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

04 Jan 2026 12:11PM UTC coverage: 87.236% (-3.6%) from 90.827%
20692700137

push

github

pboling
✨ Plugin API for to register backends and languages

### Added

- **External backend registration via `backend_module`** - External gems can now register
  their own pure Ruby backends using the same API as built-in backends. This enables gems
  like rbs-merge to integrate with `TreeHaver.parser_for` without modifying tree_haver:
  ```ruby
  TreeHaver.register_language(
    :rbs,
    backend_module: Rbs::Merge::Backends::RbsBackend,
    backend_type: :rbs,
    gem_name: "rbs"
  )
  # Now TreeHaver.parser_for(:rbs) works!
  ```
- **`Backends::PURE_RUBY_BACKENDS` constant** - Maps pure Ruby backend names to their
  language and module info. Used for auto-registration of built-in backends.
- **`TreeHaver.register_builtin_backends!`** - Registers built-in pure Ruby backends
  (Prism, Psych, Commonmarker, Markly) in the LanguageRegistry using the same API that
  external backends use. Called automatically by `parser_for` on first use.
- **`TreeHaver.ensure_builtin_backends_registered!`** - Idempotent helper that ensures
  built-in backends are registered exactly once.
- **`parser_for` now supports registered `backend_module` backends** - When a language
  has a registered `backend_module`, `parser_for` will use it. This enables external
  gems to provide language support without tree-sitter grammars:
  - Checks LanguageRegistry for registered `backend_module` entries
  - Creates parser from the backend module's `Parser` and `Language` classes
  - Falls back to tree-sitter and Citrus if no backend_module matches
- **RBS dependency tags in `DependencyTags`** - New RSpec tags for RBS parsing:
  - `:rbs_grammar` - tree-sitter-rbs grammar is available and parsing works
  - `:rbs_parsing` - at least one RBS parser (rbs gem OR tree-sitter-rbs) is available
  - `:rbs_gem` - the official rbs gem is available (MRI only)
  - Negated versions: `:not_rbs_grammar`, `:not_rbs_parsing`, `:not_rbs_gem`
  - New availability methods: `tree_sitter_rbs_available?`, `rbs_gem_av... (continued)

783 of 1031 branches covered (75.95%)

Branch coverage included in aggregate %.

46 of 68 new or added lines in 4 files covered. (67.65%)

82 existing lines in 6 files now uncovered.

2231 of 2424 relevant lines covered (92.04%)

37.63 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
5
95.8
-3.8% lib/tree_haver/node.rb
17
81.52
-13.83% lib/tree_haver.rb

Uncovered Existing Lines

Lines Coverage ∆ File
4
95.86
-2.97% lib/tree_haver/backends/commonmarker.rb
8
94.51
-3.05% lib/tree_haver/backends/markly.rb
16
79.22
-2.38% lib/tree_haver/backends/citrus.rb
18
79.37
0.23% lib/tree_haver/backends/prism.rb
18
83.02
-2.53% lib/tree_haver/backends/psych.rb
18
81.52
-13.83% lib/tree_haver.rb
Jobs
ID Job ID Ran Files Coverage
1 20692700137.1 04 Jan 2026 12:13PM UTC 23
87.24
GitHub Action Run
Source Files on build 20692700137
  • Tree
  • List 23
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 8f63f736 on github
  • Prev Build on main (#20658050734)
  • Next Build on main (#20692966108)
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