Disallow non-same compare-mode-nll
This commit is contained in:
parent
07e7b4346c
commit
2c75eca035
@ -1 +0,0 @@
|
||||
{"artifact":"$TEST_BUILD_DIR/json-multiple.nll/libjson_multiple.rlib","emit":"link"}
|
@ -1,5 +1,6 @@
|
||||
// build-pass
|
||||
// ignore-pass (different metadata emitted in different modes)
|
||||
// compile-flags: --json=diagnostic-short --json artifacts --error-format=json
|
||||
// ignore-compare-mode-nll
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
@ -1 +0,0 @@
|
||||
{"artifact":"$TEST_BUILD_DIR/json-options.nll/libjson_options.rlib","emit":"link"}
|
@ -1,5 +1,6 @@
|
||||
// build-pass
|
||||
// ignore-pass (different metadata emitted in different modes)
|
||||
// compile-flags: --json=diagnostic-short,artifacts --error-format=json
|
||||
// ignore-compare-mode-nll
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
@ -1 +0,0 @@
|
||||
{"artifact":"$TEST_BUILD_DIR/rmeta/emit-artifact-notifications.nll/libemit_artifact_notifications.rmeta","emit":"metadata"}
|
@ -2,6 +2,7 @@
|
||||
// build-pass
|
||||
// ignore-pass
|
||||
// ^-- needed because `--pass check` does not emit the output needed.
|
||||
// ignore-compare-mode-nll
|
||||
|
||||
// A very basic test for the emission of artifact notifications in JSON output.
|
||||
|
||||
|
@ -1,2 +0,0 @@
|
||||
{"artifact":"$TEST_BUILD_DIR/save-analysis/emit-notifications.nll/save-analysis/libemit_notifications.json","emit":"save-analysis"}
|
||||
{"artifact":"$TEST_BUILD_DIR/save-analysis/emit-notifications.nll/libemit_notifications.rlib","emit":"link"}
|
@ -3,5 +3,6 @@
|
||||
// compile-flags: --crate-type rlib --error-format=json
|
||||
// ignore-pass
|
||||
// ^-- needed because otherwise, the .stderr file changes with --pass check
|
||||
// ignore-compare-mode-nll
|
||||
|
||||
pub fn foo() {}
|
||||
|
@ -3112,7 +3112,7 @@ fn run_ui_test(&self) {
|
||||
let expected_fixed = self.load_expected_output(UI_FIXED);
|
||||
|
||||
let modes_to_prune = vec![CompareMode::Nll];
|
||||
self.prune_duplicate_outputs(&modes_to_prune);
|
||||
self.check_and_prune_duplicate_outputs(&proc_res, &[], &modes_to_prune);
|
||||
|
||||
let mut errors = self.load_compare_outputs(&proc_res, TestOutput::Compile, explicit);
|
||||
let rustfix_input = json::rustfix_diagnostics_only(&proc_res.stderr);
|
||||
@ -3730,28 +3730,54 @@ fn compare_output(&self, kind: &str, actual: &str, expected: &str) -> usize {
|
||||
if self.config.bless { 0 } else { 1 }
|
||||
}
|
||||
|
||||
fn prune_duplicate_output(&self, mode: CompareMode, kind: &str, canon_content: &str) {
|
||||
let examined_path = expected_output_path(&self.testpaths, self.revision, &Some(mode), kind);
|
||||
fn check_and_prune_duplicate_outputs(
|
||||
&self,
|
||||
proc_res: &ProcRes,
|
||||
modes: &[CompareMode],
|
||||
require_same_modes: &[CompareMode],
|
||||
) {
|
||||
for kind in UI_EXTENSIONS {
|
||||
let canon_comparison_path =
|
||||
expected_output_path(&self.testpaths, self.revision, &None, kind);
|
||||
|
||||
let examined_content =
|
||||
self.load_expected_output_from_path(&examined_path).unwrap_or_else(|_| String::new());
|
||||
let canon = match self.load_expected_output_from_path(&canon_comparison_path) {
|
||||
Ok(canon) => canon,
|
||||
_ => continue,
|
||||
};
|
||||
let bless = self.config.bless;
|
||||
let check_and_prune_duplicate_outputs = |mode: &CompareMode, require_same: bool| {
|
||||
let examined_path =
|
||||
expected_output_path(&self.testpaths, self.revision, &Some(mode.clone()), kind);
|
||||
|
||||
if canon_content == examined_content {
|
||||
self.delete_file(&examined_path);
|
||||
}
|
||||
}
|
||||
// If there is no output, there is nothing to do
|
||||
let examined_content = match self.load_expected_output_from_path(&examined_path) {
|
||||
Ok(content) => content,
|
||||
_ => return,
|
||||
};
|
||||
|
||||
fn prune_duplicate_outputs(&self, modes: &[CompareMode]) {
|
||||
if self.config.bless {
|
||||
for kind in UI_EXTENSIONS {
|
||||
let canon_comparison_path =
|
||||
expected_output_path(&self.testpaths, self.revision, &None, kind);
|
||||
let is_duplicate = canon == examined_content;
|
||||
|
||||
if let Ok(canon) = self.load_expected_output_from_path(&canon_comparison_path) {
|
||||
for mode in modes {
|
||||
self.prune_duplicate_output(mode.clone(), kind, &canon);
|
||||
match (bless, require_same, is_duplicate) {
|
||||
// If we're blessing and the output is the same, then delete the file.
|
||||
(true, _, true) => {
|
||||
self.delete_file(&examined_path);
|
||||
}
|
||||
// If we want them to be the same, but they are different, then error.
|
||||
// We do this wether we bless or not
|
||||
(_, true, false) => {
|
||||
self.fatal_proc_rec(
|
||||
&format!("`{}` should not have different output from base test!", kind),
|
||||
proc_res,
|
||||
);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
};
|
||||
for mode in modes {
|
||||
check_and_prune_duplicate_outputs(mode, false);
|
||||
}
|
||||
for mode in require_same_modes {
|
||||
check_and_prune_duplicate_outputs(mode, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user