Skip to content

Commit 4aa61e7

Browse files
authored
Rollup merge of #137679 - bjorn3:coretests_improvements, r=jieyouxu,onur-ozkan
Various coretests improvements The first commit is not yet strictly necessary as directly testing libcore works though useless work, but will be necessary once #136642 migrates the liballoc tests into a separate package. The second commit fixes #137478 and ensures that coretests actually gets tested on all CI job. The third commit fixes an error that didn't get caught because coretests doesn't run on the wasm32 CI job.
2 parents 6c60abf + 169e731 commit 4aa61e7

File tree

4 files changed

+25
-69
lines changed

4 files changed

+25
-69
lines changed

library/coretests/tests/slice.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ use core::num::NonZero;
55
use core::ops::{Range, RangeInclusive};
66
use core::slice;
77

8-
use rand::seq::IndexedRandom;
9-
108
#[test]
119
fn test_position() {
1210
let b = [1, 2, 3, 5, 5];
@@ -1810,6 +1808,7 @@ fn select_nth_unstable() {
18101808
use core::cmp::Ordering::{Equal, Greater, Less};
18111809

18121810
use rand::Rng;
1811+
use rand::seq::IndexedRandom;
18131812

18141813
let mut rng = crate::test_rng();
18151814

src/bootstrap/src/core/build_steps/test.rs

+24-58
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ impl Step for CrateBootstrap {
9090
);
9191

9292
let crate_name = path.rsplit_once('/').unwrap().1;
93-
run_cargo_test(cargo, &[], &[], crate_name, crate_name, bootstrap_host, builder);
93+
run_cargo_test(cargo, &[], &[], crate_name, bootstrap_host, builder);
9494
}
9595
}
9696

@@ -140,15 +140,7 @@ You can skip linkcheck with --skip src/tools/linkchecker"
140140
SourceType::InTree,
141141
&[],
142142
);
143-
run_cargo_test(
144-
cargo,
145-
&[],
146-
&[],
147-
"linkchecker",
148-
"linkchecker self tests",
149-
bootstrap_host,
150-
builder,
151-
);
143+
run_cargo_test(cargo, &[], &[], "linkchecker self tests", bootstrap_host, builder);
152144

153145
if builder.doc_tests == DocTests::No {
154146
return;
@@ -337,7 +329,7 @@ impl Step for Cargo {
337329
);
338330

339331
// NOTE: can't use `run_cargo_test` because we need to overwrite `PATH`
340-
let mut cargo = prepare_cargo_test(cargo, &[], &[], "cargo", self.host, builder);
332+
let mut cargo = prepare_cargo_test(cargo, &[], &[], self.host, builder);
341333

342334
// Don't run cross-compile tests, we may not have cross-compiled libstd libs
343335
// available.
@@ -423,7 +415,7 @@ impl Step for RustAnalyzer {
423415
cargo.env("SKIP_SLOW_TESTS", "1");
424416

425417
cargo.add_rustc_lib_path(builder);
426-
run_cargo_test(cargo, &[], &[], "rust-analyzer", "rust-analyzer", host, builder);
418+
run_cargo_test(cargo, &[], &[], "rust-analyzer", host, builder);
427419
}
428420
}
429421

@@ -472,7 +464,7 @@ impl Step for Rustfmt {
472464

473465
cargo.add_rustc_lib_path(builder);
474466

475-
run_cargo_test(cargo, &[], &[], "rustfmt", "rustfmt", host, builder);
467+
run_cargo_test(cargo, &[], &[], "rustfmt", host, builder);
476468
}
477469
}
478470

@@ -588,7 +580,7 @@ impl Step for Miri {
588580

589581
// We can NOT use `run_cargo_test` since Miri's integration tests do not use the usual test
590582
// harness and therefore do not understand the flags added by `add_flags_and_try_run_test`.
591-
let mut cargo = prepare_cargo_test(cargo, &[], &[], "miri", host, builder);
583+
let mut cargo = prepare_cargo_test(cargo, &[], &[], host, builder);
592584

593585
// miri tests need to know about the stage sysroot
594586
cargo.env("MIRI_SYSROOT", &miri_sysroot);
@@ -736,7 +728,7 @@ impl Step for CompiletestTest {
736728
&[],
737729
);
738730
cargo.allow_features("test");
739-
run_cargo_test(cargo, &[], &[], "compiletest", "compiletest self test", host, builder);
731+
run_cargo_test(cargo, &[], &[], "compiletest self test", host, builder);
740732
}
741733
}
742734

@@ -797,7 +789,7 @@ impl Step for Clippy {
797789
cargo.env("HOST_LIBS", host_libs);
798790

799791
cargo.add_rustc_lib_path(builder);
800-
let cargo = prepare_cargo_test(cargo, &[], &[], "clippy", host, builder);
792+
let cargo = prepare_cargo_test(cargo, &[], &[], host, builder);
801793

802794
let _guard = builder.msg_sysroot_tool(Kind::Test, compiler.stage, "clippy", host, host);
803795

@@ -1277,15 +1269,7 @@ impl Step for CrateRunMakeSupport {
12771269
&[],
12781270
);
12791271
cargo.allow_features("test");
1280-
run_cargo_test(
1281-
cargo,
1282-
&[],
1283-
&[],
1284-
"run-make-support",
1285-
"run-make-support self test",
1286-
host,
1287-
builder,
1288-
);
1272+
run_cargo_test(cargo, &[], &[], "run-make-support self test", host, builder);
12891273
}
12901274
}
12911275

@@ -1322,7 +1306,7 @@ impl Step for CrateBuildHelper {
13221306
&[],
13231307
);
13241308
cargo.allow_features("test");
1325-
run_cargo_test(cargo, &[], &[], "build_helper", "build_helper self test", host, builder);
1309+
run_cargo_test(cargo, &[], &[], "build_helper self test", host, builder);
13261310
}
13271311
}
13281312

@@ -2507,13 +2491,12 @@ fn run_cargo_test<'a>(
25072491
cargo: builder::Cargo,
25082492
libtest_args: &[&str],
25092493
crates: &[String],
2510-
primary_crate: &str,
25112494
description: impl Into<Option<&'a str>>,
25122495
target: TargetSelection,
25132496
builder: &Builder<'_>,
25142497
) -> bool {
25152498
let compiler = cargo.compiler();
2516-
let mut cargo = prepare_cargo_test(cargo, libtest_args, crates, primary_crate, target, builder);
2499+
let mut cargo = prepare_cargo_test(cargo, libtest_args, crates, target, builder);
25172500
let _time = helpers::timeit(builder);
25182501
let _group = description.into().and_then(|what| {
25192502
builder.msg_sysroot_tool(Kind::Test, compiler.stage, what, compiler.host, target)
@@ -2537,7 +2520,6 @@ fn prepare_cargo_test(
25372520
cargo: builder::Cargo,
25382521
libtest_args: &[&str],
25392522
crates: &[String],
2540-
primary_crate: &str,
25412523
target: TargetSelection,
25422524
builder: &Builder<'_>,
25432525
) -> BootstrapCommand {
@@ -2567,13 +2549,6 @@ fn prepare_cargo_test(
25672549
cargo.arg("--doc");
25682550
}
25692551
DocTests::No => {
2570-
let krate = &builder
2571-
.crates
2572-
.get(primary_crate)
2573-
.unwrap_or_else(|| panic!("missing crate {primary_crate}"));
2574-
if krate.has_lib {
2575-
cargo.arg("--lib");
2576-
}
25772552
cargo.args(["--bins", "--examples", "--tests", "--benches"]);
25782553
}
25792554
DocTests::Yes => {}
@@ -2748,15 +2723,15 @@ impl Step for Crate {
27482723
_ => panic!("can only test libraries"),
27492724
};
27502725

2751-
run_cargo_test(
2752-
cargo,
2753-
&[],
2754-
&self.crates,
2755-
&self.crates[0],
2756-
&*crate_description(&self.crates),
2757-
target,
2758-
builder,
2759-
);
2726+
let mut crates = self.crates.clone();
2727+
// The core crate can't directly be tested. We could silently
2728+
// ignore it, but adding it's own test crate is less confusing
2729+
// for users. We still keep core itself for doctests.
2730+
if crates.iter().any(|crate_| crate_ == "core") {
2731+
crates.push("coretests".to_owned());
2732+
}
2733+
2734+
run_cargo_test(cargo, &[], &crates, &*crate_description(&self.crates), target, builder);
27602735
}
27612736
}
27622737

@@ -2849,15 +2824,7 @@ impl Step for CrateRustdoc {
28492824
dylib_path.insert(0, PathBuf::from(&*libdir));
28502825
cargo.env(dylib_path_var(), env::join_paths(&dylib_path).unwrap());
28512826

2852-
run_cargo_test(
2853-
cargo,
2854-
&[],
2855-
&["rustdoc:0.0.0".to_string()],
2856-
"rustdoc",
2857-
"rustdoc",
2858-
target,
2859-
builder,
2860-
);
2827+
run_cargo_test(cargo, &[], &["rustdoc:0.0.0".to_string()], "rustdoc", target, builder);
28612828
}
28622829
}
28632830

@@ -2914,7 +2881,6 @@ impl Step for CrateRustdocJsonTypes {
29142881
libtest_args,
29152882
&["rustdoc-json-types".to_string()],
29162883
"rustdoc-json-types",
2917-
"rustdoc-json-types",
29182884
target,
29192885
builder,
29202886
);
@@ -3094,7 +3060,7 @@ impl Step for Bootstrap {
30943060

30953061
// bootstrap tests are racy on directory creation so just run them one at a time.
30963062
// Since there's not many this shouldn't be a problem.
3097-
run_cargo_test(cargo, &["--test-threads=1"], &[], "bootstrap", None, host, builder);
3063+
run_cargo_test(cargo, &["--test-threads=1"], &[], None, host, builder);
30983064
}
30993065

31003066
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
@@ -3219,7 +3185,7 @@ impl Step for RustInstaller {
32193185
bootstrap_host,
32203186
bootstrap_host,
32213187
);
3222-
run_cargo_test(cargo, &[], &[], "installer", None, bootstrap_host, builder);
3188+
run_cargo_test(cargo, &[], &[], None, bootstrap_host, builder);
32233189

32243190
// We currently don't support running the test.sh script outside linux(?) environments.
32253191
// Eventually this should likely migrate to #[test]s in rust-installer proper rather than a
@@ -3610,7 +3576,7 @@ impl Step for TestFloatParse {
36103576
&[],
36113577
);
36123578

3613-
run_cargo_test(cargo_test, &[], &[], crate_name, crate_name, bootstrap_host, builder);
3579+
run_cargo_test(cargo_test, &[], &[], crate_name, bootstrap_host, builder);
36143580

36153581
// Run the actual parse tests.
36163582
let mut cargo_run = tool::prepare_tool_cargo(

src/bootstrap/src/core/metadata.rs

-8
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ struct Package {
2828
source: Option<String>,
2929
manifest_path: String,
3030
dependencies: Vec<Dependency>,
31-
targets: Vec<Target>,
3231
features: BTreeMap<String, Vec<String>>,
3332
}
3433

@@ -40,11 +39,6 @@ struct Dependency {
4039
source: Option<String>,
4140
}
4241

43-
#[derive(Debug, Deserialize)]
44-
struct Target {
45-
kind: Vec<String>,
46-
}
47-
4842
/// Collects and stores package metadata of each workspace members into `build`,
4943
/// by executing `cargo metadata` commands.
5044
pub fn build(build: &mut Build) {
@@ -59,12 +53,10 @@ pub fn build(build: &mut Build) {
5953
.filter(|dep| dep.source.is_none())
6054
.map(|dep| dep.name)
6155
.collect();
62-
let has_lib = package.targets.iter().any(|t| t.kind.iter().any(|k| k == "lib"));
6356
let krate = Crate {
6457
name: name.clone(),
6558
deps,
6659
path,
67-
has_lib,
6860
features: package.features.keys().cloned().collect(),
6961
};
7062
let relative_path = krate.local_path(build);

src/bootstrap/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@ struct Crate {
185185
name: String,
186186
deps: HashSet<String>,
187187
path: PathBuf,
188-
has_lib: bool,
189188
features: Vec<String>,
190189
}
191190

0 commit comments

Comments
 (0)