Auto merge of #9128 - poliorcetics:respect-shortness-rustdoc, r=ehuss

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 ?
This commit is contained in:
bors 2021-02-24 16:51:20 +00:00
commit 572e201536
2 changed files with 39 additions and 1 deletions

View File

@ -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());
@ -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,

View File

@ -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() {
@ -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();
}