diff options
| author | Smitty <me@smitop.com> | 2021-08-03 19:06:12 -0400 |
|---|---|---|
| committer | Smitty <me@smitop.com> | 2021-08-03 19:06:12 -0400 |
| commit | b7e9b1ad7f986425525461e1d53bbd14e2759de9 (patch) | |
| tree | 5e6c33f9a414f8db393f44f557ad1a3fabf093ba | |
| parent | d5fd37f00f1ec5e4a4b0d87f5af0b93f36aab271 (diff) | |
| download | rust-b7e9b1ad7f986425525461e1d53bbd14e2759de9.tar.gz rust-b7e9b1ad7f986425525461e1d53bbd14e2759de9.zip | |
Add x.py option to --force-rerun compiletest tests
| -rw-r--r-- | src/bootstrap/builder/tests.rs | 3 | ||||
| -rw-r--r-- | src/bootstrap/flags.rs | 10 | ||||
| -rw-r--r-- | src/bootstrap/test.rs | 4 | ||||
| -rw-r--r-- | src/tools/compiletest/src/common.rs | 3 | ||||
| -rw-r--r-- | src/tools/compiletest/src/main.rs | 19 |
5 files changed, 32 insertions, 7 deletions
diff --git a/src/bootstrap/builder/tests.rs b/src/bootstrap/builder/tests.rs index e7fb8c0d4d5..bb3ea04d4ac 100644 --- a/src/bootstrap/builder/tests.rs +++ b/src/bootstrap/builder/tests.rs @@ -486,6 +486,7 @@ mod dist { fail_fast: true, doc_tests: DocTests::No, bless: false, + force_rerun: false, compare_mode: None, rustfix_coverage: false, pass: None, @@ -527,6 +528,7 @@ mod dist { fail_fast: true, doc_tests: DocTests::No, bless: false, + force_rerun: false, compare_mode: None, rustfix_coverage: false, pass: None, @@ -583,6 +585,7 @@ mod dist { fail_fast: true, doc_tests: DocTests::Yes, bless: false, + force_rerun: false, compare_mode: None, rustfix_coverage: false, pass: None, diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index 1b7614b2989..7b74a909c28 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -102,6 +102,7 @@ pub enum Subcommand { paths: Vec<PathBuf>, /// Whether to automatically update stderr/stdout files bless: bool, + force_rerun: bool, compare_mode: Option<String>, pass: Option<String>, run: Option<String>, @@ -284,6 +285,7 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`", opts.optflag("", "no-doc", "do not run doc tests"); opts.optflag("", "doc", "only run doc tests"); opts.optflag("", "bless", "update all stderr/stdout files of failing ui tests"); + opts.optflag("", "force-rerun", "rerun tests even if the inputs are unchanged"); opts.optopt( "", "compare-mode", @@ -558,6 +560,7 @@ Arguments: "test" | "t" => Subcommand::Test { paths, bless: matches.opt_present("bless"), + force_rerun: matches.opt_present("force-rerun"), compare_mode: matches.opt_str("compare-mode"), pass: matches.opt_str("pass"), run: matches.opt_str("run"), @@ -726,6 +729,13 @@ impl Subcommand { } } + pub fn force_rerun(&self) -> bool { + match *self { + Subcommand::Test { force_rerun, .. } => force_rerun, + _ => false, + } + } + pub fn rustfix_coverage(&self) -> bool { match *self { Subcommand::Test { rustfix_coverage, .. } => rustfix_coverage, diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index 31f18d81c7c..9effdb2c959 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -1315,6 +1315,10 @@ note: if you're sure you want to do this, please open an issue as to why. In the cmd.arg("--bless"); } + if builder.config.cmd.force_rerun() { + cmd.arg("--force-rerun"); + } + let compare_mode = builder.config.cmd.compare_mode().or_else(|| { if builder.config.test_compare_mode { self.compare_mode } else { None } diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs index a5b526be86f..99b0a3454e8 100644 --- a/src/tools/compiletest/src/common.rs +++ b/src/tools/compiletest/src/common.rs @@ -362,6 +362,9 @@ pub struct Config { pub nodejs: Option<String>, /// Path to a npm executable. Used for rustdoc GUI tests pub npm: Option<String>, + + /// Whether to rerun tests even if the inputs are unchanged. + pub force_rerun: bool, } impl Config { diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index 46432d5e4f5..9e655557fd2 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -144,6 +144,7 @@ pub fn parse_config(args: Vec<String>) -> Config { "enable this to generate a Rustfix coverage file, which is saved in \ `./<build_base>/rustfix_missing_coverage.txt`", ) + .optflag("", "force-rerun", "rerun tests even if the inputs are unchanged") .optflag("h", "help", "show this message") .reqopt("", "channel", "current Rust channel", "CHANNEL"); @@ -289,6 +290,8 @@ pub fn parse_config(args: Vec<String>) -> Config { llvm_components: matches.opt_str("llvm-components").unwrap(), nodejs: matches.opt_str("nodejs"), npm: matches.opt_str("npm"), + + force_rerun: matches.opt_present("force-rerun"), } } @@ -644,13 +647,15 @@ fn make_test(config: &Config, testpaths: &TestPaths, inputs: &Stamp) -> Vec<test let test_name = crate::make_test_name(config, testpaths, revision); let mut desc = make_test_description(config, test_name, &test_path, src_file, cfg); // Ignore tests that already run and are up to date with respect to inputs. - desc.ignore |= is_up_to_date( - config, - testpaths, - &early_props, - revision.map(|s| s.as_str()), - inputs, - ); + if !config.force_rerun { + desc.ignore |= is_up_to_date( + config, + testpaths, + &early_props, + revision.map(|s| s.as_str()), + inputs, + ); + } test::TestDescAndFn { desc, testfn: make_test_closure(config, testpaths, revision) } }) .collect() |
