about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOliver Schneider <github35764891676564198441@oli-obk.de>2018-05-16 18:17:29 +0200
committerOliver Schneider <github35764891676564198441@oli-obk.de>2018-05-17 16:03:59 +0200
commitceed8eb89cc50660e68ff2d4f15365698bd9104f (patch)
tree88060e3c9ede0503e6eea555559e0a644e8b24a3 /src
parent37dee69dacb0fc199d52d9baba3a3caf3018958a (diff)
downloadrust-ceed8eb89cc50660e68ff2d4f15365698bd9104f.tar.gz
rust-ceed8eb89cc50660e68ff2d4f15365698bd9104f.zip
Make `bless` a flag instead of a subcommand
Diffstat (limited to 'src')
-rw-r--r--src/bootstrap/builder.rs5
-rw-r--r--src/bootstrap/flags.rs20
-rw-r--r--src/bootstrap/test.rs8
3 files changed, 11 insertions, 22 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index d453e922892..e5824010ef2 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -311,8 +311,6 @@ impl<'a> ShouldRun<'a> {
 pub enum Kind {
     Build,
     Check,
-    /// Run tests and replace any failing tests' output files (stderr/stout) with the correct ones
-    Bless,
     Test,
     Bench,
     Dist,
@@ -336,7 +334,6 @@ impl<'a> Builder<'a> {
                 native::Llvm, tool::Rustfmt, tool::Miri, native::Lld),
             Kind::Check => describe!(check::Std, check::Test, check::Rustc, check::CodegenBackend,
                 check::Rustdoc),
-            Kind::Bless |
             Kind::Test => describe!(test::Tidy, test::Bootstrap, test::Ui, test::RunPass,
                 test::CompileFail, test::ParseFail, test::RunFail, test::RunPassValgrind,
                 test::MirOpt, test::Codegen, test::CodegenUnits, test::Incremental, test::Debuginfo,
@@ -370,7 +367,6 @@ impl<'a> Builder<'a> {
         let kind = match subcommand {
             "build" => Kind::Build,
             "doc" => Kind::Doc,
-            "bless" => Kind::Bless,
             "test" => Kind::Test,
             "bench" => Kind::Bench,
             "dist" => Kind::Dist,
@@ -412,7 +408,6 @@ impl<'a> Builder<'a> {
             Subcommand::Build { ref paths } => (Kind::Build, &paths[..]),
             Subcommand::Check { ref paths } => (Kind::Check, &paths[..]),
             Subcommand::Doc { ref paths } => (Kind::Doc, &paths[..]),
-            Subcommand::Test { ref paths, bless: true, .. } => (Kind::Bless, &paths[..]),
             Subcommand::Test { ref paths, .. } => (Kind::Test, &paths[..]),
             Subcommand::Bench { ref paths, .. } => (Kind::Bench, &paths[..]),
             Subcommand::Dist { ref paths } => (Kind::Dist, &paths[..]),
diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs
index 8753ccc93cf..90dd5d819b0 100644
--- a/src/bootstrap/flags.rs
+++ b/src/bootstrap/flags.rs
@@ -144,7 +144,6 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`");
         let subcommand = args.iter().find(|&s|
             (s == "build")
             || (s == "check")
-            || (s == "bless")
             || (s == "test")
             || (s == "bench")
             || (s == "doc")
@@ -165,7 +164,6 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`");
 
         // Some subcommands get extra options
         match subcommand.as_str() {
-            "bless" |
             "test"  => {
                 opts.optflag("", "no-fail-fast", "Run all tests regardless of failure");
                 opts.optmulti("", "test-args", "extra arguments", "ARGS");
@@ -177,6 +175,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");
             },
             "bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); },
             "clean" => { opts.optflag("", "all", "clean all build artifacts"); },
@@ -253,12 +252,6 @@ Arguments:
     ignore the stage passed, as there's no way to compile in non-stage 0 without actually building
     the compiler.");
             }
-            "bless" => {
-                subcommand_help.push_str("\n
-Arguments:
-    This subcommand works exactly like the `test` subcommand, but also updates stderr/stdout files
-    before they cause a test failure");
-            }
             "test" => {
                 subcommand_help.push_str("\n
 Arguments:
@@ -268,6 +261,7 @@ Arguments:
         ./x.py test src/test/run-pass
         ./x.py test src/libstd --test-args hash_map
         ./x.py test src/libstd --stage 0
+        ./x.py test src/test/ui --bless
 
     If no arguments are passed then the complete artifacts for that stage are
     compiled and tested.
@@ -329,11 +323,10 @@ Arguments:
             "check" => {
                 Subcommand::Check { paths: paths }
             }
-            "bless" |
             "test" => {
                 Subcommand::Test {
                     paths,
-                    bless: subcommand.as_str() == "bless",
+                    bless: matches.opt_present("bless"),
                     test_args: matches.opt_strs("test-args"),
                     rustc_args: matches.opt_strs("rustc-args"),
                     fail_fast: !matches.opt_present("no-fail-fast"),
@@ -436,6 +429,13 @@ impl Subcommand {
             _ => DocTests::Yes,
         }
     }
+
+    pub fn bless(&self) -> bool {
+        match *self {
+            Subcommand::Test { bless, .. } => bless,
+            _ => false,
+        }
+    }
 }
 
 fn split(s: Vec<String>) -> Vec<String> {
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index ecb463fda28..7a4924f03c8 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -41,8 +41,6 @@ const ADB_TEST_DIR: &str = "/data/tmp/work";
 /// The two modes of the test runner; tests or benchmarks.
 #[derive(Debug, PartialEq, Eq, Hash, Copy, Clone, PartialOrd, Ord)]
 pub enum TestKind {
-    /// Run `cargo bless`
-    Bless,
     /// Run `cargo test`
     Test,
     /// Run `cargo bench`
@@ -53,7 +51,6 @@ impl From<Kind> for TestKind {
     fn from(kind: Kind) -> Self {
         match kind {
             Kind::Test => TestKind::Test,
-            Kind::Bless => TestKind::Bless,
             Kind::Bench => TestKind::Bench,
             _ => panic!("unexpected kind in crate: {:?}", kind)
         }
@@ -64,8 +61,6 @@ impl TestKind {
     // Return the cargo subcommand for this test kind
     fn subcommand(self) -> &'static str {
         match self {
-            // bless and test are both `test` for folder names and cargo subcommands
-            TestKind::Bless |
             TestKind::Test => "test",
             TestKind::Bench => "bench",
         }
@@ -75,7 +70,6 @@ impl TestKind {
 impl fmt::Display for TestKind {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         f.write_str(match *self {
-            TestKind::Bless => "Testing (bless)",
             TestKind::Test => "Testing",
             TestKind::Bench => "Benchmarking",
         })
@@ -967,7 +961,7 @@ impl Step for Compiletest {
         cmd.arg("--host").arg(&*compiler.host);
         cmd.arg("--llvm-filecheck").arg(builder.llvm_filecheck(builder.config.build));
 
-        if builder.kind == Kind::Bless {
+        if builder.config.cmd.bless() {
             cmd.arg("--bless");
         }