From 9a52bf56b3c26a5b753ebef29edb8f0ee8e18099 Mon Sep 17 00:00:00 2001 From: Shashi Sugrim <34145834+ShashiSugrim@users.noreply.github.com> Date: Sun, 18 Aug 2024 16:51:14 -0400 Subject: [PATCH] Fix issue ' cargo t --doc does not respect --color when a compilation error occurs #14403 ' --- src/cargo/ops/cargo_test.rs | 10 ++++++++++ tests/testsuite/build_script.rs | 2 +- tests/testsuite/lto.rs | 2 +- tests/testsuite/test.rs | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/cargo/ops/cargo_test.rs b/src/cargo/ops/cargo_test.rs index 86e830e76f05..1144b31c63c2 100644 --- a/src/cargo/ops/cargo_test.rs +++ b/src/cargo/ops/cargo_test.rs @@ -1,5 +1,6 @@ use crate::core::compiler::{Compilation, CompileKind, Doctest, Metadata, Unit, UnitOutput}; use crate::core::profiles::PanicStrategy; +use crate::core::shell::ColorChoice; use crate::core::shell::Verbosity; use crate::core::{TargetKind, Workspace}; use crate::ops; @@ -176,6 +177,7 @@ fn run_doc_tests( let gctx = ws.gctx(); let mut errors = Vec::new(); let doctest_xcompile = gctx.cli_unstable().doctest_xcompile; + let color = gctx.shell().color_choice(); for doctest_info in &compilation.to_doc_test { let Doctest { @@ -215,6 +217,14 @@ fn run_doc_tests( for (var, value) in env { p.env(var, value); } + + let color_arg = match color { + ColorChoice::Always => "always", + ColorChoice::Never => "never", + ColorChoice::CargoAuto => "auto", + }; + p.arg("--color").arg(color_arg); + p.arg("--crate-name").arg(&unit.target.crate_name()); p.arg("--test"); diff --git a/tests/testsuite/build_script.rs b/tests/testsuite/build_script.rs index 4cd3584bf13d..00e0b21752b8 100644 --- a/tests/testsuite/build_script.rs +++ b/tests/testsuite/build_script.rs @@ -2871,7 +2871,7 @@ fn env_test() { [RUNNING] `[ROOT]/foo/target/debug/deps/foo-[HASH][EXE]` [RUNNING] `[ROOT]/foo/target/debug/deps/test-[HASH][EXE]` [DOCTEST] foo -[RUNNING] `rustdoc --edition=2015 --crate-type lib --crate-name foo[..]` +[RUNNING] `rustdoc --edition=2015 --crate-type lib --color auto --crate-name foo[..]` "#]]) .with_stdout_data(str![[r#" diff --git a/tests/testsuite/lto.rs b/tests/testsuite/lto.rs index d58a5fbe998e..5c0e9ad7f5e8 100644 --- a/tests/testsuite/lto.rs +++ b/tests/testsuite/lto.rs @@ -619,7 +619,7 @@ fn cdylib_and_rlib() { [RUNNING] `[ROOT]/foo/target/release/deps/bar-[HASH][EXE]` [RUNNING] `[ROOT]/foo/target/release/deps/b-[HASH][EXE]` [DOCTEST] bar -[RUNNING] `rustdoc --edition=2015 --crate-type cdylib --crate-type rlib --crate-name bar --test [..]-C lto [..] +[RUNNING] `rustdoc --edition=2015 --crate-type cdylib --crate-type rlib --color auto --crate-name bar --test [..]-C lto [..] "#]].unordered()) .run(); diff --git a/tests/testsuite/test.rs b/tests/testsuite/test.rs index f5df379648e4..0935a040ec15 100644 --- a/tests/testsuite/test.rs +++ b/tests/testsuite/test.rs @@ -5555,7 +5555,7 @@ fn cargo_test_print_env_verbose() { [FINISHED] `test` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s [RUNNING] `[..]CARGO_MANIFEST_DIR=[ROOT]/foo[..] [ROOT]/foo/target/debug/deps/foo-[HASH][EXE]` [DOCTEST] foo -[RUNNING] `[..]CARGO_MANIFEST_DIR=[ROOT]/foo[..] rustdoc --edition=2015 --crate-type lib --crate-name foo[..]` +[RUNNING] `[..]CARGO_MANIFEST_DIR=[ROOT]/foo[..] rustdoc --edition=2015 --crate-type lib --color auto --crate-name foo[..]` "#]]).run(); }