Make the unit-test framework check RUST_TEST_TASKS over RUST_THREADS.

Fixes #7335.
This commit is contained in:
Huon Wilson 2013-08-28 22:58:41 +10:00
parent 7971c46c44
commit 3f791acf4d
2 changed files with 34 additions and 4 deletions

View File

@ -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(

View File

@ -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() {}