Skip to content

Commit d5760fe

Browse files
committed
Fix paths to coretests and alloctests
Following `#135937` and `#136642`, tests for core and alloc are in coretests and alloctests. Update paths referring to the old locations. Some context for changes which don't match that pattern: * library/std/src/thread/local/dynamic_tests.rs and library/std/src/sync/mpsc/sync_tests.rs were moved under library/std/tests/ in 332fb7e (Move std::thread_local unit tests to integration tests, 2025-01-17) and b8ae372 (Move std::sync unit tests to integration tests, 2025-01-17), respectively, so are no longer special cases. * There never was a library/core/tests/fmt.rs file. That comment previously referred to src/test/ui/ifmt.rs, which was folded into library/alloc/tests/fmt.rs in 949c966 (move format! interface tests, 2020-09-08).
1 parent 1799887 commit d5760fe

File tree

4 files changed

+35
-21
lines changed

4 files changed

+35
-21
lines changed

compiler/rustc_codegen_gcc/build_system/src/test.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ fn test_projects(env: &Env, args: &TestArg) -> Result<(), String> {
677677
fn test_libcore(env: &Env, args: &TestArg) -> Result<(), String> {
678678
// FIXME: create a function "display_if_not_quiet" or something along the line.
679679
println!("[TEST] libcore");
680-
let path = get_sysroot_dir().join("sysroot_src/library/core/tests");
680+
let path = get_sysroot_dir().join("sysroot_src/library/coretests/tests");
681681
let _ = remove_dir_all(path.join("target"));
682682
run_cargo_command(&[&"test"], Some(&path), env, args)?;
683683
Ok(())

library/core/src/fmt/mod.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -3016,6 +3016,5 @@ impl<T: ?Sized> Debug for SyncUnsafeCell<T> {
30163016
}
30173017
}
30183018

3019-
// If you expected tests to be here, look instead at the core/tests/fmt.rs file,
3019+
// If you expected tests to be here, look instead at the alloctests/tests/fmt.rs file,
30203020
// it's a lot easier than creating all of the rt::Piece structures here.
3021-
// There are also tests in the alloc crate, for those that need allocations.

library/coretests/tests/str.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
// All `str` tests live in library/alloc/tests/str.rs
1+
// All `str` tests live in library/alloctests/tests/str.rs

src/tools/tidy/src/unit_tests.rs

+32-17
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
//! Tidy check to ensure `#[test]` and `#[bench]` are not used directly inside `core`.
1+
//! Tidy check to ensure `#[test]` and `#[bench]` are not used directly inside
2+
//! `core` or `alloc`.
23
//!
34
//! `#![no_core]` libraries cannot be tested directly due to duplicating lang
4-
//! items. All tests and benchmarks must be written externally in `core/{tests,benches}`.
5+
//! items. All tests and benchmarks must be written externally in
6+
//! `{coretests,alloctests}/{tests,benches}`.
57
//!
6-
//! Outside of core tests and benchmarks should be outlined into separate files
7-
//! named `tests.rs` or `benches.rs`, or directories named `tests` or `benches` unconfigured
8-
//! during normal build.
8+
//! Outside of `core` and `alloc`, tests and benchmarks should be outlined into
9+
//! separate files named `tests.rs` or `benches.rs`, or directories named
10+
//! `tests` or `benches` unconfigured during normal build.
911
1012
use std::path::Path;
1113

@@ -14,40 +16,53 @@ use crate::walk::{filter_dirs, walk};
1416
pub fn check(root_path: &Path, bad: &mut bool) {
1517
let core = root_path.join("core");
1618
let core_copy = core.clone();
17-
let core_tests = core.join("tests");
18-
let core_benches = core.join("benches");
19-
let is_core = move |path: &Path| {
20-
path.starts_with(&core)
21-
&& !(path.starts_with(&core_tests) || path.starts_with(&core_benches))
22-
};
19+
let is_core = move |path: &Path| path.starts_with(&core);
20+
let alloc = root_path.join("alloc");
21+
let alloc_copy = alloc.clone();
22+
let is_alloc = move |path: &Path| path.starts_with(&alloc);
2323

2424
let skip = move |path: &Path, is_dir| {
2525
let file_name = path.file_name().unwrap_or_default();
2626
if is_dir {
2727
filter_dirs(path)
2828
|| path.ends_with("src/doc")
29-
|| (file_name == "tests" || file_name == "benches") && !is_core(path)
29+
|| (file_name == "tests" || file_name == "benches")
30+
&& !is_core(path)
31+
&& !is_alloc(path)
3032
} else {
3133
let extension = path.extension().unwrap_or_default();
3234
extension != "rs"
33-
|| (file_name == "tests.rs" || file_name == "benches.rs") && !is_core(path)
34-
// UI tests with different names
35-
|| path.ends_with("src/thread/local/dynamic_tests.rs")
36-
|| path.ends_with("src/sync/mpsc/sync_tests.rs")
35+
|| (file_name == "tests.rs" || file_name == "benches.rs")
36+
&& !is_core(path)
37+
&& !is_alloc(path)
38+
// Tests which use non-public internals and, as such, need to
39+
// have the types in the same crate as the tests themselves. See
40+
// the comment in alloctests/lib.rs.
41+
|| path.ends_with("library/alloc/src/collections/btree/borrow/tests.rs")
42+
|| path.ends_with("library/alloc/src/collections/btree/map/tests.rs")
43+
|| path.ends_with("library/alloc/src/collections/btree/node/tests.rs")
44+
|| path.ends_with("library/alloc/src/collections/btree/set/tests.rs")
45+
|| path.ends_with("library/alloc/src/collections/linked_list/tests.rs")
46+
|| path.ends_with("library/alloc/src/collections/vec_deque/tests.rs")
47+
|| path.ends_with("library/alloc/src/raw_vec/tests.rs")
3748
}
3849
};
3950

4051
walk(root_path, skip, &mut |entry, contents| {
4152
let path = entry.path();
4253
let is_core = path.starts_with(&core_copy);
54+
let is_alloc = path.starts_with(&alloc_copy);
4355
for (i, line) in contents.lines().enumerate() {
4456
let line = line.trim();
4557
let is_test = || line.contains("#[test]") && !line.contains("`#[test]");
4658
let is_bench = || line.contains("#[bench]") && !line.contains("`#[bench]");
4759
if !line.starts_with("//") && (is_test() || is_bench()) {
4860
let explanation = if is_core {
4961
"core unit tests and benchmarks must be placed into \
50-
`core/tests` or `core/benches`"
62+
`coretests/tests` or `coretests/benches`"
63+
} else if is_alloc {
64+
"alloc unit tests and benchmarks must be placed into \
65+
`alloctests/tests` or `alloctests/benches`"
5166
} else {
5267
"unit tests and benchmarks must be placed into \
5368
separate files or directories named \

0 commit comments

Comments
 (0)