Skip to content

Commit 510eba0

Browse files
authored
- Fix ruby-parse with a folder ending in .rb (#1047)
It's just checking that the path ends with `.rb`, which can happen with folders
1 parent 9a6ee63 commit 510eba0

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

lib/parser/runner.rb

+6-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,12 @@ def process_fragments
242242

243243
def process_files
244244
@files.each do |filename|
245-
source = File.read(filename).force_encoding(@parser.default_encoding)
245+
source = begin
246+
File.read(filename).force_encoding(@parser.default_encoding)
247+
rescue Errno::EISDIR
248+
# Will happen for a folder called `foo.rb`. Just catch this here, it's cheaper than checking every file.
249+
next
250+
end
246251

247252
buffer = Parser::Source::Buffer.new(filename)
248253

test/test_runner_parse.rb

+9
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,13 @@ def test_stdin_input
5858
assert_prints ['--emit-ruby', '-', { stdin_data: '123' }],
5959
's(:int, 123)'
6060
end
61+
62+
def test_folder_with_rb_extension
63+
Dir.mktmpdir do |tmp_dir|
64+
Dir.mkdir("#{tmp_dir}/foo.rb")
65+
File.write("#{tmp_dir}/foo.rb/bar.rb", "123")
66+
67+
assert_prints [tmp_dir], '(int 123)'
68+
end
69+
end
6170
end

0 commit comments

Comments
 (0)