Skip to content

Commit 6dafa89

Browse files
committed
Expand test directory command resolution with requires
1 parent d6a54d2 commit 6dafa89

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

lib/ruby_lsp/listeners/test_style.rb

+10-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ def resolve_test_commands(items)
3131
next unless path
3232

3333
if tags.include?("test_dir")
34-
full_files << "#{path}/**/*" if children.empty?
34+
if children.empty?
35+
full_files.concat(Dir.glob(
36+
"#{path}/**/{*_test,test_*}.rb",
37+
File::Constants::FNM_EXTGLOB | File::Constants::FNM_PATHNAME,
38+
))
39+
end
3540
elsif tags.include?("test_file")
3641
full_files << path if children.empty?
3742
elsif tags.include?("test_group")
@@ -67,7 +72,10 @@ def resolve_test_commands(items)
6772
end
6873
end
6974

70-
commands << "#{BASE_COMMAND} -Itest #{full_files.join(" ")}" unless full_files.empty?
75+
unless full_files.empty?
76+
commands << "#{BASE_COMMAND} -Itest -e \"ARGV.each { |f| require f }\" #{full_files.join(" ")}"
77+
end
78+
7179
commands
7280
end
7381

test/requests/resolve_test_commands_test.rb

+9-4
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ def test_resolve_test_command_entire_files
212212
result = server.pop_response.response
213213
assert_equal(
214214
[
215-
"bundle exec ruby -Itest /test/server_test.rb /test/store_test.rb",
215+
"bundle exec ruby -Itest -e \"ARGV.each { |f| require f }\" /test/server_test.rb /test/store_test.rb",
216216
],
217217
result[:commands],
218218
)
@@ -221,6 +221,7 @@ def test_resolve_test_command_entire_files
221221

222222
def test_resolve_test_command_entire_directories
223223
with_server do |server|
224+
Dir.stubs(:glob).returns(["/other/test/fake_test.rb", "/other/test/fake_test2.rb"])
224225
server.process_message({
225226
id: 1,
226227
method: "rubyLsp/resolveTestCommands",
@@ -254,7 +255,8 @@ def test_resolve_test_command_entire_directories
254255
result = server.pop_response.response
255256
assert_equal(
256257
[
257-
"bundle exec ruby -Itest /other/test/**/* /test/server_test.rb /test/store_test.rb",
258+
"bundle exec ruby -Itest -e \"ARGV.each { |f| require f }\" /other/test/fake_test.rb " \
259+
"/other/test/fake_test2.rb /test/server_test.rb /test/store_test.rb",
258260
],
259261
result[:commands],
260262
)
@@ -535,6 +537,7 @@ def test_resolve_test_command_nested_test_groups
535537

536538
def test_resolve_test_command_mix_of_directories_and_examples
537539
with_server do |server|
540+
Dir.stubs(:glob).returns(["/test/unit/fake_test.rb", "/test/unit/fake_test2.rb"])
538541
server.process_message({
539542
id: 1,
540543
method: "rubyLsp/resolveTestCommands",
@@ -566,7 +569,7 @@ def test_resolve_test_command_mix_of_directories_and_examples
566569
assert_equal(
567570
[
568571
"bundle exec ruby -Itest /test/server_test.rb --name \"/^ServerTest#test_server$/\"",
569-
"bundle exec ruby -Itest /test/unit/**/*",
572+
"bundle exec ruby -Itest -e \"ARGV.each { |f| require f }\" /test/unit/fake_test.rb /test/unit/fake_test2.rb",
570573
],
571574
result[:commands],
572575
)
@@ -1031,6 +1034,7 @@ def test_resolve_test_command_nested_test_groups
10311034

10321035
def test_resolve_test_command_mix_of_directories_and_examples
10331036
with_server do |server|
1037+
Dir.stubs(:glob).returns(["/test/unit/fake_test.rb", "/test/unit/fake_test2.rb"])
10341038
server.process_message({
10351039
id: 1,
10361040
method: "rubyLsp/resolveTestCommands",
@@ -1062,7 +1066,8 @@ def test_resolve_test_command_mix_of_directories_and_examples
10621066
assert_equal(
10631067
[
10641068
"bundle exec ruby -Itest /test/server_test.rb --testcase \"/^ServerTest$/\" --name \"/test_server$/\"",
1065-
"bundle exec ruby -Itest /test/unit/**/*",
1069+
"bundle exec ruby -Itest -e \"ARGV.each { |f| require f }\" /test/unit/fake_test.rb " \
1070+
"/test/unit/fake_test2.rb",
10661071
],
10671072
result[:commands],
10681073
)

0 commit comments

Comments
 (0)