Skip to content

Commit

Permalink
Auto merge of rust-lang#134887 - Zalathar:rollup-ghpz7oy, r=Zalathar
Browse files Browse the repository at this point in the history
Rollup of 5 pull requests

Successful merges:

 - rust-lang#134799 (nits: Cleanups in `librustdoc::clean`)
 - rust-lang#134851 (docs: inline `alloc::ffi::c_str` types to `alloc::ffi`)
 - rust-lang#134869 (Bump compiler cc)
 - rust-lang#134876 (bootstrap: Consolidate the macros for declaring compiletest test suites)
 - rust-lang#134883 (bootstrap: Fix `./x check bootstrap` by moving `shared_helpers::tests`)

r? `@ghost`
`@rustbot` modify labels: rollup
  • Loading branch information
bors committed Dec 29, 2024
2 parents e7738af + fc89cb2 commit 64feb9b
Show file tree
Hide file tree
Showing 10 changed files with 142 additions and 123 deletions.
4 changes: 2 additions & 2 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -405,9 +405,9 @@ version = "0.1.0"

[[package]]
name = "cc"
version = "1.2.5"
version = "1.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e"
checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333"
dependencies = [
"shlex",
]
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_codegen_ssa/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ arrayvec = { version = "0.7", default-features = false }
bitflags = "2.4.1"
# Pinned so `cargo update` bumps don't cause breakage. Please also update the
# `cc` in `rustc_llvm` if you update the `cc` here.
cc = "=1.2.5"
cc = "=1.2.6"
either = "1.5.0"
itertools = "0.12"
pathdiff = "0.2.0"
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_llvm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ libc = "0.2.73"
# tidy-alphabetical-start
# Pinned so `cargo update` bumps don't cause breakage. Please also update the
# pinned `cc` in `rustc_codegen_ssa` if you update `cc` here.
cc = "=1.2.5"
cc = "=1.2.6"
# tidy-alphabetical-end
2 changes: 1 addition & 1 deletion library/alloc/src/ffi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
#[doc(inline)]
#[stable(feature = "alloc_c_string", since = "1.64.0")]
pub use self::c_str::CString;
#[doc(no_inline)]
#[doc(inline)]
#[stable(feature = "alloc_c_string", since = "1.64.0")]
pub use self::c_str::{FromVecWithNulError, IntoStringError, NulError};

Expand Down
216 changes: 113 additions & 103 deletions src/bootstrap/src/core/build_steps/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1133,69 +1133,21 @@ fn testdir(builder: &Builder<'_>, host: TargetSelection) -> PathBuf {
builder.out.join(host).join("test")
}

macro_rules! default_test {
($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr }) => {
test!($name { path: $path, mode: $mode, suite: $suite, default: true, host: false });
};
}

macro_rules! default_test_with_compare_mode {
($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr,
compare_mode: $compare_mode:expr }) => {
test_with_compare_mode!($name {
path: $path,
mode: $mode,
suite: $suite,
default: true,
host: false,
compare_mode: $compare_mode
});
};
}

macro_rules! host_test {
($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr }) => {
test!($name { path: $path, mode: $mode, suite: $suite, default: true, host: true });
};
}

/// Declares a test step that invokes compiletest on a particular test suite.
macro_rules! test {
($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr, default: $default:expr,
host: $host:expr }) => {
test_definitions!($name {
path: $path,
mode: $mode,
suite: $suite,
default: $default,
host: $host,
compare_mode: None
});
};
}

macro_rules! test_with_compare_mode {
($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr, default: $default:expr,
host: $host:expr, compare_mode: $compare_mode:expr }) => {
test_definitions!($name {
path: $path,
mode: $mode,
suite: $suite,
default: $default,
host: $host,
compare_mode: Some($compare_mode)
});
};
}

macro_rules! test_definitions {
($name:ident {
path: $path:expr,
mode: $mode:expr,
suite: $suite:expr,
default: $default:expr,
host: $host:expr,
compare_mode: $compare_mode:expr
}) => {
(
$( #[$attr:meta] )* // allow docstrings and attributes
$name:ident {
path: $path:expr,
mode: $mode:expr,
suite: $suite:expr,
default: $default:expr
$( , only_hosts: $only_hosts:expr )? // default: false
$( , compare_mode: $compare_mode:expr )? // default: None
$( , )? // optional trailing comma
}
) => {
$( #[$attr] )*
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct $name {
pub compiler: Compiler,
Expand All @@ -1205,7 +1157,12 @@ macro_rules! test_definitions {
impl Step for $name {
type Output = ();
const DEFAULT: bool = $default;
const ONLY_HOSTS: bool = $host;
const ONLY_HOSTS: bool = (const {
#[allow(unused_assignments, unused_mut)]
let mut value = false;
$( value = $only_hosts; )?
value
});

fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
run.suite_path($path)
Expand All @@ -1224,21 +1181,31 @@ macro_rules! test_definitions {
mode: $mode,
suite: $suite,
path: $path,
compare_mode: $compare_mode,
compare_mode: (const {
#[allow(unused_assignments, unused_mut)]
let mut value = None;
$( value = $compare_mode; )?
value
}),
})
}
}
};
}

/// Declares an alias for running the [`Coverage`] tests in only one mode.
/// Adapted from [`test_definitions`].
/// Adapted from [`test`].
macro_rules! coverage_test_alias {
($name:ident {
alias_and_mode: $alias_and_mode:expr, // &'static str
default: $default:expr, // bool
only_hosts: $only_hosts:expr $(,)? // bool
}) => {
(
$( #[$attr:meta] )* // allow docstrings and attributes
$name:ident {
alias_and_mode: $alias_and_mode:expr, // &'static str
default: $default:expr, // bool
only_hosts: $only_hosts:expr // bool
$( , )? // optional trailing comma
}
) => {
$( #[$attr] )*
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct $name {
pub compiler: Compiler,
Expand Down Expand Up @@ -1410,37 +1377,74 @@ impl Step for CrateBuildHelper {
}
}

default_test!(Ui { path: "tests/ui", mode: "ui", suite: "ui" });
test!(Ui { path: "tests/ui", mode: "ui", suite: "ui", default: true });

default_test!(Crashes { path: "tests/crashes", mode: "crashes", suite: "crashes" });
test!(Crashes { path: "tests/crashes", mode: "crashes", suite: "crashes", default: true });

default_test!(Codegen { path: "tests/codegen", mode: "codegen", suite: "codegen" });
test!(Codegen { path: "tests/codegen", mode: "codegen", suite: "codegen", default: true });

default_test!(CodegenUnits {
test!(CodegenUnits {
path: "tests/codegen-units",
mode: "codegen-units",
suite: "codegen-units"
suite: "codegen-units",
default: true,
});

default_test!(Incremental { path: "tests/incremental", mode: "incremental", suite: "incremental" });
test!(Incremental {
path: "tests/incremental",
mode: "incremental",
suite: "incremental",
default: true,
});

default_test_with_compare_mode!(Debuginfo {
test!(Debuginfo {
path: "tests/debuginfo",
mode: "debuginfo",
suite: "debuginfo",
compare_mode: "split-dwarf"
default: true,
compare_mode: Some("split-dwarf"),
});

host_test!(UiFullDeps { path: "tests/ui-fulldeps", mode: "ui", suite: "ui-fulldeps" });
test!(UiFullDeps {
path: "tests/ui-fulldeps",
mode: "ui",
suite: "ui-fulldeps",
default: true,
only_hosts: true,
});

host_test!(Rustdoc { path: "tests/rustdoc", mode: "rustdoc", suite: "rustdoc" });
host_test!(RustdocUi { path: "tests/rustdoc-ui", mode: "ui", suite: "rustdoc-ui" });
test!(Rustdoc {
path: "tests/rustdoc",
mode: "rustdoc",
suite: "rustdoc",
default: true,
only_hosts: true,
});
test!(RustdocUi {
path: "tests/rustdoc-ui",
mode: "ui",
suite: "rustdoc-ui",
default: true,
only_hosts: true,
});

host_test!(RustdocJson { path: "tests/rustdoc-json", mode: "rustdoc-json", suite: "rustdoc-json" });
test!(RustdocJson {
path: "tests/rustdoc-json",
mode: "rustdoc-json",
suite: "rustdoc-json",
default: true,
only_hosts: true,
});

host_test!(Pretty { path: "tests/pretty", mode: "pretty", suite: "pretty" });
test!(Pretty {
path: "tests/pretty",
mode: "pretty",
suite: "pretty",
default: true,
only_hosts: true,
});

/// Special-handling is needed for `run-make`, so don't use `default_test` for defining `RunMake`
/// Special-handling is needed for `run-make`, so don't use `test!` for defining `RunMake`
/// tests.
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub struct RunMake {
Expand Down Expand Up @@ -1475,7 +1479,7 @@ impl Step for RunMake {
}
}

default_test!(Assembly { path: "tests/assembly", mode: "assembly", suite: "assembly" });
test!(Assembly { path: "tests/assembly", mode: "assembly", suite: "assembly", default: true });

/// Coverage tests are a bit more complicated than other test suites, because
/// we want to run the same set of test files in multiple different modes,
Expand Down Expand Up @@ -1552,27 +1556,33 @@ impl Step for Coverage {
}
}

// Runs `tests/coverage` in "coverage-map" mode only.
// Used by `x test` and `x test coverage-map`.
coverage_test_alias!(CoverageMap {
alias_and_mode: "coverage-map",
default: true,
only_hosts: false,
});
// Runs `tests/coverage` in "coverage-run" mode only.
// Used by `x test` and `x test coverage-run`.
coverage_test_alias!(CoverageRun {
alias_and_mode: "coverage-run",
default: true,
// Compiletest knows how to automatically skip these tests when cross-compiling,
// but skipping the whole step here makes it clearer that they haven't run at all.
only_hosts: true,
});
coverage_test_alias! {
/// Runs the `tests/coverage` test suite in "coverage-map" mode only.
/// Used by `x test` and `x test coverage-map`.
CoverageMap {
alias_and_mode: "coverage-map",
default: true,
only_hosts: false,
}
}
coverage_test_alias! {
/// Runs the `tests/coverage` test suite in "coverage-run" mode only.
/// Used by `x test` and `x test coverage-run`.
CoverageRun {
alias_and_mode: "coverage-run",
default: true,
// Compiletest knows how to automatically skip these tests when cross-compiling,
// but skipping the whole step here makes it clearer that they haven't run at all.
only_hosts: true,
}
}

host_test!(CoverageRunRustdoc {
test!(CoverageRunRustdoc {
path: "tests/coverage-run-rustdoc",
mode: "coverage-run",
suite: "coverage-run-rustdoc"
suite: "coverage-run-rustdoc",
default: true,
only_hosts: true,
});

// For the mir-opt suite we do not use macros, as we need custom behavior when blessing.
Expand Down
2 changes: 2 additions & 0 deletions src/bootstrap/src/utils/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ pub(crate) mod metrics;
pub(crate) mod render_tests;
pub(crate) mod shared_helpers;
pub(crate) mod tarball;
#[cfg(test)]
mod tests;
5 changes: 3 additions & 2 deletions src/bootstrap/src/utils/shared_helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ use std::io::Write;
use std::process::Command;
use std::str::FromStr;

#[cfg(test)]
mod tests;
// If we were to declare a tests submodule here, the shim binaries that include this
// module via `#[path]` would fail to find it, which breaks `./x check bootstrap`.
// So instead the unit tests for this module are in `super::tests::shared_helpers_tests`.

/// Returns the environment variable which the dynamic library lookup path
/// resides in for this platform.
Expand Down
1 change: 1 addition & 0 deletions src/bootstrap/src/utils/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mod shared_helpers_tests;
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
use super::parse_value_from_args;
//! The `shared_helpers` module can't have its own tests submodule, because
//! that would cause problems for the shim binaries that include it via
//! `#[path]`, so instead those unit tests live here.
//!
//! To prevent tidy from complaining about this file not being named `tests.rs`,
//! it lives inside a submodule directory named `tests`.
use crate::utils::shared_helpers::parse_value_from_args;

#[test]
fn test_parse_value_from_args() {
Expand Down
Loading

0 comments on commit 64feb9b

Please sign in to comment.