about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2017-05-04 23:53:48 +0200
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2017-05-05 10:52:10 +0200
commitd5863e99853c22c649a1787f40c47b60795ea93d (patch)
treecfe71cf5bb98cd23ffd4ff02db31f1d2cc18b2a3
parentf30ed77f0d7bb4be308454d8522b389e0f9ce4f5 (diff)
downloadrust-d5863e99853c22c649a1787f40c47b60795ea93d.tar.gz
rust-d5863e99853c22c649a1787f40c47b60795ea93d.zip
Add Options type in libtest and remove argument
-rw-r--r--src/librustdoc/markdown.rs6
-rw-r--r--src/librustdoc/test.rs6
-rw-r--r--src/libsyntax/test.rs4
-rw-r--r--src/libtest/lib.rs45
-rw-r--r--src/tools/compiletest/src/main.rs2
5 files changed, 39 insertions, 24 deletions
diff --git a/src/librustdoc/markdown.rs b/src/librustdoc/markdown.rs
index efeb8ea72ba..057ce69d9de 100644
--- a/src/librustdoc/markdown.rs
+++ b/src/librustdoc/markdown.rs
@@ -166,9 +166,7 @@ pub fn test(input: &str, cfgs: Vec<String>, libs: SearchPaths, externs: Externs,
     old_find_testable_code(&input_str, &mut collector, DUMMY_SP);
     find_testable_code(&input_str, &mut collector, DUMMY_SP);
     test_args.insert(0, "rustdoctest".to_string());
-    if display_warnings {
-        test_args.insert(1, "--display-stdout".to_string());
-    }
-    testing::test_main(&test_args, collector.tests);
+    testing::test_main(&test_args, collector.tests,
+                       testing::Options::new().display_output(display_warnings));
     0
 }
diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs
index 23462443eff..d5237d629cf 100644
--- a/src/librustdoc/test.rs
+++ b/src/librustdoc/test.rs
@@ -126,12 +126,10 @@ pub fn run(input: &str,
     }
 
     test_args.insert(0, "rustdoctest".to_string());
-    if display_warnings {
-        test_args.insert(1, "--display-stdout".to_string());
-    }
 
     testing::test_main(&test_args,
-                       collector.tests.into_iter().collect());
+                       collector.tests.into_iter().collect(),
+                       testing::Options::new().display_output(display_warnings));
     0
 }
 
diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs
index 50380626d7f..91746a2edd9 100644
--- a/src/libsyntax/test.rs
+++ b/src/libsyntax/test.rs
@@ -442,7 +442,7 @@ We're going to be building a module that looks more or less like:
 mod __test {
   extern crate test (name = "test", vers = "...");
   fn main() {
-    test::test_main_static(&::os::args()[], tests)
+    test::test_main_static(&::os::args()[], tests, test::Options::new())
   }
 
   static tests : &'static [test::TestDescAndFn] = &[
@@ -478,7 +478,7 @@ fn mk_main(cx: &mut TestCtxt) -> P<ast::Item> {
     //        pub fn main() {
     //            #![main]
     //            use std::slice::AsSlice;
-    //            test::test_main_static(::std::os::args().as_slice(), TESTS);
+    //            test::test_main_static(::std::os::args().as_slice(), TESTS, test::Options::new());
     //        }
 
     let sp = ignored_span(cx, DUMMY_SP);
diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs
index 23c0c6065a8..35f2fbca69f 100644
--- a/src/libtest/lib.rs
+++ b/src/libtest/lib.rs
@@ -76,7 +76,7 @@ pub mod test {
     pub use {Bencher, TestName, TestResult, TestDesc, TestDescAndFn, TestOpts, TrFailed,
              TrFailedMsg, TrIgnored, TrOk, Metric, MetricMap, StaticTestFn, StaticTestName,
              DynTestName, DynTestFn, run_test, test_main, test_main_static, filter_tests,
-             parse_opts, StaticBenchFn, ShouldPanic};
+             parse_opts, StaticBenchFn, ShouldPanic, Options};
 }
 
 pub mod stats;
@@ -252,14 +252,34 @@ impl Clone for MetricMap {
     }
 }
 
+/// In case we want to add other options as well, just add them in this struct.
+#[derive(Copy, Clone, Debug)]
+pub struct Options {
+    display_output: bool,
+}
+
+impl Options {
+    pub fn new() -> Options {
+        Options {
+            display_output: false,
+        }
+    }
+
+    pub fn display_output(mut self, display_output: bool) -> Options {
+        self.display_output = display_output;
+        self
+    }
+}
+
 // The default console test runner. It accepts the command line
 // arguments and a vector of test_descs.
-pub fn test_main(args: &[String], tests: Vec<TestDescAndFn>) {
-    let opts = match parse_opts(args) {
+pub fn test_main(args: &[String], tests: Vec<TestDescAndFn>, options: Options) {
+    let mut opts = match parse_opts(args) {
         Some(Ok(o)) => o,
         Some(Err(msg)) => panic!("{:?}", msg),
         None => return,
     };
+    opts.options = options;
     if opts.list {
         if let Err(e) = list_tests_console(&opts, tests) {
             panic!("io error when listing tests: {:?}", e);
@@ -301,7 +321,7 @@ pub fn test_main_static(tests: &[TestDescAndFn]) {
                                }
                            })
                            .collect();
-    test_main(&args, owned_tests)
+    test_main(&args, owned_tests, Options::new())
 }
 
 #[derive(Copy, Clone, Debug)]
@@ -325,7 +345,7 @@ pub struct TestOpts {
     pub quiet: bool,
     pub test_threads: Option<usize>,
     pub skip: Vec<String>,
-    pub display_stdout: bool,
+    pub options: Options,
 }
 
 impl TestOpts {
@@ -344,7 +364,7 @@ impl TestOpts {
             quiet: false,
             test_threads: None,
             skip: vec![],
-            display_stdout: false,
+            options: Options::new(),
         }
     }
 }
@@ -372,8 +392,7 @@ fn optgroups() -> Vec<getopts::OptGroup> {
       getopts::optopt("", "color", "Configure coloring of output:
             auto   = colorize if stdout is a tty and tests are run on serially (default);
             always = always colorize output;
-            never  = never colorize output;", "auto|always|never"),
-      getopts::optflag("", "display-stdout", "to print stdout even if the test succeeds")]
+            never  = never colorize output;", "auto|always|never")]
 }
 
 fn usage(binary: &str) {
@@ -485,7 +504,7 @@ pub fn parse_opts(args: &[String]) -> Option<OptRes> {
         quiet: quiet,
         test_threads: test_threads,
         skip: matches.opt_strs("skip"),
-        display_stdout: matches.opt_present("display-stdout"),
+        options: Options::new(),
     };
 
     Some(Ok(test_opts))
@@ -528,7 +547,7 @@ struct ConsoleTestState<T> {
     failures: Vec<(TestDesc, Vec<u8>)>,
     not_failures: Vec<(TestDesc, Vec<u8>)>,
     max_name_len: usize, // number of columns to fill when aligning names
-    display_stdout: bool,
+    options: Options,
 }
 
 impl<T: Write> ConsoleTestState<T> {
@@ -556,7 +575,7 @@ impl<T: Write> ConsoleTestState<T> {
             failures: Vec::new(),
             not_failures: Vec::new(),
             max_name_len: 0,
-            display_stdout: opts.display_stdout,
+            options: opts.options,
         })
     }
 
@@ -741,7 +760,7 @@ impl<T: Write> ConsoleTestState<T> {
     pub fn write_run_finish(&mut self) -> io::Result<bool> {
         assert!(self.passed + self.failed + self.ignored + self.measured == self.total);
 
-        if self.display_stdout {
+        if self.options.display_output {
             self.write_outputs()?;
         }
         let success = self.failed == 0;
@@ -942,7 +961,7 @@ fn should_sort_failures_before_printing_them() {
         max_name_len: 10,
         metrics: MetricMap::new(),
         failures: vec![(test_b, Vec::new()), (test_a, Vec::new())],
-        display_stdout: false,
+        options: Options::new(),
         not_failures: Vec::new(),
     };
 
diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs
index 0d1795a182c..6fc7f9f07ac 100644
--- a/src/tools/compiletest/src/main.rs
+++ b/src/tools/compiletest/src/main.rs
@@ -336,7 +336,7 @@ pub fn test_opts(config: &Config) -> test::TestOpts {
         test_threads: None,
         skip: vec![],
         list: false,
-        display_stdout: false,
+        options: test::Options::new(),
     }
 }