From 3f791acf4dbf1bd3a5d4c24526734235cd1ff12f Mon Sep 17 00:00:00 2001 From: Huon Wilson Date: Wed, 28 Aug 2013 22:58:41 +1000 Subject: [PATCH] Make the unit-test framework check RUST_TEST_TASKS over RUST_THREADS. Fixes #7335. --- src/libextra/test.rs | 19 +++++++++++++++---- .../run-fail/test-threads-invalid-value.rs | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 src/test/run-fail/test-threads-invalid-value.rs 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 = 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 or the MIT license +// , 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() {}