blob: ebb39bdc5e4ab087ae00b2a3439754810e49a332 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of unittest;
/// Class for encapsulating test environment state.
///
/// This is used by the [withTestEnvironment] method to support multiple
/// invocations of the unittest library within the same application
/// instance.
class _TestEnvironment {
Configuration config;
// We use a 'dummy' context for the top level to eliminate null
// checks when querying the context. This allows us to easily
// support top-level [setUp]/[tearDown] functions as well.
final rootContext = new _GroupContext();
_GroupContext currentContext;
/// The [currentTestCaseIndex] represents the index of the currently running
/// test case.
///
/// If this is -1 it implies the test system is not running.
/// It will be set to [number of test cases] as a short-lived state flagging
/// that the last test has completed.
int currentTestCaseIndex = -1;
/// The [initialized] variable specifies whether the framework
/// has been initialized.
bool initialized = false;
/// The time since we last gave asynchronous code a chance to be scheduled.
int lastBreath = new DateTime.now().millisecondsSinceEpoch;
/// The set of tests to run can be restricted by using [solo_test] and
/// [solo_group].
///
/// As groups can be nested we use a counter to keep track of the nesting
/// level of soloing, and a flag to tell if we have seen any solo tests.
int soloNestingLevel = 0;
bool soloTestSeen = false;
/// The list of test cases to run.
final List<TestCase> testCases = new List<TestCase>();
/// The [uncaughtErrorMessage] holds the error messages that are printed
/// in the test summary.
String uncaughtErrorMessage;
_TestEnvironment() {
currentContext = rootContext;
}
}