Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Unified Diff: tools/test.dart

Issue 748773004: tools/testing: move code into individual libraries (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/testing/dart/android.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/test.dart
diff --git a/tools/test.dart b/tools/test.dart
index 21e1150d0a7b1f85b5890d29521bd9d251bd4557..bbfdf258cfedc62378168386c7bea12fdf7aa3cd 100755
--- a/tools/test.dart
+++ b/tools/test.dart
@@ -30,287 +30,13 @@ library test;
import "dart:async";
import "dart:io";
-import "dart:math" as math;
-import "testing/dart/browser_controller.dart";
-import "testing/dart/http_server.dart";
+import "testing/dart/test_configurations.dart";
import "testing/dart/test_options.dart";
import "testing/dart/test_progress.dart";
-import "testing/dart/test_runner.dart";
import "testing/dart/test_suite.dart";
import "testing/dart/utils.dart";
-import "testing/dart/vm_test_config.dart";
-import "testing/dart/co19_test_config.dart";
-
-/**
- * The directories that contain test suites which follow the conventions
- * required by [StandardTestSuite]'s forDirectory constructor.
- * New test suites should follow this convention because it makes it much
- * simpler to add them to test.dart. Existing test suites should be
- * moved to here, if possible.
-*/
-final TEST_SUITE_DIRECTORIES = [
- new Path('pkg'),
- new Path('runtime/tests/vm'),
- new Path('runtime/bin/vmservice'),
- new Path('samples'),
- new Path('samples-dev'),
- new Path('tests/benchmark_smoke'),
- new Path('tests/chrome'),
- new Path('tests/compiler/dart2js'),
- new Path('tests/compiler/dart2js_extra'),
- new Path('tests/compiler/dart2js_native'),
- new Path('tests/corelib'),
- new Path('tests/html'),
- new Path('tests/isolate'),
- new Path('tests/language'),
- new Path('tests/lib'),
- new Path('tests/standalone'),
- new Path('tests/try'),
- new Path('tests/utils'),
- new Path('utils/tests/css'),
- new Path('utils/tests/peg'),
-];
-
-void testConfigurations(List<Map> configurations) {
- var startTime = new DateTime.now();
- // Extract global options from first configuration.
- var firstConf = configurations[0];
- var maxProcesses = firstConf['tasks'];
- var progressIndicator = firstConf['progress'];
- // TODO(kustermann): Remove this option once the buildbots don't use it
- // anymore.
- var failureSummary = firstConf['failure-summary'];
- BuildbotProgressIndicator.stepName = firstConf['step_name'];
- var verbose = firstConf['verbose'];
- var printTiming = firstConf['time'];
- var listTests = firstConf['list'];
-
- var recordingPath = firstConf['record_to_file'];
- var recordingOutputPath = firstConf['replay_from_file'];
-
- Browser.deleteCache = firstConf['clear_browser_cache'];
-
- if (recordingPath != null && recordingOutputPath != null) {
- print("Fatal: Can't have the '--record_to_file' and '--replay_from_file'"
- "at the same time. Exiting ...");
- exit(1);
- }
-
- if (!firstConf['append_logs']) {
- var files = [new File(TestUtils.flakyFileName()),
- new File(TestUtils.testOutcomeFileName())];
- for (var file in files) {
- if (file.existsSync()) {
- file.deleteSync();
- }
- }
- }
-
- DebugLogger.init(firstConf['write_debug_log'] ?
- TestUtils.debugLogfile() : null, append: firstConf['append_logs']);
-
- // Print the configurations being run by this execution of
- // test.dart. However, don't do it if the silent progress indicator
- // is used. This is only needed because of the junit tests.
- if (progressIndicator != 'silent') {
- List output_words = configurations.length > 1 ?
- ['Test configurations:'] : ['Test configuration:'];
- for (Map conf in configurations) {
- List settings = ['compiler', 'runtime', 'mode', 'arch']
- .map((name) => conf[name]).toList();
- if (conf['checked']) settings.add('checked');
- output_words.add(settings.join('_'));
- }
- print(output_words.join(' '));
- }
-
- var runningBrowserTests = configurations.any((config) {
- return TestUtils.isBrowserRuntime(config['runtime']);
- });
-
- List<Future> serverFutures = [];
- var testSuites = new List<TestSuite>();
- var maxBrowserProcesses = maxProcesses;
- if (configurations.length > 1 &&
- (configurations[0]['test_server_port'] != 0 ||
- configurations[0]['test_server_cross_origin_port'] != 0)) {
- print("If the http server ports are specified, only one configuration"
- " may be run at a time");
- exit(1);
- }
- for (var conf in configurations) {
- Map<String, RegExp> selectors = conf['selectors'];
- var useContentSecurityPolicy = conf['csp'];
- if (!listTests && runningBrowserTests) {
- // Start global http servers that serve the entire dart repo.
- // The http server is available on window.location.port, and a second
- // server for cross-domain tests can be found by calling
- // getCrossOriginPortNumber().
- var servers = new TestingServers(new Path(TestUtils.buildDir(conf)),
- useContentSecurityPolicy,
- conf['runtime'],
- null,
- conf['package_root']);
- serverFutures.add(servers.startServers(conf['local_ip'],
- port: conf['test_server_port'],
- crossOriginPort: conf['test_server_cross_origin_port']));
- conf['_servers_'] = servers;
- if (verbose) {
- serverFutures.last.then((_) {
- var commandline = servers.httpServerCommandline();
- print('Started HttpServers: $commandline');
- });
- }
- }
-
- if (conf['runtime'].startsWith('ie')) {
- // NOTE: We've experienced random timeouts of tests on ie9/ie10. The
- // underlying issue has not been determined yet. Our current hypothesis
- // is that windows does not handle the IE processes independently.
- // If we have more than one browser and kill a browser we are seeing
- // issues with starting up a new browser just after killing the hanging
- // browser.
- maxBrowserProcesses = 1;
- } else if (conf['runtime'].startsWith('safari')) {
- // Safari does not allow us to run from a fresh profile, so we can only
- // use one browser. Additionally, you can not start two simulators
- // for mobile safari simultainiously.
- maxBrowserProcesses = 1;
- } else if (conf['runtime'] == 'chrome' &&
- Platform.operatingSystem == 'macos') {
- // Chrome on mac results in random timeouts.
- maxBrowserProcesses = math.max(1, maxBrowserProcesses ~/ 2);
- }
-
- // If we specifically pass in a suite only run that.
- if (conf['suite_dir'] != null) {
- var suite_path = new Path(conf['suite_dir']);
- testSuites.add(new PKGTestSuite(conf, suite_path));
- } else {
- for (String key in selectors.keys) {
- if (key == 'co19') {
- testSuites.add(new Co19TestSuite(conf));
- } else if (conf['compiler'] == 'none' &&
- conf['runtime'] == 'vm' &&
- key == 'vm') {
- // vm tests contain both cc tests (added here) and dart tests (added
- // in [TEST_SUITE_DIRECTORIES]).
- testSuites.add(new VMTestSuite(conf));
- } else if (conf['analyzer']) {
- if (key == 'analyze_library') {
- testSuites.add(new AnalyzeLibraryTestSuite(conf));
- }
- } else if (conf['compiler'] == 'none' &&
- conf['runtime'] == 'vm' &&
- key == 'pkgbuild') {
- if (!conf['use_repository_packages'] &&
- !conf['use_public_packages']) {
- print("You need to use either --use-repository-packages or "
- "--use-public-packages with the pkgbuild test suite!");
- exit(1);
- }
- if (!conf['use_sdk']) {
- print("Running the 'pkgbuild' test suite requires "
- "passing the '--use-sdk' to test.py");
- exit(1);
- }
- testSuites.add(
- new PkgBuildTestSuite(conf, 'pkgbuild', 'pkg/pkgbuild.status'));
- } else if (key == 'pub') {
- // TODO(rnystrom): Move pub back into TEST_SUITE_DIRECTORIES once
- // #104 is fixed.
- testSuites.add(new StandardTestSuite(conf, 'pub',
- new Path('sdk/lib/_internal/pub_generated'),
- ['sdk/lib/_internal/pub/pub.status'],
- isTestFilePredicate: (file) => file.endsWith('_test.dart'),
- recursive: true));
- }
- }
-
- for (final testSuiteDir in TEST_SUITE_DIRECTORIES) {
- final name = testSuiteDir.filename;
- if (selectors.containsKey(name)) {
- testSuites.add(
- new StandardTestSuite.forDirectory(conf, testSuiteDir));
- }
- }
- }
- }
-
- void allTestsFinished() {
- for (var conf in configurations) {
- if (conf.containsKey('_servers_')) {
- conf['_servers_'].stopServers();
- }
- }
- DebugLogger.close();
- }
-
- var eventListener = [];
- if (progressIndicator != 'silent') {
- var printFailures = true;
- var formatter = new Formatter();
- if (progressIndicator == 'color') {
- progressIndicator = 'compact';
- formatter = new ColorFormatter();
- }
- if (progressIndicator == 'diff') {
- progressIndicator = 'compact';
- formatter = new ColorFormatter();
- printFailures = false;
- eventListener.add(new StatusFileUpdatePrinter());
- }
- eventListener.add(new SummaryPrinter());
- eventListener.add(new FlakyLogWriter());
- if (printFailures) {
- // The buildbot has it's own failure summary since it needs to wrap it
- // into '@@@'-annotated sections.
- var printFailureSummary = progressIndicator != 'buildbot';
- eventListener.add(new TestFailurePrinter(printFailureSummary, formatter));
- }
- eventListener.add(progressIndicatorFromName(progressIndicator,
- startTime,
- formatter));
- if (printTiming) {
- eventListener.add(new TimingPrinter(startTime));
- }
- eventListener.add(new SkippedCompilationsPrinter());
- eventListener.add(new LeftOverTempDirPrinter());
- }
- if (firstConf['write_test_outcome_log']) {
- eventListener.add(new TestOutcomeLogWriter());
- }
- if (firstConf['copy_coredumps']) {
- eventListener.add(new UnexpectedCrashDumpArchiver());
- }
-
- eventListener.add(new ExitCodeSetter());
-
- void startProcessQueue() {
- // [firstConf] is needed here, since the ProcessQueue needs to know the
- // settings of 'noBatch' and 'local_ip'
- new ProcessQueue(firstConf,
- maxProcesses,
- maxBrowserProcesses,
- startTime,
- testSuites,
- eventListener,
- allTestsFinished,
- verbose,
- recordingPath,
- recordingOutputPath);
- }
-
- // Start all the HTTP servers required before starting the process queue.
- if (serverFutures.isEmpty) {
- startProcessQueue();
- } else {
- Future.wait(serverFutures).then((_) => startProcessQueue());
- }
-}
-
-Future deleteTemporaryDartDirectories() {
+Future _deleteTemporaryDartDirectories() {
var completer = new Completer();
var environment = Platform.environment;
if (environment['DART_TESTING_DELETE_TEMPORARY_DIRECTORIES'] == '1') {
@@ -331,7 +57,7 @@ Future deleteTemporaryDartDirectories() {
void main(List<String> arguments) {
// This script is in [dart]/tools.
TestUtils.setDartDirUri(Platform.script.resolve('..'));
- deleteTemporaryDartDirectories().then((_) {
+ _deleteTemporaryDartDirectories().then((_) {
var optionsParser = new TestOptionsParser();
var configurations = optionsParser.parse(arguments);
if (configurations != null && configurations.length > 0) {
@@ -339,4 +65,3 @@ void main(List<String> arguments) {
}
});
}
-
« no previous file with comments | « no previous file | tools/testing/dart/android.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698