about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorSantiago Pastorino <spastorino@gmail.com>2018-01-18 19:44:41 -0300
committerSantiago Pastorino <spastorino@gmail.com>2018-01-19 00:59:45 -0300
commitdb41f1e1cfa0d817a96830fecbdcf70d249597e7 (patch)
tree884810e9428511749f14306c61809c4836b2bf3a /src/bootstrap
parent44afd76788df1a63fcd3fe19815eb28dbe9c2bf7 (diff)
downloadrust-db41f1e1cfa0d817a96830fecbdcf70d249597e7.tar.gz
rust-db41f1e1cfa0d817a96830fecbdcf70d249597e7.zip
Add rustc-args option to test runner
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/check.rs1
-rw-r--r--src/bootstrap/flags.rs17
2 files changed, 18 insertions, 0 deletions
diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs
index ed110762cb3..a8a1f871cf5 100644
--- a/src/bootstrap/check.rs
+++ b/src/bootstrap/check.rs
@@ -750,6 +750,7 @@ impl Step for Compiletest {
             flags.push("-g".to_string());
         }
         flags.push("-Zmiri -Zunstable-options".to_string());
+        flags.push(build.config.cmd.rustc_args().join(" "));
 
         if let Some(linker) = build.linker(target) {
             cmd.arg("--linker").arg(linker);
diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs
index b5d51598fab..0816c4dfe3d 100644
--- a/src/bootstrap/flags.rs
+++ b/src/bootstrap/flags.rs
@@ -54,6 +54,7 @@ pub enum Subcommand {
     Test {
         paths: Vec<PathBuf>,
         test_args: Vec<String>,
+        rustc_args: Vec<String>,
         fail_fast: bool,
     },
     Bench {
@@ -150,6 +151,12 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`");
             "test"  => {
                 opts.optflag("", "no-fail-fast", "Run all tests regardless of failure");
                 opts.optmulti("", "test-args", "extra arguments", "ARGS");
+                opts.optmulti(
+                    "",
+                    "rustc-args",
+                    "extra options to pass the compiler when running tests",
+                    "ARGS",
+                );
             },
             "bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); },
             "clean" => { opts.optflag("", "all", "clean all build artifacts"); },
@@ -283,6 +290,7 @@ Arguments:
                 Subcommand::Test {
                     paths,
                     test_args: matches.opt_strs("test-args"),
+                    rustc_args: matches.opt_strs("rustc-args"),
                     fail_fast: !matches.opt_present("no-fail-fast"),
                 }
             }
@@ -362,6 +370,15 @@ impl Subcommand {
         }
     }
 
+    pub fn rustc_args(&self) -> Vec<&str> {
+        match *self {
+            Subcommand::Test { ref rustc_args, .. } => {
+                rustc_args.iter().flat_map(|s| s.split_whitespace()).collect()
+            }
+            _ => Vec::new(),
+        }
+    }
+
     pub fn fail_fast(&self) -> bool {
         match *self {
             Subcommand::Test { fail_fast, .. } => fail_fast,