Auto merge of #49064 - QuietMisdreavus:piercing-the-veil, r=GuillaumeGomez
rustdoctest: suppress the default allow(unused) under --display-warnings If you're passing rustdoc `--display-warnings`, you probably want to see the default ones too. This change modifies `test::make_test` to suppress the default `#![allow(unused)]` if the `--display-warnings` CLI flag was provided to rustdoc. cc https://github.com/rust-lang/rust/issues/41574
This commit is contained in:
commit
eeea94c11d
2 changed files with 26 additions and 2 deletions
|
|
@ -149,6 +149,7 @@ pub fn test(input: &str, cfgs: Vec<String>, libs: SearchPaths, externs: Externs,
|
||||||
|
|
||||||
let mut opts = TestOptions::default();
|
let mut opts = TestOptions::default();
|
||||||
opts.no_crate_inject = true;
|
opts.no_crate_inject = true;
|
||||||
|
opts.display_warnings = display_warnings;
|
||||||
let mut collector = Collector::new(input.to_owned(), cfgs, libs, externs,
|
let mut collector = Collector::new(input.to_owned(), cfgs, libs, externs,
|
||||||
true, opts, maybe_sysroot, None,
|
true, opts, maybe_sysroot, None,
|
||||||
Some(PathBuf::from(input)),
|
Some(PathBuf::from(input)),
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,12 @@ use html::markdown;
|
||||||
|
|
||||||
#[derive(Clone, Default)]
|
#[derive(Clone, Default)]
|
||||||
pub struct TestOptions {
|
pub struct TestOptions {
|
||||||
|
/// Whether to disable the default `extern crate my_crate;` when creating doctests.
|
||||||
pub no_crate_inject: bool,
|
pub no_crate_inject: bool,
|
||||||
|
/// Whether to emit compilation warnings when compiling doctests. Setting this will suppress
|
||||||
|
/// the default `#![allow(unused)]`.
|
||||||
|
pub display_warnings: bool,
|
||||||
|
/// Additional crate-level attributes to add to doctests.
|
||||||
pub attrs: Vec<String>,
|
pub attrs: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -113,7 +118,8 @@ pub fn run(input_path: &Path,
|
||||||
let crate_name = crate_name.unwrap_or_else(|| {
|
let crate_name = crate_name.unwrap_or_else(|| {
|
||||||
::rustc_trans_utils::link::find_crate_name(None, &hir_forest.krate().attrs, &input)
|
::rustc_trans_utils::link::find_crate_name(None, &hir_forest.krate().attrs, &input)
|
||||||
});
|
});
|
||||||
let opts = scrape_test_config(hir_forest.krate());
|
let mut opts = scrape_test_config(hir_forest.krate());
|
||||||
|
opts.display_warnings |= display_warnings;
|
||||||
let mut collector = Collector::new(crate_name,
|
let mut collector = Collector::new(crate_name,
|
||||||
cfgs,
|
cfgs,
|
||||||
libs,
|
libs,
|
||||||
|
|
@ -153,6 +159,7 @@ fn scrape_test_config(krate: &::rustc::hir::Crate) -> TestOptions {
|
||||||
|
|
||||||
let mut opts = TestOptions {
|
let mut opts = TestOptions {
|
||||||
no_crate_inject: false,
|
no_crate_inject: false,
|
||||||
|
display_warnings: false,
|
||||||
attrs: Vec::new(),
|
attrs: Vec::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -357,7 +364,7 @@ pub fn make_test(s: &str,
|
||||||
let mut line_offset = 0;
|
let mut line_offset = 0;
|
||||||
let mut prog = String::new();
|
let mut prog = String::new();
|
||||||
|
|
||||||
if opts.attrs.is_empty() {
|
if opts.attrs.is_empty() && !opts.display_warnings {
|
||||||
// If there aren't any attributes supplied by #![doc(test(attr(...)))], then allow some
|
// If there aren't any attributes supplied by #![doc(test(attr(...)))], then allow some
|
||||||
// lints that are commonly triggered in doctests. The crate-level test attributes are
|
// lints that are commonly triggered in doctests. The crate-level test attributes are
|
||||||
// commonly used to make tests fail in case they trigger warnings, so having this there in
|
// commonly used to make tests fail in case they trigger warnings, so having this there in
|
||||||
|
|
@ -787,6 +794,7 @@ assert_eq!(2+2, 4);
|
||||||
//adding it anyway
|
//adding it anyway
|
||||||
let opts = TestOptions {
|
let opts = TestOptions {
|
||||||
no_crate_inject: true,
|
no_crate_inject: true,
|
||||||
|
display_warnings: false,
|
||||||
attrs: vec![],
|
attrs: vec![],
|
||||||
};
|
};
|
||||||
let input =
|
let input =
|
||||||
|
|
@ -957,4 +965,19 @@ assert_eq!(2+2, 4);".to_string();
|
||||||
let output = make_test(input, None, true, &opts);
|
let output = make_test(input, None, true, &opts);
|
||||||
assert_eq!(output, (expected.clone(), 1));
|
assert_eq!(output, (expected.clone(), 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn make_test_display_warnings() {
|
||||||
|
//if the user is asking to display doctest warnings, suppress the default allow(unused)
|
||||||
|
let mut opts = TestOptions::default();
|
||||||
|
opts.display_warnings = true;
|
||||||
|
let input =
|
||||||
|
"assert_eq!(2+2, 4);";
|
||||||
|
let expected =
|
||||||
|
"fn main() {
|
||||||
|
assert_eq!(2+2, 4);
|
||||||
|
}".to_string();
|
||||||
|
let output = make_test(input, None, false, &opts);
|
||||||
|
assert_eq!(output, (expected.clone(), 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue