diff --git a/lib/rbs/cli.rb b/lib/rbs/cli.rb index 52e483e79..f8c855e36 100644 --- a/lib/rbs/cli.rb +++ b/lib/rbs/cli.rb @@ -990,7 +990,7 @@ def run_annotate(args, options) args.each do |file| path = Pathname(file) if path.directory? - Pathname.glob((path + "**/*.rbs").to_s).each do |path| + path.glob("**/*.rbs").each do |path| stdout.puts "Processing #{path}..." annotator.annotate_file(path) end diff --git a/lib/rbs/file_finder.rb b/lib/rbs/file_finder.rb index 7b8199a1f..020dfe81f 100644 --- a/lib/rbs/file_finder.rb +++ b/lib/rbs/file_finder.rb @@ -12,7 +12,7 @@ def self.each_file(path, immediate: nil, skip_hidden:, &block) yield path when path.directory? - paths = Pathname.glob("#{path}/**/*.rbs") + paths = path.glob("**/*.rbs") if skip_hidden paths.select! do |child| diff --git a/test/rbs/file_finder_test.rb b/test/rbs/file_finder_test.rb index 836a9c65a..dda51455f 100644 --- a/test/rbs/file_finder_test.rb +++ b/test/rbs/file_finder_test.rb @@ -44,4 +44,12 @@ def test_dir_path assert_equal [tmpdir + "_private/app/x.rbs"], FileFinder.each_file(tmpdir + "_private", skip_hidden: true).to_a assert_equal [tmpdir + "_private/_internal/y.rbs", tmpdir + "_private/app/x.rbs"], FileFinder.each_file(tmpdir + "_private", skip_hidden: false).to_a end + + def test_dir_path_with_glob_metacharacters + (tmpdir / "sig[1]").mkpath + (tmpdir / "sig[1]/c.rbs").write("") + + assert_equal [tmpdir + "sig[1]/c.rbs"], FileFinder.each_file(tmpdir + "sig[1]", skip_hidden: true).to_a + assert_equal [tmpdir + "sig[1]/c.rbs"], FileFinder.each_file(tmpdir + "sig[1]", skip_hidden: false).to_a + end end