@@ -228,6 +228,136 @@ class SpecialCharsTest < ActiveSupport::TestCase
228228 end
229229 end
230230
231+ test "resolve test escapes file paths in groups" do
232+ with_server do |server |
233+ sleep ( 0.1 ) while RubyLsp ::Addon . addons . first . instance_variable_get ( :@rails_runner_client ) . is_a? ( NullClient )
234+
235+ server . process_message ( {
236+ id : 1 ,
237+ method : "rubyLsp/resolveTestCommands" ,
238+ params : {
239+ items : [
240+ {
241+ id : "GroupTest" ,
242+ uri : "file:///test/group(v2)_test.rb" ,
243+ label : "GroupTest" ,
244+ range : {
245+ start : { line : 0 , character : 0 } ,
246+ end : { line : 30 , character : 3 } ,
247+ } ,
248+ tags : [ "framework:rails" , "test_group" ] ,
249+ children : [ ] ,
250+ } ,
251+ ] ,
252+ } ,
253+ } )
254+
255+ result = pop_result ( server )
256+ response = result . response
257+
258+ assert_equal (
259+ [ "#{ RailsTestStyle ::BASE_COMMAND } /test/group\\ (v2\\ )_test.rb --name \" /GroupTest(#|::)/\" " ] ,
260+ response [ :commands ] ,
261+ )
262+ end
263+ end
264+
265+ test "resolve test escapes single file paths" do
266+ with_server do |server |
267+ sleep ( 0.1 ) while RubyLsp ::Addon . addons . first . instance_variable_get ( :@rails_runner_client ) . is_a? ( NullClient )
268+
269+ server . process_message ( {
270+ id : 1 ,
271+ method : "rubyLsp/resolveTestCommands" ,
272+ params : {
273+ items : [
274+ {
275+ id : "file:///test/example(v2)_test.rb" ,
276+ uri : "file:///test/example(v2)_test.rb" ,
277+ label : "/test/example(v2)_test.rb" ,
278+ tags : [ "framework:rails" , "test_file" ] ,
279+ children : [ ] ,
280+ } ,
281+ ] ,
282+ } ,
283+ } )
284+
285+ result = pop_result ( server )
286+ response = result . response
287+
288+ assert_equal (
289+ [ "#{ RailsTestStyle ::BASE_COMMAND } /test/example\\ (v2\\ )_test.rb" ] ,
290+ response [ :commands ] ,
291+ )
292+ end
293+ end
294+
295+ test "resolve test escapes file paths inside directories" do
296+ Dir . stubs ( :glob ) . returns ( [ "/test/example(v2)_test.rb" ] )
297+
298+ with_server do |server |
299+ sleep ( 0.1 ) while RubyLsp ::Addon . addons . first . instance_variable_get ( :@rails_runner_client ) . is_a? ( NullClient )
300+
301+ server . process_message ( {
302+ id : 1 ,
303+ method : "rubyLsp/resolveTestCommands" ,
304+ params : {
305+ items : [
306+ {
307+ id : "file:///test" ,
308+ uri : "file:///test" ,
309+ label : "/test" ,
310+ tags : [ "test_dir" , "framework:rails" ] ,
311+ children : [ ] ,
312+ } ,
313+ ] ,
314+ } ,
315+ } )
316+
317+ result = pop_result ( server )
318+ response = result . response
319+
320+ assert_equal (
321+ [ "#{ RailsTestStyle ::BASE_COMMAND } /test/example\\ (v2\\ )_test.rb" ] ,
322+ response [ :commands ] ,
323+ )
324+ end
325+ end
326+
327+ test "resolve test escapes file paths for specific examples" do
328+ with_server do |server |
329+ sleep ( 0.1 ) while RubyLsp ::Addon . addons . first . instance_variable_get ( :@rails_runner_client ) . is_a? ( NullClient )
330+
331+ server . process_message ( {
332+ id : 1 ,
333+ method : "rubyLsp/resolveTestCommands" ,
334+ params : {
335+ items : [
336+ {
337+ id : "ExampleTest#test_something" ,
338+ uri : "file:///test/example(v2)_test.rb" ,
339+ label : "test something" ,
340+ tags : [ "framework:rails" ] ,
341+ range : {
342+ start : { line : 10 , character : 0 } ,
343+ end : { line : 15 , character : 3 } ,
344+ } ,
345+ children : [ ] ,
346+ } ,
347+ ] ,
348+ } ,
349+ } )
350+
351+ result = pop_result ( server )
352+ response = result . response
353+
354+ assert_equal (
355+ [ "#{ RailsTestStyle ::BASE_COMMAND } /test/example\\ (v2\\ )_test.rb:11" ] ,
356+ response [ :commands ] ,
357+ )
358+ end
359+ end
360+
231361 test "tests with backslashes" do
232362 source = File . read ( File . join ( __dir__ , ".." , "fixtures" , "test_with_escaped_quotes.rb" ) )
233363
0 commit comments