diff options
| author | bors <bors@rust-lang.org> | 2025-07-22 18:39:58 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-07-22 18:39:58 +0000 |
| commit | a7a1618e6c835f1f00940ad72203d05808209a0d (patch) | |
| tree | efca82e10564eec78574d5f91b339a786040552b /src/tools | |
| parent | 2e5367566819ca7878baa9600ae7a93eb0e37bbf (diff) | |
| parent | 6bfa00816d7e4dcb0aee9fe547bc75dfe59dc613 (diff) | |
Auto merge of #144249 - GuillaumeGomez:asm-tests, r=jieyouxu
Rename `tests/{assembly,codegen}` into `tests/{assembly,codegen}-llvm` and ignore these testsuites if configured backend doesn't match
Follow-up of https://github.com/rust-lang/rust/pull/144125.
This PR changes `compiletest` so that `asm` tests are only run if they match the current codegen backend. To better reflect it, I renamed the `tests/ui/asm` folder into `tests/ui/asm-llvm`. Like that, we can add new asm tests for other backends if we want without needing to add extra code to `compiletest`.
Next step will be to use the new code annotations added in rust-lang/rust#144125 to ignore ui tests failing in cg_gcc until it's fixed on our side.
cc `@antoyo` `@oli-obk`
r? `@Kobzol`
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/compiletest/src/common.rs | 4 | ||||
| -rw-r--r-- | src/tools/compiletest/src/lib.rs | 19 | ||||
| -rw-r--r-- | src/tools/opt-dist/src/tests.rs | 4 | ||||
| -rw-r--r-- | src/tools/tidy/src/target_policy.rs | 6 |
4 files changed, 25 insertions, 8 deletions
diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs index 12084fa0b15..aceae3e3a3b 100644 --- a/src/tools/compiletest/src/common.rs +++ b/src/tools/compiletest/src/common.rs @@ -57,8 +57,8 @@ impl TestMode { string_enum! { #[derive(Clone, Copy, PartialEq, Debug)] pub enum TestSuite { - Assembly => "assembly", - Codegen => "codegen", + AssemblyLlvm => "assembly-llvm", + CodegenLlvm => "codegen-llvm", CodegenUnits => "codegen-units", Coverage => "coverage", CoverageRunRustdoc => "coverage-run-rustdoc", diff --git a/src/tools/compiletest/src/lib.rs b/src/tools/compiletest/src/lib.rs index 41bed8ed8a0..c712185733c 100644 --- a/src/tools/compiletest/src/lib.rs +++ b/src/tools/compiletest/src/lib.rs @@ -31,7 +31,7 @@ use std::time::SystemTime; use std::{env, fs, vec}; use build_helper::git::{get_git_modified_files, get_git_untracked_files}; -use camino::{Utf8Path, Utf8PathBuf}; +use camino::{Utf8Component, Utf8Path, Utf8PathBuf}; use getopts::Options; use rayon::iter::{ParallelBridge, ParallelIterator}; use tracing::debug; @@ -799,6 +799,23 @@ fn collect_tests_from_dir( return Ok(TestCollector::new()); } + let mut components = dir.components().rev(); + if let Some(Utf8Component::Normal(last)) = components.next() + && let Some(("assembly" | "codegen", backend)) = last.split_once('-') + && let Some(Utf8Component::Normal(parent)) = components.next() + && parent == "tests" + && let Ok(backend) = CodegenBackend::try_from(backend) + && backend != cx.config.codegen_backend + { + // We ignore asm tests which don't match the current codegen backend. + warning!( + "Ignoring tests in `{dir}` because they don't match the configured codegen \ + backend (`{}`)", + cx.config.codegen_backend.as_str(), + ); + return Ok(TestCollector::new()); + } + // For run-make tests, a "test file" is actually a directory that contains an `rmake.rs`. if cx.config.mode == TestMode::RunMake { let mut collector = TestCollector::new(); diff --git a/src/tools/opt-dist/src/tests.rs b/src/tools/opt-dist/src/tests.rs index c3c45d262dd..c9a21fc6fb2 100644 --- a/src/tools/opt-dist/src/tests.rs +++ b/src/tools/opt-dist/src/tests.rs @@ -100,8 +100,8 @@ llvm-config = "{llvm_config}" env.host_tuple(), "--stage", "0", - "tests/assembly", - "tests/codegen", + "tests/assembly-llvm", + "tests/codegen-llvm", "tests/codegen-units", "tests/incremental", "tests/mir-opt", diff --git a/src/tools/tidy/src/target_policy.rs b/src/tools/tidy/src/target_policy.rs index 776221d3062..550932dbfdc 100644 --- a/src/tools/tidy/src/target_policy.rs +++ b/src/tools/tidy/src/target_policy.rs @@ -8,7 +8,7 @@ use std::path::Path; use crate::walk::{filter_not_rust, walk}; const TARGET_DEFINITIONS_PATH: &str = "compiler/rustc_target/src/spec/targets/"; -const ASSEMBLY_TEST_PATH: &str = "tests/assembly/targets/"; +const ASSEMBLY_LLVM_TEST_PATH: &str = "tests/assembly-llvm/targets/"; const REVISION_LINE_START: &str = "//@ revisions: "; const EXCEPTIONS: &[&str] = &[ // FIXME: disabled since it fails on CI saying the csky component is missing @@ -43,7 +43,7 @@ pub fn check(root_path: &Path, bad: &mut bool) { let _ = targets_to_find.insert(target_name); } - walk(&root_path.join(ASSEMBLY_TEST_PATH), |_, _| false, &mut |_, contents| { + walk(&root_path.join(ASSEMBLY_LLVM_TEST_PATH), |_, _| false, &mut |_, contents| { for line in contents.lines() { let Some(_) = line.find(REVISION_LINE_START) else { continue; @@ -55,7 +55,7 @@ pub fn check(root_path: &Path, bad: &mut bool) { for target in targets_to_find { if !EXCEPTIONS.contains(&target.as_str()) { - tidy_error!(bad, "{ASSEMBLY_TEST_PATH}: missing assembly test for {target}") + tidy_error!(bad, "{ASSEMBLY_LLVM_TEST_PATH}: missing assembly test for {target}") } } } |
