tree_haver 3.1.1 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +22 -1
- data/README.md +1 -1
- data/lib/tree_haver/backends/mri.rb +10 -0
- data/lib/tree_haver/rspec/dependency_tags.rb +49 -2
- data/lib/tree_haver/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1f88732dc79b665917e925613ebeed944e011bb3ecb20248ebc940a48069fd41
|
|
4
|
+
data.tar.gz: '093f3bc6b818083e4205598dcef5782d2fb201e742464758c9c00f99ff3fba50'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2290e9e88865420ba8c39bb26af72e866797a5efeff30177b6c34d10d066014daf4e473f2a240647428d6d452bd0a46aa8828da5b2161723a37b286508c075c6
|
|
7
|
+
data.tar.gz: f31f3e85b30e4558cfbd7c6beb5307938c0a2aceb369b660bf16a3291beac095e5d2eb71291057c3ed49c280c56a85968d0d9bdb04b2d34406ec68c356372338
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,25 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.1.2] - 2025-12-29
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.1.2][3.1.2t]
|
|
36
|
+
- COVERAGE: 87.40% -- 2171/2484 lines in 22 files
|
|
37
|
+
- BRANCH COVERAGE: 67.04% -- 726/1083 branches in 22 files
|
|
38
|
+
- 90.03% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- Enhanced `TreeHaver::RSpec::DependencyTags` debugging
|
|
43
|
+
- `env_summary` method returns relevant environment variables for diagnosis
|
|
44
|
+
- `grammar_works?` now logs detailed trace when `TREE_HAVER_DEBUG=1`
|
|
45
|
+
- `before(:suite)` prints both env vars and dependency status when debugging
|
|
46
|
+
- Helps diagnose differences between local and CI environments
|
|
47
|
+
- Many new specs for:
|
|
48
|
+
- TreeHaver::GrammarFinder
|
|
49
|
+
- TreeHaver::Node
|
|
50
|
+
- TreeHaver::Tree
|
|
51
|
+
|
|
33
52
|
## [3.1.1] - 2025-12-28
|
|
34
53
|
|
|
35
54
|
- TAG: [v3.1.1][3.1.1t]
|
|
@@ -419,7 +438,9 @@ Despite the major version bump to 3.0.0 (following semver due to the breaking `L
|
|
|
419
438
|
|
|
420
439
|
- Initial release
|
|
421
440
|
|
|
422
|
-
[Unreleased]: https://github.com/kettle-rb/tree_haver/compare/v3.1.
|
|
441
|
+
[Unreleased]: https://github.com/kettle-rb/tree_haver/compare/v3.1.2...HEAD
|
|
442
|
+
[3.1.2]: https://github.com/kettle-rb/tree_haver/compare/v3.1.1...v3.1.2
|
|
443
|
+
[3.1.2t]: https://github.com/kettle-rb/tree_haver/releases/tag/v3.1.2
|
|
423
444
|
[3.1.1]: https://github.com/kettle-rb/tree_haver/compare/v3.1.0...v3.1.1
|
|
424
445
|
[3.1.1t]: https://github.com/kettle-rb/tree_haver/releases/tag/v3.1.1
|
|
425
446
|
[3.1.0]: https://github.com/kettle-rb/tree_haver/compare/v3.0.0...v3.1.0
|
data/README.md
CHANGED
|
@@ -1943,7 +1943,7 @@ Thanks for RTFM. ☺️
|
|
|
1943
1943
|
[📌gitmoji]: https://gitmoji.dev
|
|
1944
1944
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1945
1945
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1946
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.
|
|
1946
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.484-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1947
1947
|
[🔐security]: SECURITY.md
|
|
1948
1948
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1949
1949
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -18,10 +18,20 @@ module TreeHaver
|
|
|
18
18
|
#
|
|
19
19
|
# Attempts to require ruby_tree_sitter on first call and caches the result.
|
|
20
20
|
#
|
|
21
|
+
# @note When this method returns true, the FFI backend becomes permanently
|
|
22
|
+
# unavailable for the remainder of the process. This is because loading
|
|
23
|
+
# ruby_tree_sitter defines `::TreeSitter::Parser`, which the FFI backend
|
|
24
|
+
# checks to detect conflicts. The MRI backend statically links tree-sitter,
|
|
25
|
+
# while FFI dynamically links libtree-sitter.so - when both are loaded,
|
|
26
|
+
# FFI will segfault when trying to set a language on a parser due to
|
|
27
|
+
# incompatible pointer types from different tree-sitter builds.
|
|
28
|
+
#
|
|
21
29
|
# @return [Boolean] true if ruby_tree_sitter is available
|
|
30
|
+
# @see TreeHaver::Backends::FFI.available? FFI availability check
|
|
22
31
|
# @example
|
|
23
32
|
# if TreeHaver::Backends::MRI.available?
|
|
24
33
|
# puts "MRI backend is ready"
|
|
34
|
+
# # Note: FFI backend is now blocked for this process
|
|
25
35
|
# end
|
|
26
36
|
class << self
|
|
27
37
|
def available?
|
|
@@ -530,6 +530,21 @@ module TreeHaver
|
|
|
530
530
|
}
|
|
531
531
|
end
|
|
532
532
|
|
|
533
|
+
# Get environment variable summary for debugging
|
|
534
|
+
#
|
|
535
|
+
# @return [Hash{String => String}] relevant environment variables
|
|
536
|
+
def env_summary
|
|
537
|
+
{
|
|
538
|
+
"TREE_SITTER_BASH_PATH" => ENV["TREE_SITTER_BASH_PATH"],
|
|
539
|
+
"TREE_SITTER_TOML_PATH" => ENV["TREE_SITTER_TOML_PATH"],
|
|
540
|
+
"TREE_SITTER_JSON_PATH" => ENV["TREE_SITTER_JSON_PATH"],
|
|
541
|
+
"TREE_SITTER_JSONC_PATH" => ENV["TREE_SITTER_JSONC_PATH"],
|
|
542
|
+
"TREE_SITTER_RUNTIME_LIB" => ENV["TREE_SITTER_RUNTIME_LIB"],
|
|
543
|
+
"TREE_HAVER_BACKEND" => ENV["TREE_HAVER_BACKEND"],
|
|
544
|
+
"TREE_HAVER_DEBUG" => ENV["TREE_HAVER_DEBUG"],
|
|
545
|
+
}
|
|
546
|
+
end
|
|
547
|
+
|
|
533
548
|
# Reset all memoized availability checks
|
|
534
549
|
#
|
|
535
550
|
# Useful in tests that need to re-check availability after mocking.
|
|
@@ -550,10 +565,37 @@ module TreeHaver
|
|
|
550
565
|
# @param test_source [String] sample source code to parse
|
|
551
566
|
# @return [Boolean] true if parsing works without errors
|
|
552
567
|
def grammar_works?(language, test_source)
|
|
568
|
+
debug = ENV["TREE_HAVER_DEBUG"]
|
|
569
|
+
env_var = "TREE_SITTER_#{language.to_s.upcase}_PATH"
|
|
570
|
+
env_value = ENV[env_var]
|
|
571
|
+
|
|
572
|
+
if debug
|
|
573
|
+
puts " [grammar_works? #{language}] ENV[#{env_var}] = #{env_value.inspect}"
|
|
574
|
+
puts " [grammar_works? #{language}] Attempting TreeHaver.parser_for(#{language.inspect})..."
|
|
575
|
+
end
|
|
576
|
+
|
|
553
577
|
parser = TreeHaver.parser_for(language)
|
|
578
|
+
if debug
|
|
579
|
+
puts " [grammar_works? #{language}] Parser created: #{parser.class}"
|
|
580
|
+
puts " [grammar_works? #{language}] Parser backend: #{parser.respond_to?(:backend) ? parser.backend : "unknown"}"
|
|
581
|
+
end
|
|
582
|
+
|
|
554
583
|
result = parser.parse(test_source)
|
|
555
|
-
!result.nil? && result.root_node && !result.root_node.has_error?
|
|
556
|
-
|
|
584
|
+
success = !result.nil? && result.root_node && !result.root_node.has_error?
|
|
585
|
+
|
|
586
|
+
if debug
|
|
587
|
+
puts " [grammar_works? #{language}] Parse result nil?: #{result.nil?}"
|
|
588
|
+
puts " [grammar_works? #{language}] Root node: #{result&.root_node&.class}"
|
|
589
|
+
puts " [grammar_works? #{language}] Has error?: #{result&.root_node&.has_error?}"
|
|
590
|
+
puts " [grammar_works? #{language}] Success: #{success}"
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
success
|
|
594
|
+
rescue TreeHaver::NotAvailable, TreeHaver::Error, StandardError => e
|
|
595
|
+
if debug
|
|
596
|
+
puts " [grammar_works? #{language}] Exception: #{e.class}: #{e.message}"
|
|
597
|
+
puts " [grammar_works? #{language}] Returning false"
|
|
598
|
+
end
|
|
557
599
|
false
|
|
558
600
|
end
|
|
559
601
|
|
|
@@ -586,6 +628,11 @@ RSpec.configure do |config|
|
|
|
586
628
|
config.before(:suite) do
|
|
587
629
|
# Print dependency summary if TREE_HAVER_DEBUG is set
|
|
588
630
|
if ENV["TREE_HAVER_DEBUG"]
|
|
631
|
+
puts "\n=== TreeHaver Environment Variables ==="
|
|
632
|
+
deps.env_summary.each do |var, value|
|
|
633
|
+
puts " #{var}: #{value.inspect}"
|
|
634
|
+
end
|
|
635
|
+
|
|
589
636
|
puts "\n=== TreeHaver Test Dependencies ==="
|
|
590
637
|
deps.summary.each do |dep, available|
|
|
591
638
|
status = case available
|
data/lib/tree_haver/version.rb
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tree_haver
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1.
|
|
4
|
+
version: 3.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -289,10 +289,10 @@ licenses:
|
|
|
289
289
|
- MIT
|
|
290
290
|
metadata:
|
|
291
291
|
homepage_uri: https://tree-haver.galtzo.com/
|
|
292
|
-
source_code_uri: https://github.com/kettle-rb/tree_haver/tree/v3.1.
|
|
293
|
-
changelog_uri: https://github.com/kettle-rb/tree_haver/blob/v3.1.
|
|
292
|
+
source_code_uri: https://github.com/kettle-rb/tree_haver/tree/v3.1.2
|
|
293
|
+
changelog_uri: https://github.com/kettle-rb/tree_haver/blob/v3.1.2/CHANGELOG.md
|
|
294
294
|
bug_tracker_uri: https://github.com/kettle-rb/tree_haver/issues
|
|
295
|
-
documentation_uri: https://www.rubydoc.info/gems/tree_haver/3.1.
|
|
295
|
+
documentation_uri: https://www.rubydoc.info/gems/tree_haver/3.1.2
|
|
296
296
|
funding_uri: https://github.com/sponsors/pboling
|
|
297
297
|
wiki_uri: https://github.com/kettle-rb/tree_haver/wiki
|
|
298
298
|
news_uri: https://www.railsbling.com/tags/tree_haver
|
metadata.gz.sig
CHANGED
|
Binary file
|