Add file_test support for specifying arguments and only checking a subset of output. (#3018)

This is sufficient to convert remaining toolchain tests to file_test. %s
and %t are currently used. While #2978 might use %T with lit, I think
that's resolving a lit-specific issue that's not necessary when
TEST_TMPDIR is readily available for any necessary operations (i.e.,
setting the working directory). With ARGS, I think it's feasible to
switch to file_test without %T.

Also adds documentation to file_test_base.h, which was starting to feel
like a significant gap.

This is not yet handled by autoupdate, but I'm eyeing that next.
This commit is contained in:
Jon Ross-Perkins
2023-07-25 22:47:56 +00:00
committed by GitHub
parent 95b53d33d6
commit f088a71cec
31 changed files with 421 additions and 138 deletions
+9 -1
View File
@@ -42,9 +42,13 @@ class ParseAndExecuteTestFile : public FileTestBase {
}
}
auto RunWithFiles(const llvm::SmallVector<TestFile>& test_files,
auto RunWithFiles(const llvm::SmallVector<llvm::StringRef>& test_args,
const llvm::SmallVector<TestFile>& test_files,
llvm::raw_pwrite_stream& stdout,
llvm::raw_pwrite_stream& stderr) -> bool override {
CARBON_CHECK(test_args.empty())
<< "ARGS are not currently used in explorer's file_test.";
if (test_files.size() != 1) {
ADD_FAILURE() << "Only 1 file is supported: " << test_files.size()
<< " provided";
@@ -88,6 +92,10 @@ class ParseAndExecuteTestFile : public FileTestBase {
return result.ok();
}
auto GetDefaultArgs() -> llvm::SmallVector<std::string> override {
return {};
}
private:
bool trace_;
bool is_trace_test = false;