mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Add a clang subcommand. (#4322)
This makes something like `bazel run :toolchain -- clang -- -c test.cpp` work, because that can be run in-process. Note that `bazel run :toolchain -- clang -- test.cpp` still requires subprocessing, and does not work. Note, the vision here is that we are trying to align how clang and carbon compile c++ code. This is work towards intertwining command execution. --------- Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
This commit is contained in:
co-authored by
Chandler Carruth
parent
c7057eff89
commit
c107aaad13
@@ -152,5 +152,47 @@ TEST(ClangRunnerTest, LinkCommandEcho) {
|
||||
EXPECT_THAT(out, StrEq(""));
|
||||
}
|
||||
|
||||
TEST(ClangRunnerTest, NoArgs) {
|
||||
const auto install_paths =
|
||||
InstallPaths::MakeForBazelRunfiles(Testing::GetExePath());
|
||||
std::string verbose_out;
|
||||
llvm::raw_string_ostream verbose_os(verbose_out);
|
||||
std::string target = llvm::sys::getDefaultTargetTriple();
|
||||
ClangRunner runner(&install_paths, target, &verbose_os);
|
||||
std::string out;
|
||||
std::string err;
|
||||
EXPECT_FALSE(RunWithCapturedOutput(out, err, [&] { return runner.Run({}); }))
|
||||
<< "Verbose output from runner:\n"
|
||||
<< verbose_out << "\n";
|
||||
|
||||
EXPECT_THAT(out, StrEq(""));
|
||||
EXPECT_THAT(err, HasSubstr("error: no input files"));
|
||||
}
|
||||
|
||||
TEST(ClangRunnerTest, DashC) {
|
||||
std::filesystem::path test_file =
|
||||
WriteTestFile("test.cpp", "int test() { return 0; }");
|
||||
|
||||
const auto install_paths =
|
||||
InstallPaths::MakeForBazelRunfiles(Testing::GetExePath());
|
||||
std::string verbose_out;
|
||||
llvm::raw_string_ostream verbose_os(verbose_out);
|
||||
std::string target = llvm::sys::getDefaultTargetTriple();
|
||||
ClangRunner runner(&install_paths, target, &verbose_os);
|
||||
std::string out;
|
||||
std::string err;
|
||||
EXPECT_TRUE(
|
||||
RunWithCapturedOutput(out, err,
|
||||
[&] {
|
||||
return runner.Run({"-c", test_file.string()});
|
||||
}))
|
||||
<< "Verbose output from runner:\n"
|
||||
<< verbose_out << "\n";
|
||||
|
||||
// No output should be produced.
|
||||
EXPECT_THAT(out, StrEq(""));
|
||||
EXPECT_THAT(err, StrEq(""));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace Carbon
|
||||
|
||||
Reference in New Issue
Block a user