about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libextra/test.rs19
-rw-r--r--src/test/run-fail/test-threads-invalid-value.rs19
2 files changed, 34 insertions, 4 deletions
diff --git a/src/libextra/test.rs b/src/libextra/test.rs
index ccade8f19be..82b62c7dfc0 100644
--- a/src/libextra/test.rs
+++ b/src/libextra/test.rs
@@ -203,7 +203,7 @@ The FILTER is matched against the name of all tests to run, and if any tests
 have a substring match, only those tests are run.
 
 By default, all tests are run in parallel. This can be altered with the
-RUST_THREADS environment variable when running tests (set it to 1).
+RUST_TEST_TASKS environment variable when running tests (set it to 1).
 
 Test Attributes:
 
@@ -740,9 +740,20 @@ static SCHED_OVERCOMMIT : uint = 4u;
 
 fn get_concurrency() -> uint {
     use std::rt;
-    let threads = rt::util::default_sched_threads();
-    if threads == 1 { 1 }
-    else { threads * SCHED_OVERCOMMIT }
+    match os::getenv("RUST_TEST_TASKS") {
+        Some(s) => {
+            let opt_n: Option<uint> = FromStr::from_str(s);
+            match opt_n {
+                Some(n) if n > 0 => n,
+                _ => fail!("RUST_TEST_TASKS is `%s`, should be a non-negative integer.", s)
+            }
+        }
+        None => {
+            let threads = rt::util::default_sched_threads();
+            if threads == 1 { 1 }
+            else { threads * SCHED_OVERCOMMIT }
+        }
+    }
 }
 
 pub fn filter_tests(
diff --git a/src/test/run-fail/test-threads-invalid-value.rs b/src/test/run-fail/test-threads-invalid-value.rs
new file mode 100644
index 00000000000..0050d24e1d0
--- /dev/null
+++ b/src/test/run-fail/test-threads-invalid-value.rs
@@ -0,0 +1,19 @@
+// Copyright 2013 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.
+
+// This checks that RUST_TEST_TASKS not being 1, 2, ... is detected
+// properly.
+
+// error-pattern:should be a non-negative integer
+// compile-flags: --test
+// exec-env:RUST_TEST_TASKS=foo
+
+#[test]
+fn do_nothing() {}