Rollup merge of #146601 - Enselic:fix-test-args, r=Mark-Simulacrum
compiletest: Make `./x test --test-args ...` work again
It accidentally broke with https://github.com/rust-lang/rust/pull/146501. The intention of that PR was to keep existing behavior if `--exact` is not used, but it had a bug. This PR fixes that bug.
diff --git a/src/tools/compiletest/src/executor.rs b/src/tools/compiletest/src/executor.rs
index 37cc173..c8e13d4 100644
--- a/src/tools/compiletest/src/executor.rs
+++ b/src/tools/compiletest/src/executor.rs
@@ -295,11 +295,14 @@ fn filter_tests(opts: &Config, tests: Vec<CollectedTest>) -> Vec<CollectedTest>
let mut filtered = tests;
let matches_filter = |test: &CollectedTest, filter_str: &str| {
- let filterable_path = test.desc.filterable_path.as_str();
if opts.filter_exact {
- filterable_path == filter_str
+ // When `--exact` is used we must use `filterable_path` to get
+ // reasonable filtering behavior.
+ test.desc.filterable_path.as_str() == filter_str
} else {
- filterable_path.contains(filter_str)
+ // For compatibility we use the name (which includes the full path)
+ // if `--exact` is not used.
+ test.desc.name.contains(filter_str)
}
};