@@ -73,7 +73,8 @@ function M.maybe_nextest_transform(args)
7373 table.insert (nextest_args , ' --config-file' )
7474 table.insert (nextest_args , require (' rustaceanvim.cache' ).nextest_config_path ())
7575
76- -- tranform `-- test_something --exact` into `-E 'test("test_something")'`
76+ -- tranform:
77+ -- - `-- --exact foo` -> `-- foo`
7778 for i = 1 , # executable_args do
7879 if executable_args [i ] == ' --exact' then
7980 local test_name = executable_args [i - 1 ]
@@ -84,20 +85,34 @@ function M.maybe_nextest_transform(args)
8485 end
8586 end
8687
88+ -- these flags are unsupported by cargo-nextest and should be removed.
89+ --- @type table<string , true>
8790 local nextest_unsupported_flags = {
88- ' --show-output' ,
91+ [' --show-output' ] = true ,
92+ }
93+ -- cargo test passes these flags to the test executable,
94+ -- while cargo-nextest expects them to be passed to the test runner executable.
95+ --- @type table<string , true>
96+ local move_to_nextest_args_flags = {
97+ [' --nocapture' ] = true ,
8998 }
9099 local indexes_to_remove_reverse_order = {}
91100 for i , arg in ipairs (executable_args ) do
92- if vim .list_contains (nextest_unsupported_flags , arg ) then
101+ if nextest_unsupported_flags [arg ] then
102+ table.insert (indexes_to_remove_reverse_order , 1 , i )
103+ end
104+ if move_to_nextest_args_flags [arg ] then
93105 table.insert (indexes_to_remove_reverse_order , 1 , i )
106+ table.insert (nextest_args , arg )
94107 end
95108 end
96109 for _ , i in pairs (indexes_to_remove_reverse_order ) do
97110 table.remove (executable_args , i )
98111 end
99112
100- table.insert (nextest_args , ' --' )
113+ if # executable_args > 0 then
114+ table.insert (nextest_args , ' --' )
115+ end
101116 for _ , v in ipairs (executable_args ) do
102117 table.insert (nextest_args , v )
103118 end
0 commit comments