1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
Description: prism is not in the archive
Author: Simon Quigley <tsimonq2@debian.org>
Origin: vendor
Last-Update: 2026-02-10
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/lib/minitest/path_expander.rb
+++ b/lib/minitest/path_expander.rb
@@ -1,4 +1,3 @@
-require "prism"
require "pathname" # for ruby 3
module Minitest; end # :nodoc:
@@ -408,7 +407,7 @@ class Minitest::PathExpander < Minitest:
file[line-1..].each do |l|
ruby << l
- return ruby if Prism.parse_success? ruby
+ return ruby
end
nil
--- a/lib/minitest/complete.rb
+++ b/lib/minitest/complete.rb
@@ -38,16 +38,36 @@ path = argv.find_all { |f| File.file? f
exit unless comp_re && path
-require "prism"
+require "ripper"
-names, queue = [], [Prism.parse_file(path).value]
+source = File.read(path)
+root = Ripper.sexp(source)
-while node = queue.shift do
- if node.type == :def_node then
- name = node.name
- names << name if name =~ comp_re
+# Ripper returns nil on parse failure (e.g. syntax error in newer Ruby features)
+if root.nil?
+ warn "Ripper failed to parse #{path} — skipping or aborting as appropriate"
+ exit 1 # or handle however the original script does
+end
+
+names, queue = [], [root]
+
+while node = queue.shift
+ if node.is_a?(Array) && node[0] == :def
+ # Normal instance method def — corresponds to Prism's :def_node
+ name_node = node[1]
+ if name_node.is_a?(Array) && name_node[0].is_a?(Symbol) && name_node[0].to_s.start_with?("@")
+ name = name_node[1] # the actual method name string
+ names << name if name =~ comp_re
+ end
+
+ # Skip the method body (bodystmt, usually node[3])
+ # but still traverse params (node[2]) — defaults can have expressions,
+ # but they almost never contain nested defs, so it's safe and matches
+ # the "no need to process def body" intent.
+ queue << node[2] if node.size > 2 && node[2]
else
- queue.concat node.compact_child_nodes # no need to process def body
+ # Everything else (program, class, module, block, etc.) — recurse fully
+ queue += node.drop(1) if node.is_a?(Array)
end
end
--- a/minitest.gemspec
+++ b/minitest.gemspec
@@ -29,7 +29,6 @@ Gem::Specification.new do |s|
s.specification_version = 4
s.add_development_dependency(%q<hoe>.freeze, ["~> 4.5".freeze])
- s.add_runtime_dependency(%q<prism>.freeze, ["~> 1.5".freeze])
s.add_development_dependency(%q<rdoc>.freeze, [">= 6.0".freeze, "< 8".freeze])
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.21".freeze])
end
|