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

Side by Side Diff: tools/testing/dart/test_suite.dart

Issue 2855883008: Make test.dart strong mode clean! (Closed)
Patch Set: Created 3 years, 7 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * Classes and methods for enumerating and preparing tests. 6 * Classes and methods for enumerating and preparing tests.
7 * 7 *
8 * This library includes: 8 * This library includes:
9 * 9 *
10 * - Creating tests by listing all the Dart files in certain directories, 10 * - Creating tests by listing all the Dart files in certain directories,
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 String createPubPackageBuildsDirectory(Path directoryOfPubspecYaml) { 414 String createPubPackageBuildsDirectory(Path directoryOfPubspecYaml) {
415 return createGeneratedTestDirectoryHelper( 415 return createGeneratedTestDirectoryHelper(
416 "pub_package_builds", 'public_packages', directoryOfPubspecYaml, ""); 416 "pub_package_builds", 'public_packages', directoryOfPubspecYaml, "");
417 } 417 }
418 418
419 /** 419 /**
420 * Helper function for discovering the packages in the dart repository. 420 * Helper function for discovering the packages in the dart repository.
421 */ 421 */
422 Future<List> listDir(Path path, Function isValid) { 422 Future<List> listDir(Path path, Function isValid) {
423 var dir = new Directory(path.toNativePath()); 423 var dir = new Directory(path.toNativePath());
424 return dir.exists().then((var exist) { 424 return dir.exists().then((exists) {
425 if (!exist) return []; 425 if (!exists) return [];
426 return dir 426 return dir
427 .list(recursive: false) 427 .list(recursive: false)
428 .where((fse) => fse is Directory) 428 .where((fse) => fse is Directory)
429 .map((Directory directory) { 429 .map((FileSystemEntity entity) {
430 var directory = entity as Directory;
Bill Hesse 2017/05/04 15:49:38 I'm pretty annoyed that this is needed. Oh well.
Bob Nystrom 2017/07/18 18:06:16 Yes. The long term fix is to add a method to Itera
430 var fullPath = directory.absolute.path; 431 var fullPath = directory.absolute.path;
431 var packageName = new Path(fullPath).filename; 432 var packageName = new Path(fullPath).filename;
432 if (isValid(packageName)) { 433 if (isValid(packageName)) {
433 return [packageName, path.append(packageName).toNativePath()]; 434 return [packageName, path.append(packageName).toNativePath()];
434 } 435 }
435 return null; 436 return null;
436 }) 437 })
437 .where((name) => name != null) 438 .where((name) => name != null)
438 .toList(); 439 .toList();
439 }); 440 });
(...skipping 24 matching lines...) Expand all
464 class CCTestSuite extends TestSuite { 465 class CCTestSuite extends TestSuite {
465 final String testPrefix; 466 final String testPrefix;
466 String targetRunnerPath; 467 String targetRunnerPath;
467 String hostRunnerPath; 468 String hostRunnerPath;
468 final String dartDir; 469 final String dartDir;
469 List<String> statusFilePaths; 470 List<String> statusFilePaths;
470 471
471 CCTestSuite(Map configuration, String suiteName, String runnerName, 472 CCTestSuite(Map configuration, String suiteName, String runnerName,
472 this.statusFilePaths, 473 this.statusFilePaths,
473 {this.testPrefix: ''}) 474 {this.testPrefix: ''})
474 : super(configuration, suiteName), 475 : dartDir = TestUtils.dartDir.toNativePath(),
475 dartDir = TestUtils.dartDir.toNativePath() { 476 super(configuration, suiteName) {
476 // For running the tests we use the given '$runnerName' binary 477 // For running the tests we use the given '$runnerName' binary
477 targetRunnerPath = '$buildDir/$runnerName'; 478 targetRunnerPath = '$buildDir/$runnerName';
478 479
479 // For listing the tests we use the '$runnerName.host' binary if it exists 480 // For listing the tests we use the '$runnerName.host' binary if it exists
480 // and use '$runnerName' if it doesn't. 481 // and use '$runnerName' if it doesn't.
481 var binarySuffix = Platform.operatingSystem == 'windows' ? '.exe' : ''; 482 var binarySuffix = Platform.operatingSystem == 'windows' ? '.exe' : '';
482 var hostBinary = '$targetRunnerPath.host$binarySuffix'; 483 var hostBinary = '$targetRunnerPath.host$binarySuffix';
483 if (new File(hostBinary).existsSync()) { 484 if (new File(hostBinary).existsSync()) {
484 hostRunnerPath = hostBinary; 485 hostRunnerPath = hostBinary;
485 } else { 486 } else {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 List<TestInformation> cachedTests; 575 List<TestInformation> cachedTests;
575 final Path dartDir; 576 final Path dartDir;
576 Predicate<String> isTestFilePredicate; 577 Predicate<String> isTestFilePredicate;
577 final bool listRecursively; 578 final bool listRecursively;
578 final extraVmOptions; 579 final extraVmOptions;
579 List<Uri> _dart2JsBootstrapDependencies; 580 List<Uri> _dart2JsBootstrapDependencies;
580 581
581 StandardTestSuite(Map configuration, String suiteName, Path suiteDirectory, 582 StandardTestSuite(Map configuration, String suiteName, Path suiteDirectory,
582 this.statusFilePaths, 583 this.statusFilePaths,
583 {this.isTestFilePredicate, bool recursive: false}) 584 {this.isTestFilePredicate, bool recursive: false})
584 : super(configuration, suiteName), 585 : dartDir = TestUtils.dartDir,
585 dartDir = TestUtils.dartDir,
586 listRecursively = recursive, 586 listRecursively = recursive,
587 suiteDir = TestUtils.dartDir.join(suiteDirectory), 587 suiteDir = TestUtils.dartDir.join(suiteDirectory),
588 extraVmOptions = TestUtils.getExtraVmOptions(configuration) { 588 extraVmOptions = TestUtils.getExtraVmOptions(configuration),
589 super(configuration, suiteName) {
589 if (!useSdk) { 590 if (!useSdk) {
590 _dart2JsBootstrapDependencies = []; 591 _dart2JsBootstrapDependencies = [];
591 } else { 592 } else {
592 var snapshotPath = TestUtils 593 var snapshotPath = TestUtils
593 .absolutePath( 594 .absolutePath(
594 new Path(buildDir).join(new Path('dart-sdk/bin/snapshots/' 595 new Path(buildDir).join(new Path('dart-sdk/bin/snapshots/'
595 'utils_wrapper.dart.snapshot'))) 596 'utils_wrapper.dart.snapshot')))
596 .toString(); 597 .toString();
597 _dart2JsBootstrapDependencies = [ 598 _dart2JsBootstrapDependencies = [
598 new Uri(scheme: 'file', path: snapshotPath) 599 new Uri(scheme: 'file', path: snapshotPath)
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 enqueueDirectory(dir, group); 721 enqueueDirectory(dir, group);
721 return group.future; 722 return group.future;
722 } 723 }
723 }); 724 });
724 } 725 }
725 726
726 void enqueueDirectory(Directory dir, FutureGroup group) { 727 void enqueueDirectory(Directory dir, FutureGroup group) {
727 var lister = dir 728 var lister = dir
728 .list(recursive: listRecursively) 729 .list(recursive: listRecursively)
729 .where((fse) => fse is File) 730 .where((fse) => fse is File)
730 .forEach((File f) { 731 .forEach((FileSystemEntity entity) {
731 enqueueFile(f.path, group); 732 enqueueFile((entity as File).path, group);
732 }); 733 });
733 group.add(lister); 734 group.add(lister);
734 } 735 }
735 736
736 void enqueueFile(String filename, FutureGroup group) { 737 void enqueueFile(String filename, FutureGroup group) {
737 if (isHtmlTestFile(filename)) { 738 if (isHtmlTestFile(filename)) {
738 var info = htmlTest.getInformation(filename); 739 var info = htmlTest.getInformation(filename);
739 if (info == null) { 740 if (info == null) {
740 DebugLogger 741 DebugLogger
741 .error("HtmlTest $filename does not contain required annotations"); 742 .error("HtmlTest $filename does not contain required annotations");
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 852
852 for (var vmOptionsVarient = 0; 853 for (var vmOptionsVarient = 0;
853 vmOptionsVarient < vmOptionsList.length; 854 vmOptionsVarient < vmOptionsList.length;
854 vmOptionsVarient++) { 855 vmOptionsVarient++) {
855 var vmOptions = vmOptionsList[vmOptionsVarient]; 856 var vmOptions = vmOptionsList[vmOptionsVarient];
856 var allVmOptions = vmOptions; 857 var allVmOptions = vmOptions;
857 if (!extraVmOptions.isEmpty) { 858 if (!extraVmOptions.isEmpty) {
858 allVmOptions = new List.from(vmOptions)..addAll(extraVmOptions); 859 allVmOptions = new List.from(vmOptions)..addAll(extraVmOptions);
859 } 860 }
860 861
861 var commands = []..addAll(baseCommands); 862 var commands = baseCommands.toList();
862 commands.addAll( 863 commands.addAll(
863 makeCommands(info, vmOptionsVarient, allVmOptions, commonArguments)); 864 makeCommands(info, vmOptionsVarient, allVmOptions, commonArguments));
864 enqueueNewTestCase(new TestCase( 865 enqueueNewTestCase(new TestCase(
865 '$suiteName/$testName', commands, configuration, expectations, 866 '$suiteName/$testName', commands, configuration, expectations,
866 isNegative: isNegative(info), info: info)); 867 isNegative: isNegative(info), info: info));
867 } 868 }
868 } 869 }
869 870
870 bool expectCompileError(TestInformation info) { 871 bool expectCompileError(TestInformation info) {
871 return info.hasCompileError || 872 return info.hasCompileError ||
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 1001
1001 Uri _getUriForBrowserTest(String pathComponent, String subtestName) { 1002 Uri _getUriForBrowserTest(String pathComponent, String subtestName) {
1002 // Note: If we run test.py with the "--list" option, no http servers 1003 // Note: If we run test.py with the "--list" option, no http servers
1003 // will be started. So we return a dummy url instead. 1004 // will be started. So we return a dummy url instead.
1004 if (configuration['list']) { 1005 if (configuration['list']) {
1005 return Uri.parse('http://listing_the_tests_only'); 1006 return Uri.parse('http://listing_the_tests_only');
1006 } 1007 }
1007 assert(configuration.containsKey('_servers_')); 1008 assert(configuration.containsKey('_servers_'));
1008 int serverPort = configuration['_servers_'].port; 1009 int serverPort = configuration['_servers_'].port;
1009 int crossOriginPort = configuration['_servers_'].crossOriginPort; 1010 int crossOriginPort = configuration['_servers_'].crossOriginPort;
1010 Map parameters = {'crossOriginPort': crossOriginPort.toString()}; 1011 var parameters = {'crossOriginPort': crossOriginPort.toString()};
1011 if (subtestName != null) { 1012 if (subtestName != null) {
1012 parameters['group'] = subtestName; 1013 parameters['group'] = subtestName;
1013 } 1014 }
1014 return new Uri( 1015 return new Uri(
1015 scheme: 'http', 1016 scheme: 'http',
1016 host: configuration['local_ip'], 1017 host: configuration['local_ip'],
1017 port: serverPort, 1018 port: serverPort,
1018 path: pathComponent, 1019 path: pathComponent,
1019 queryParameters: parameters); 1020 queryParameters: parameters);
1020 } 1021 }
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 multitest ? info.optionsFromFile['subtestNames'] : [null]; 1191 multitest ? info.optionsFromFile['subtestNames'] : [null];
1191 for (String subtestName in subtestNames) { 1192 for (String subtestName in subtestNames) {
1192 // Construct the command that executes the browser test 1193 // Construct the command that executes the browser test
1193 List<Command> commandSet = new List<Command>.from(commands); 1194 List<Command> commandSet = new List<Command>.from(commands);
1194 1195
1195 var htmlPath_subtest = _createUrlPathFromFile(new Path(htmlPath)); 1196 var htmlPath_subtest = _createUrlPathFromFile(new Path(htmlPath));
1196 var fullHtmlPath = 1197 var fullHtmlPath =
1197 _getUriForBrowserTest(htmlPath_subtest, subtestName).toString(); 1198 _getUriForBrowserTest(htmlPath_subtest, subtestName).toString();
1198 1199
1199 if (runtime == "drt") { 1200 if (runtime == "drt") {
1200 var dartFlags = []; 1201 var dartFlags = <String>[];
1201 var contentShellOptions = []; 1202 var contentShellOptions = ['--no-timeout', '--run-layout-test'];
1202
1203 contentShellOptions.add('--no-timeout');
1204 contentShellOptions.add('--run-layout-test');
1205 1203
1206 // Disable the GPU under Linux and Dartium. If the GPU is enabled, 1204 // Disable the GPU under Linux and Dartium. If the GPU is enabled,
1207 // Chrome may send a termination signal to a test. The test will be 1205 // Chrome may send a termination signal to a test. The test will be
1208 // terminated if a machine (bot) doesn't have a GPU or if a test is 1206 // terminated if a machine (bot) doesn't have a GPU or if a test is
1209 // still running after a certain period of time. 1207 // still running after a certain period of time.
1210 if (configuration['system'] == 'linux' && 1208 if (configuration['system'] == 'linux' &&
1211 configuration['runtime'] == 'drt') { 1209 configuration['runtime'] == 'drt') {
1212 contentShellOptions.add('--disable-gpu'); 1210 contentShellOptions.add('--disable-gpu');
1213 } 1211 }
1214 if (compiler == 'none') { 1212 if (compiler == 'none') {
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1388 } 1386 }
1389 if (Platform.operatingSystem == 'macos') { 1387 if (Platform.operatingSystem == 'macos') {
1390 final path = dartDir.append( 1388 final path = dartDir.append(
1391 '/client/tests/drt/Content Shell.app/Contents/MacOS/Content Shell'); 1389 '/client/tests/drt/Content Shell.app/Contents/MacOS/Content Shell');
1392 return path.toNativePath(); 1390 return path.toNativePath();
1393 } 1391 }
1394 return dartDir.append('client/tests/drt/content_shell').toNativePath(); 1392 return dartDir.append('client/tests/drt/content_shell').toNativePath();
1395 } 1393 }
1396 1394
1397 List<String> commonArgumentsFromFile(Path filePath, Map optionsFromFile) { 1395 List<String> commonArgumentsFromFile(Path filePath, Map optionsFromFile) {
1398 List args = TestUtils.standardOptions(configuration); 1396 var args = TestUtils.standardOptions(configuration);
1399 1397
1400 String packages = packagesArgument( 1398 String packages = packagesArgument(
1401 optionsFromFile['packageRoot'], optionsFromFile['packages']); 1399 optionsFromFile['packageRoot'], optionsFromFile['packages']);
1402 if (packages != null) { 1400 if (packages != null) {
1403 args.add(packages); 1401 args.add(packages);
1404 } 1402 }
1405 args.addAll(additionalOptions(filePath)); 1403 args.addAll(additionalOptions(filePath));
1406 if (configuration['analyzer']) { 1404 if (configuration['analyzer']) {
1407 args.add('--format=machine'); 1405 args.add('--format=machine');
1408 args.add('--no-hints'); 1406 args.add('--no-hints');
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
2005 result = 'out/'; 2003 result = 'out/';
2006 } else if (system == 'macos') { 2004 } else if (system == 'macos') {
2007 result = 'xcodebuild/'; 2005 result = 'xcodebuild/';
2008 } else { 2006 } else {
2009 throw new Exception('Unknown operating system: "$system"'); 2007 throw new Exception('Unknown operating system: "$system"');
2010 } 2008 }
2011 return result; 2009 return result;
2012 } 2010 }
2013 2011
2014 static List<String> standardOptions(Map configuration) { 2012 static List<String> standardOptions(Map configuration) {
2015 List args = ["--ignore-unrecognized-flags"]; 2013 var args = ["--ignore-unrecognized-flags"];
2016 String compiler = configuration["compiler"]; 2014 String compiler = configuration["compiler"];
2017 if (compiler == "dart2js") { 2015 if (compiler == "dart2js") {
2018 args = ['--generate-code-with-compile-time-errors', '--test-mode']; 2016 args = ['--generate-code-with-compile-time-errors', '--test-mode'];
2019 if (configuration["checked"]) { 2017 if (configuration["checked"]) {
2020 args.add('--enable-checked-mode'); 2018 args.add('--enable-checked-mode');
2021 } 2019 }
2022 // args.add("--verbose"); 2020 // args.add("--verbose");
2023 if (!isBrowserRuntime(configuration['runtime'])) { 2021 if (!isBrowserRuntime(configuration['runtime'])) {
2024 args.add("--allow-mock-compilation"); 2022 args.add("--allow-mock-compilation");
2025 args.add("--categories=all"); 2023 args.add("--categories=all");
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
2229 } 2227 }
2230 if (path.length > WINDOWS_SHORTEN_PATH_LIMIT) { 2228 if (path.length > WINDOWS_SHORTEN_PATH_LIMIT) {
2231 ++shortNameCounter; 2229 ++shortNameCounter;
2232 var pathEnd = path.substring(path.length - WINDOWS_PATH_END_LENGTH); 2230 var pathEnd = path.substring(path.length - WINDOWS_PATH_END_LENGTH);
2233 path = "short${shortNameCounter}_$pathEnd"; 2231 path = "short${shortNameCounter}_$pathEnd";
2234 } 2232 }
2235 } 2233 }
2236 return path; 2234 return path;
2237 } 2235 }
2238 } 2236 }
OLDNEW
« tools/testing/dart/.analysis_options ('K') | « tools/testing/dart/test_runner.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698