提交 00bc634f 编写于 作者: T Tatsuyuki Ishi

compiletest: introduce skip-trans

上级 432fe0ce
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// Test that with the `skip-trans` option the test isn't executed.
// skip-trans
fn main() {
unreachable!();
}
......@@ -228,6 +228,8 @@ pub struct TestProps {
pub check_test_line_numbers_match: bool,
// The test must be compiled and run successfully. Only used in UI tests for now.
pub run_pass: bool,
// Skip any codegen step and running the executable. Only for run-pass.
pub skip_trans: bool,
// Do not pass `-Z ui-testing` to UI tests
pub disable_ui_testing_normalization: bool,
// customized normalization rules
......@@ -260,6 +262,7 @@ pub fn new() -> Self {
compile_pass: false,
check_test_line_numbers_match: false,
run_pass: false,
skip_trans: false,
disable_ui_testing_normalization: false,
normalize_stdout: vec![],
normalize_stderr: vec![],
......@@ -381,6 +384,10 @@ fn load_from(&mut self,
config.parse_compile_pass(ln) || self.run_pass;
}
if !self.skip_trans {
self.skip_trans = config.parse_skip_trans(ln);
}
if !self.disable_ui_testing_normalization {
self.disable_ui_testing_normalization =
config.parse_disable_ui_testing_normalization(ln);
......@@ -524,6 +531,10 @@ fn parse_run_pass(&self, line: &str) -> bool {
self.parse_name_directive(line, "run-pass")
}
fn parse_skip_trans(&self, line: &str) -> bool {
self.parse_name_directive(line, "skip-trans")
}
fn parse_env(&self, line: &str, name: &str) -> Option<(String, String)> {
self.parse_name_value_directive(line, name).map(|nv| {
// nv is either FOO or FOO=BAR
......
......@@ -343,9 +343,11 @@ fn run_rpass_test(&self) {
"run-pass tests with expected warnings should be moved to ui/"
);
let proc_res = self.exec_compiled_test();
if !proc_res.status.success() {
self.fatal_proc_rec("test run failed!", &proc_res);
if !self.props.skip_trans {
let proc_res = self.exec_compiled_test();
if !proc_res.status.success() {
self.fatal_proc_rec("test run failed!", &proc_res);
}
}
}
......@@ -1697,6 +1699,11 @@ fn make_compile_args(&self, input_file: &Path, output_file: TargetLocation) -> C
}
}
if self.props.skip_trans {
assert!(!self.props.compile_flags.iter().any(|s| s.starts_with("--emit")));
rustc.args(&["--emit", "metadata"]);
}
if !is_rustdoc {
if self.config.target == "wasm32-unknown-unknown" {
// rustc.arg("-g"); // get any backtrace at all on errors
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册