From 0b2fd391dce96ea9519614d9d2ceb89bfa2adc0a Mon Sep 17 00:00:00 2001 From: onur-ozkan Date: Tue, 21 Nov 2023 15:46:41 +0300 Subject: [PATCH] utilize stdlib debug assertion status in compiletest Implemented a new flag, `--with-debug-assertions` on compiletest to pass the stdlib debug assertion status from bootstrap. Signed-off-by: onur-ozkan --- src/bootstrap/src/core/build_steps/test.rs | 4 ++++ src/tools/compiletest/src/common.rs | 3 +++ src/tools/compiletest/src/header/cfg.rs | 4 ++-- src/tools/compiletest/src/lib.rs | 3 +++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs index 254fbc72a8c7e..683ab78cca3f3 100644 --- a/src/bootstrap/src/core/build_steps/test.rs +++ b/src/bootstrap/src/core/build_steps/test.rs @@ -1825,6 +1825,10 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the cmd.arg("--json"); + if builder.config.rust_debug_assertions_std { + cmd.arg("--with-debug-assertions"); + }; + let mut llvm_components_passed = false; let mut copts_passed = false; if builder.config.llvm_enabled() { diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs index 1e9684555f1fd..d96e16a7d548e 100644 --- a/src/tools/compiletest/src/common.rs +++ b/src/tools/compiletest/src/common.rs @@ -242,6 +242,9 @@ pub struct Config { /// Run ignored tests pub run_ignored: bool, + /// Whether to run tests with `ignore-debug` header + pub with_debug_assertions: bool, + /// Only run tests that match these filters pub filters: Vec, diff --git a/src/tools/compiletest/src/header/cfg.rs b/src/tools/compiletest/src/header/cfg.rs index 77c2866b366a6..0fc4c77372629 100644 --- a/src/tools/compiletest/src/header/cfg.rs +++ b/src/tools/compiletest/src/header/cfg.rs @@ -196,8 +196,8 @@ pub(super) fn parse_cfg_name_directive<'a>( } condition! { name: "debug", - condition: cfg!(debug_assertions), - message: "when building with debug assertions", + condition: config.with_debug_assertions, + message: "when running tests with `ignore-debug` header", } condition! { name: config.debugger.as_ref().map(|d| d.to_str()), diff --git a/src/tools/compiletest/src/lib.rs b/src/tools/compiletest/src/lib.rs index bb09c03ef5b72..5a80b9121f063 100644 --- a/src/tools/compiletest/src/lib.rs +++ b/src/tools/compiletest/src/lib.rs @@ -81,6 +81,7 @@ pub fn parse_config(args: Vec) -> Config { ) .optopt("", "run", "whether to execute run-* tests", "auto | always | never") .optflag("", "ignored", "run tests marked as ignored") + .optflag("", "with-debug-assertions", "whether to run tests with `ignore-debug` header") .optmulti("", "skip", "skip tests matching SUBSTRING. Can be passed multiple times", "SUBSTRING") .optflag("", "exact", "filters match exactly") .optopt( @@ -203,6 +204,7 @@ pub fn parse_config(args: Vec) -> Config { let src_base = opt_path(matches, "src-base"); let run_ignored = matches.opt_present("ignored"); + let with_debug_assertions = matches.opt_present("with-debug-assertions"); let mode = matches.opt_str("mode").unwrap().parse().expect("invalid mode"); let has_tidy = if mode == Mode::Rustdoc { Command::new("tidy") @@ -238,6 +240,7 @@ pub fn parse_config(args: Vec) -> Config { suite: matches.opt_str("suite").unwrap(), debugger: None, run_ignored, + with_debug_assertions, filters: matches.free.clone(), skip: matches.opt_strs("skip"), filter_exact: matches.opt_present("exact"),