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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 141cf04a77bd50b8802a20eb098ddb03352b08fa6b1592b95180dcf336cc25e1
4
- data.tar.gz: 134418492ecd86ef348221dfb7cef3f7c459acee00318c2669bdd666dc37d4ba
3
+ metadata.gz: 1f88732dc79b665917e925613ebeed944e011bb3ecb20248ebc940a48069fd41
4
+ data.tar.gz: '093f3bc6b818083e4205598dcef5782d2fb201e742464758c9c00f99ff3fba50'
5
5
  SHA512:
6
- metadata.gz: bafe3a43549cecf6e38a3c8f68c4f072348050d2a3807c4ad8fa9ec2f1d073892abaf5b4300e750a2282849c1bdd081c9ef122b1f2dcb0c5044bddedb451c7b2
7
- data.tar.gz: 62e7cd0947fdda50ea54f9e9a1b07a05c142388ef56a7a25a9ebb177f12804883cc3fc59dbfbbd3d5f08d062f59f89e850bb5d71733521344c53b5eec19ada78
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.1...HEAD
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.461-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
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
- rescue TreeHaver::NotAvailable, TreeHaver::Error, StandardError
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
@@ -10,7 +10,7 @@ module TreeHaver
10
10
  # Current version of the tree_haver gem
11
11
  #
12
12
  # @return [String] the version string (e.g., "3.0.0")
13
- VERSION = "3.1.1"
13
+ VERSION = "3.1.2"
14
14
  end
15
15
 
16
16
  # Traditional location for VERSION constant
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.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.1
293
- changelog_uri: https://github.com/kettle-rb/tree_haver/blob/v3.1.1/CHANGELOG.md
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.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