rustfix coverage: Skip UI tests with non-json error-format

When using the `rustfix-coverage` flag, some tests currently fail
because they define a different error-format than `json`.

The current implementation crashes when encountering those tests. Since
we don't care about non-json test output when collecting the coverage
data, we handle those tests by returning an empty `Vec` instead.
This commit is contained in:
Philipp Hansch 2019-04-03 21:30:57 +02:00
parent f694222887
commit da99f46711
No known key found for this signature in database
GPG Key ID: B6FA06A6E0E2665B

View File

@ -2820,12 +2820,15 @@ impl<'test> TestCx<'test> {
// don't test rustfix with nll right now // don't test rustfix with nll right now
} else if self.config.rustfix_coverage { } else if self.config.rustfix_coverage {
// Find out which tests have `MachineApplicable` suggestions but are missing // Find out which tests have `MachineApplicable` suggestions but are missing
// `run-rustfix` or `run-rustfix-only-machine-applicable` headers // `run-rustfix` or `run-rustfix-only-machine-applicable` headers.
//
// This will return an empty `Vec` in case the executed test file has a
// `compile-flags: --error-format=xxxx` header with a value other than `json`.
let suggestions = get_suggestions_from_json( let suggestions = get_suggestions_from_json(
&proc_res.stderr, &proc_res.stderr,
&HashSet::new(), &HashSet::new(),
Filter::MachineApplicableOnly Filter::MachineApplicableOnly
).unwrap(); ).unwrap_or_default();
if suggestions.len() > 0 if suggestions.len() > 0
&& !self.props.run_rustfix && !self.props.run_rustfix
&& !self.props.rustfix_only_machine_applicable { && !self.props.rustfix_only_machine_applicable {