Skip to content

Commit

Permalink
Auto merge of #9128 - poliorcetics:respect-shortness-rustdoc, r=ehuss
Browse files Browse the repository at this point in the history
Pass the error message format to rustdoc

- Goes with rust-lang/rust#81675.
- Will help with rust-lang/rust#81662.

This is my first PR to Cargo and I haven't finished reading the contributor guide yet, how should I add tests for this ? Did I had the code in the correct place ?
  • Loading branch information
bors committed Feb 24, 2021
2 parents 0613244 + 83b353b commit 572e201
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
11 changes: 11 additions & 0 deletions src/cargo/core/compiler/context/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
let mut unstable_opts = false;
let mut args = compiler::extern_args(&self, unit, &mut unstable_opts)?;
args.extend(compiler::lto_args(&self, unit));

for feature in &unit.features {
args.push("--cfg".into());
args.push(format!("feature=\"{}\"", feature).into());
Expand All @@ -242,6 +243,16 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
}
}
args.extend(self.bcx.rustdocflags_args(unit).iter().map(Into::into));

use super::MessageFormat;
let format = match self.bcx.build_config.message_format {
MessageFormat::Short => "short",
MessageFormat::Human => "human",
MessageFormat::Json { .. } => "json",
};
args.push("--error-format".into());
args.push(format.into());

self.compilation.to_doc_test.push(compilation::Doctest {
unit: unit.clone(),
args,
Expand Down
29 changes: 28 additions & 1 deletion tests/testsuite/message_format.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Tests for --message-format flag.

use cargo_test_support::{basic_manifest, project};
use cargo_test_support::{basic_lib_manifest, basic_manifest, is_nightly, project};

#[cargo_test]
fn cannot_specify_two() {
Expand Down Expand Up @@ -109,3 +109,30 @@ fn cargo_renders_ansi() {
.with_stdout_contains("[..]\\u001b[38;5;9merror[..]")
.run();
}

#[cargo_test]
fn cargo_renders_doctests() {
if !is_nightly() {
// --error-format=short support added in 1.51
return;
}

let p = project()
.file("Cargo.toml", &basic_lib_manifest("foo"))
.file(
"src/lib.rs",
"\
/// ```rust
/// bar()
/// ```
pub fn bar() {}
",
)
.build();

p.cargo("test --doc --message-format short")
.with_status(101)
.with_stdout_contains("src/lib.rs:2:1: error[E0425]:[..]")
.with_stdout_contains("[..]src/lib.rs - bar (line 1)[..]")
.run();
}

0 comments on commit 572e201

Please sign in to comment.