diff --git a/lib/ruby_lsp/ruby_lsp_rspec/addon.rb b/lib/ruby_lsp/ruby_lsp_rspec/addon.rb index 45948ff..96dbcd6 100644 --- a/lib/ruby_lsp/ruby_lsp_rspec/addon.rb +++ b/lib/ruby_lsp/ruby_lsp_rspec/addon.rb @@ -116,8 +116,11 @@ def resolve_test_commands(items) elsif tags.include?("test_group") start_line = item.dig(:range, :start, :line) commands << "#{@rspec_command} -r #{FORMATTER_PATH} -f #{FORMATTER_NAME} #{path}:#{start_line + 1}" - else + elsif tags.include?("test_case") full_files << "#{path}:#{item.dig(:range, :start, :line) + 1}" + else + # whole project + full_files << path end queue.concat(children) diff --git a/spec/addon_spec.rb b/spec/addon_spec.rb index f5a01a5..b2c3554 100644 --- a/spec/addon_spec.rb +++ b/spec/addon_spec.rb @@ -92,5 +92,33 @@ ]) end end + + it "resolves commands for the whole project" do + project_uri = "file:///test-project" + with_server do |server| + server.process_message( + { + id: 1, + method: "rubyLsp/resolveTestCommands", + params: { + items: [ + { + id: project_uri, + label: "test-project", + tags: ["framework:rspec"], + uri: project_uri, + children: [], + }, + ], + }, + }, + ) + + response = pop_result(server).response + expect(response[:commands]).to eq([ + "bundle exec rspec -r #{formatter_absolute_path} -f #{formatter_name} /test-project", + ]) + end + end end end