Skip to content

Commit 35f62ab

Browse files
committed
feat: use directives for test auxiliary
1 parent bedac7f commit 35f62ab

File tree

7 files changed

+41
-21
lines changed

7 files changed

+41
-21
lines changed

bootstrap/Cargo.lock

Lines changed: 7 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bootstrap/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ color-print = "0.3.6"
1010
env_logger = "0.11.5"
1111
glob = "0.3.1"
1212
log = "0.4.22"
13+
regex = "1.11.1"
1314
similar = "2.6.0"
1415
which = "6.0.1"

bootstrap/src/test.rs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use std::fs::File;
2-
use std::path::PathBuf;
2+
use std::path::{Path, PathBuf};
33

44
use anstream::{eprint as print, eprintln as println};
55
use clap::Args;
@@ -65,24 +65,15 @@ impl Run for TestCommand {
6565

6666
impl TestCommand {
6767
pub fn collect_testcases(&self, manifest: &Manifest) -> Vec<TestCase> {
68-
let mut result = vec![];
69-
70-
// Test auxiliary (should compile first)
71-
for case in glob("tests/auxiliary/*.rs").unwrap() {
72-
let case = case.unwrap();
73-
let filename = case.file_stem().unwrap();
74-
let name = format!("auxiliary/{}", filename.to_string_lossy());
75-
let output_file = manifest.out_dir.join(filename);
76-
result.push(TestCase { name, source: case, output_file, test: TestType::CompileLib })
77-
}
68+
let mut tests = vec![];
7869

7970
// Examples
8071
for case in glob("examples/*.rs").unwrap() {
8172
let case = case.unwrap();
8273
let filename = case.file_stem().unwrap();
8374
let name = format!("examples/{}", filename.to_string_lossy());
8475
let output_file = manifest.out_dir.join("examples").join(filename);
85-
result.push(TestCase { name, source: case, output_file, test: TestType::Compile })
76+
tests.push(TestCase { name, source: case, output_file, test: TestType::Compile })
8677
}
8778

8879
// Codegen tests
@@ -91,7 +82,7 @@ impl TestCommand {
9182
let filename = case.file_stem().unwrap();
9283
let name = format!("codegen/{}", filename.to_string_lossy());
9384
let output_file = manifest.out_dir.join("tests/codegen").join(filename);
94-
result.push(TestCase { name, source: case, output_file, test: TestType::FileCheck })
85+
tests.push(TestCase { name, source: case, output_file, test: TestType::FileCheck })
9586
}
9687

9788
// Bless tests - the output should be the same as the last run
@@ -100,10 +91,28 @@ impl TestCommand {
10091
let filename = case.file_stem().unwrap();
10192
let name = format!("bless/{}", filename.to_string_lossy());
10293
let output_file = manifest.out_dir.join("tests/bless").join(filename);
103-
result.push(TestCase { name, source: case, output_file, test: TestType::Bless })
94+
tests.push(TestCase { name, source: case, output_file, test: TestType::Bless })
95+
}
96+
97+
// Collect test-auxiliary
98+
let aux_use = regex::Regex::new(r"^//@\s*aux-build:(?P<fname>.*)").unwrap();
99+
let mut auxiliary = vec![];
100+
for case in tests.iter() {
101+
let source = std::fs::read_to_string(&case.source).unwrap();
102+
for cap in aux_use.captures_iter(&source) {
103+
let fname = cap.name("fname").unwrap().as_str();
104+
let source = Path::new("tests/auxiliary").join(fname);
105+
let filename = source.file_stem().unwrap();
106+
let name = format!("auxiliary/{}", filename.to_string_lossy());
107+
let output_file = manifest.out_dir.join(filename); // aux files are output to the base directory
108+
auxiliary.push(TestCase { name, source, output_file, test: TestType::CompileLib })
109+
}
104110
}
105111

106-
result
112+
// Compile auxiliary before the tests
113+
let mut cases = auxiliary;
114+
cases.extend(tests);
115+
cases
107116
}
108117
}
109118

examples/basic_math.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
//@ aux-build:mini_core.rs
2+
13
#![feature(no_core)]
24
#![no_core]
35
#![no_main]

tests/codegen/filename.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
//! Test that the generated code has the filename and function name in it
22
3+
//@ aux-build:mini_core.rs
4+
35
// CHECK: filename
46

57
#![feature(no_core)]

tests/codegen/params_count.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
//! Test that the generated code has the right number of parameters
22
3+
//@ aux-build:mini_core.rs
4+
35
#![feature(no_core)]
46
#![no_core]
57
#![no_main]

tests/codegen/ret_value.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
//! Test that we can return a value from a function
2+
3+
//@ aux-build:mini_core.rs
4+
25
#![feature(no_core)]
36
#![no_core]
47
#![no_main]

0 commit comments

Comments
 (0)