Skip to content

Commit

Permalink
Fixing issue #10834:
Browse files Browse the repository at this point in the history
- Adding display of which target failed to compile
- Consistent messages for warnings/errors.
- Fixing assertions on related tests.
  • Loading branch information
aortizpimentel committed Mar 7, 2023
1 parent 12dbca3 commit db457d9
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 18 deletions.
12 changes: 3 additions & 9 deletions src/cargo/core/compiler/job_queue/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ pub use self::job_state::JobState;
use super::context::OutputFile;
use super::timings::Timings;
use super::{BuildContext, BuildPlan, CompileMode, Context, Unit};
use crate::core::compiler::descriptive_pkg_name;
use crate::core::compiler::future_incompat::{
self, FutureBreakageItem, FutureIncompatReportPackage,
};
Expand Down Expand Up @@ -1000,15 +1001,8 @@ impl<'cfg> DrainState<'cfg> {
None | Some(_) => return,
};
let unit = &self.active[&id];
let mut message = format!("`{}` ({}", unit.pkg.name(), unit.target.description_named());
if unit.mode.is_rustc_test() && !(unit.target.is_test() || unit.target.is_bench()) {
message.push_str(" test");
} else if unit.mode.is_doc_test() {
message.push_str(" doctest");
} else if unit.mode.is_doc() {
message.push_str(" doc");
}
message.push_str(") generated ");
let mut message = descriptive_pkg_name(&unit.pkg.name(), &unit.target, &unit.mode);
message.push_str(" generated ");
match count.total {
1 => message.push_str("1 warning"),
n => drop(write!(message, "{} warnings", n)),
Expand Down
19 changes: 18 additions & 1 deletion src/cargo/core/compiler/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,8 @@ fn rustc(cx: &mut Context<'_, '_>, unit: &Unit, exec: &Arc<dyn Executor>) -> Car
1 => " due to previous error".to_string(),
count => format!(" due to {} previous errors", count),
};
format!("could not compile `{}`{}{}", name, errors, warnings)
let name = descriptive_pkg_name(&name, &target, &mode);
format!("could not compile {name}{errors}{warnings}")
});

if let Err(e) = result {
Expand Down Expand Up @@ -1776,3 +1777,19 @@ fn replay_output_cache(
Ok(())
})
}

/// Provides a package name with descriptive target information,
/// e.g., '`foo` (bin "bar" test)', '`foo` (lib doctest)'.
fn descriptive_pkg_name(name: &str, target: &Target, mode: &CompileMode) -> String {
let desc_name = target.description_named();
let mode = if mode.is_rustc_test() && !(target.is_test() || target.is_bench()) {
" test"
} else if mode.is_doc_test() {
" doctest"
} else if mode.is_doc() {
" doc"
} else {
""
};
format!("`{name}` ({desc_name}{mode})")
}
6 changes: 4 additions & 2 deletions tests/testsuite/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,9 @@ fn cargo_compile_with_invalid_code() {

p.cargo("build")
.with_status(101)
.with_stderr_contains("[ERROR] could not compile `foo` due to previous error\n")
.with_stderr_contains(
"[ERROR] could not compile `foo` (bin \"foo\") due to previous error\n",
)
.run();
assert!(p.root().join("Cargo.lock").is_file());
}
Expand Down Expand Up @@ -5699,7 +5701,7 @@ fn signal_display() {
"\
[COMPILING] pm [..]
[COMPILING] foo [..]
[ERROR] could not compile `foo`
[ERROR] could not compile `foo` [..]
Caused by:
process didn't exit successfully: `rustc [..]` (signal: 6, SIGABRT: process abort signal)
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/build_script.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1678,7 +1678,7 @@ fn build_deps_not_for_normal() {
.with_stderr_contains("[..]can't find crate for `aaaaa`[..]")
.with_stderr_contains(
"\
[ERROR] could not compile `foo` due to previous error
[ERROR] could not compile `foo` (lib) due to previous error
Caused by:
process didn't exit successfully: [..]
Expand Down
4 changes: 2 additions & 2 deletions tests/testsuite/check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -804,7 +804,7 @@ fn short_message_format() {
.with_stderr_contains(
"\
src/lib.rs:1:27: error[E0308]: mismatched types
error: could not compile `foo` due to previous error
error: could not compile `foo` (lib) due to previous error
",
)
.run();
Expand Down Expand Up @@ -1251,7 +1251,7 @@ fn check_fixable_error_no_fix() {
[CHECKING] foo v0.0.1 ([..])
{}\
[WARNING] `foo` (lib) generated 1 warning
[ERROR] could not compile `foo` due to previous error; 1 warning emitted
[ERROR] could not compile `foo` (lib) due to previous error; 1 warning emitted
",
rustc_message
);
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/fix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ fn do_not_fix_broken_builds() {
p.cargo("fix --allow-no-vcs")
.env("__CARGO_FIX_YOLO", "1")
.with_status(101)
.with_stderr_contains("[ERROR] could not compile `foo` due to previous error")
.with_stderr_contains("[ERROR] could not compile `foo` (lib) due to previous error")
.run();
assert!(p.read_file("src/lib.rs").contains("let mut x = 3;"));
}
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -881,7 +881,7 @@ fn compile_failure() {
.with_status(101)
.with_stderr_contains(
"\
[ERROR] could not compile `foo` due to previous error
[ERROR] could not compile `foo` (bin \"foo\") due to previous error
[ERROR] failed to compile `foo v0.0.1 ([..])`, intermediate artifacts can be \
found at `[..]target`
",
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/messages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ fn deduplicate_errors() {
.with_stderr(&format!(
"\
[COMPILING] foo v0.0.1 [..]
{}error: could not compile `foo` due to previous error
{}error: could not compile `foo` (lib) due to previous error
",
rustc_message
))
Expand Down

0 comments on commit db457d9

Please sign in to comment.