Skip to content

Commit 8bf6f76

Browse files
committed
only check for exact_tests > 1 if process_per_test, run on Windows
1 parent 54f8020 commit 8bf6f76

File tree

2 files changed

+31
-10
lines changed

2 files changed

+31
-10
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ jobs:
5757
matrix:
5858
os:
5959
- ubuntu-latest
60+
- windows-latest
6061
rust-version: ["1.66", stable]
6162
fail-fast: false
6263
steps:

src/runner.rs

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,21 @@ fn find_tests(args: &Arguments, requirements: &[Requirements]) -> Vec<Trial> {
3131
.flat_map(|req| req.exact(exact_filter))
3232
.collect();
3333

34-
if is_nextest() {
35-
if exact_tests.is_empty() {
36-
panic!("Failed to find exact match for filter {exact_filter}");
37-
} else if exact_tests.len() > 1 {
38-
panic!(
39-
"Only expected one but found {} exact matches for filter {exact_filter}",
40-
exact_tests.len()
41-
);
34+
match NextestKind::determine() {
35+
NextestKind::InUse { process_per_test } => {
36+
if exact_tests.is_empty() {
37+
panic!("Failed to find exact match for filter {exact_filter}");
38+
}
39+
if process_per_test && exact_tests.len() > 1 {
40+
panic!(
41+
"Only expected one but found {} exact matches for filter {exact_filter}",
42+
exact_tests.len()
43+
);
44+
}
4245
}
46+
NextestKind::NotInUse => {}
4347
}
48+
4449
exact_tests
4550
} else if is_full_scan_forbidden(args) {
4651
panic!("Exact filter was expected to be used");
@@ -52,8 +57,23 @@ fn find_tests(args: &Arguments, requirements: &[Requirements]) -> Vec<Trial> {
5257
tests
5358
}
5459

55-
fn is_nextest() -> bool {
56-
std::env::var("NEXTEST").as_deref() == Ok("1")
60+
#[derive(Clone, Copy, Debug)]
61+
enum NextestKind {
62+
NotInUse,
63+
InUse { process_per_test: bool },
64+
}
65+
66+
impl NextestKind {
67+
fn determine() -> Self {
68+
if std::env::var("NEXTEST").as_deref() == Ok("1") {
69+
// Process-per-test means that exactly one test should be run.
70+
let process_per_test =
71+
std::env::var("NEXTEST_EXECUTION_MODE").as_deref() == Ok("process-per-test");
72+
Self::InUse { process_per_test }
73+
} else {
74+
Self::NotInUse
75+
}
76+
}
5777
}
5878

5979
fn is_full_scan_forbidden(args: &Arguments) -> bool {

0 commit comments

Comments
 (0)