From 734fd79816c4935028188918a6f5b26357b5ab13 Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Sat, 29 Aug 2026 18:41:55 +0200 Subject: [PATCH 1/2] Treat signature directory paths literally --- lib/rbs/cli.rb | 2 +- lib/rbs/file_finder.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rbs/cli.rb b/lib/rbs/cli.rb index 52e483e798..f8c855e361 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 7b8199a1fb..020dfe81f2 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| From 4f136ffa68c93d6cee8be29af4d12fb150c280ba Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Fri, 18 Sep 2026 16:09:18 +0900 Subject: [PATCH 2/2] Add a test for directory paths containing glob metacharacters Co-Authored-By: Claude Opus 5 --- test/rbs/file_finder_test.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/rbs/file_finder_test.rb b/test/rbs/file_finder_test.rb index 836a9c65a8..dda51455f0 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