@@ -44,7 +44,7 @@ TEST(CommandMangler, Everything) {
44
44
Mangler.ResourceDir = testPath (" fake/resources" );
45
45
Mangler.Sysroot = testPath (" fake/sysroot" );
46
46
std::vector<std::string> Cmd = {" clang++" , " --" , " foo.cc" };
47
- Mangler.adjust (Cmd);
47
+ Mangler.adjust (Cmd, " foo.cc " );
48
48
EXPECT_THAT (Cmd, ElementsAre (testPath (" fake/clang++" ),
49
49
" -resource-dir=" + testPath (" fake/resources" ),
50
50
" -isysroot" , testPath (" fake/sysroot" ), " --" ,
@@ -55,7 +55,7 @@ TEST(CommandMangler, ResourceDir) {
55
55
auto Mangler = CommandMangler::forTests ();
56
56
Mangler.ResourceDir = testPath (" fake/resources" );
57
57
std::vector<std::string> Cmd = {" clang++" , " foo.cc" };
58
- Mangler.adjust (Cmd);
58
+ Mangler.adjust (Cmd, " foo.cc " );
59
59
EXPECT_THAT (Cmd, Contains (" -resource-dir=" + testPath (" fake/resources" )));
60
60
}
61
61
@@ -64,7 +64,7 @@ TEST(CommandMangler, Sysroot) {
64
64
Mangler.Sysroot = testPath (" fake/sysroot" );
65
65
66
66
std::vector<std::string> Cmd = {" clang++" , " foo.cc" };
67
- Mangler.adjust (Cmd);
67
+ Mangler.adjust (Cmd, " foo.cc " );
68
68
EXPECT_THAT (llvm::join (Cmd, " " ),
69
69
HasSubstr (" -isysroot " + testPath (" fake/sysroot" )));
70
70
}
@@ -74,19 +74,19 @@ TEST(CommandMangler, ClangPath) {
74
74
Mangler.ClangPath = testPath (" fake/clang" );
75
75
76
76
std::vector<std::string> Cmd = {" clang++" , " foo.cc" };
77
- Mangler.adjust (Cmd);
77
+ Mangler.adjust (Cmd, " foo.cc " );
78
78
EXPECT_EQ (testPath (" fake/clang++" ), Cmd.front ());
79
79
80
80
Cmd = {" unknown-binary" , " foo.cc" };
81
- Mangler.adjust (Cmd);
81
+ Mangler.adjust (Cmd, " foo.cc " );
82
82
EXPECT_EQ (testPath (" fake/unknown-binary" ), Cmd.front ());
83
83
84
84
Cmd = {testPath (" path/clang++" ), " foo.cc" };
85
- Mangler.adjust (Cmd);
85
+ Mangler.adjust (Cmd, " foo.cc " );
86
86
EXPECT_EQ (testPath (" path/clang++" ), Cmd.front ());
87
87
88
88
Cmd = {" foo/unknown-binary" , " foo.cc" };
89
- Mangler.adjust (Cmd);
89
+ Mangler.adjust (Cmd, " foo.cc " );
90
90
EXPECT_EQ (" foo/unknown-binary" , Cmd.front ());
91
91
}
92
92
@@ -129,7 +129,7 @@ TEST(CommandMangler, ClangPathResolve) {
129
129
auto Mangler = CommandMangler::forTests ();
130
130
Mangler.ClangPath = testPath (" fake/clang" );
131
131
std::vector<std::string> Cmd = {(TempDir + " /bin/foo" ).str (), " foo.cc" };
132
- Mangler.adjust (Cmd);
132
+ Mangler.adjust (Cmd, " foo.cc " );
133
133
// Directory based on resolved symlink, basename preserved.
134
134
EXPECT_EQ ((TempDir + " /lib/foo" ).str (), Cmd.front ());
135
135
@@ -146,13 +146,13 @@ TEST(CommandMangler, ClangPathResolve) {
146
146
Mangler.ClangPath = testPath (" fake/clang" );
147
147
// Driver found on PATH.
148
148
Cmd = {" foo" , " foo.cc" };
149
- Mangler.adjust (Cmd);
149
+ Mangler.adjust (Cmd, " foo.cc " );
150
150
// Found the symlink and resolved the path as above.
151
151
EXPECT_EQ ((TempDir + " /lib/foo" ).str (), Cmd.front ());
152
152
153
153
// Symlink not resolved with -no-canonical-prefixes.
154
154
Cmd = {" foo" , " -no-canonical-prefixes" , " foo.cc" };
155
- Mangler.adjust (Cmd);
155
+ Mangler.adjust (Cmd, " foo.cc " );
156
156
EXPECT_EQ ((TempDir + " /bin/foo" ).str (), Cmd.front ());
157
157
}
158
158
#endif
@@ -171,7 +171,7 @@ TEST(CommandMangler, ConfigEdits) {
171
171
Argv = tooling::getInsertArgumentAdjuster (" --hello" )(Argv, " " );
172
172
});
173
173
WithContextValue WithConfig (Config::Key, std::move (Cfg));
174
- Mangler.adjust (Cmd);
174
+ Mangler.adjust (Cmd, " foo.cc " );
175
175
}
176
176
// Edits are applied in given order and before other mangling and they always
177
177
// go before filename.
@@ -350,7 +350,7 @@ TEST(CommandMangler, InputsAfterDashDash) {
350
350
const auto Mangler = CommandMangler::forTests ();
351
351
{
352
352
std::vector<std::string> Args = {" clang" , " /Users/foo.cc" };
353
- Mangler.adjust (Args);
353
+ Mangler.adjust (Args, " /Users/foo.cc " );
354
354
EXPECT_THAT (llvm::makeArrayRef (Args).take_back (2 ),
355
355
ElementsAre (" --" , " /Users/foo.cc" ));
356
356
EXPECT_THAT (llvm::makeArrayRef (Args).drop_back (2 ),
@@ -361,11 +361,21 @@ TEST(CommandMangler, InputsAfterDashDash) {
361
361
{
362
362
std::vector<std::string> Args = {" clang" , " --driver-mode=cl" , " bar.cc" ,
363
363
" /Users/foo.cc" };
364
- Mangler.adjust (Args);
364
+ Mangler.adjust (Args, " bar.cc " );
365
365
EXPECT_THAT (llvm::makeArrayRef (Args).take_back (2 ),
366
366
ElementsAre (" --" , " bar.cc" ));
367
367
EXPECT_THAT (llvm::makeArrayRef (Args).drop_back (2 ), Not (Contains (" bar.cc" )));
368
368
}
369
+ // All inputs but the main file is dropped.
370
+ {
371
+ std::vector<std::string> Args = {" clang" , " foo.cc" , " bar.cc" };
372
+ Mangler.adjust (Args, " baz.cc" );
373
+ EXPECT_THAT (llvm::makeArrayRef (Args).take_back (2 ),
374
+ ElementsAre (" --" , " baz.cc" ));
375
+ EXPECT_THAT (
376
+ llvm::makeArrayRef (Args).drop_back (2 ),
377
+ testing::AllOf (Not (Contains (" foo.cc" )), Not (Contains (" bar.cc" ))));
378
+ }
369
379
}
370
380
} // namespace
371
381
} // namespace clangd
0 commit comments