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

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

Issue 2955513002: Dynamically load packages for dartdevc tests in test.dart. (Closed)
Patch Set: Remove TODO that's TODONE. Created 3 years, 5 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
« no previous file with comments | « tools/testing/dart/compiler_configuration.dart ('k') | tools/testing/dart/utils.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 */ 160 */
161 String get buildDir => configuration.buildDirectory; 161 String get buildDir => configuration.buildDirectory;
162 162
163 /** 163 /**
164 * The path to the compiler for this suite's configuration. Returns `null` if 164 * The path to the compiler for this suite's configuration. Returns `null` if
165 * no compiler should be used. 165 * no compiler should be used.
166 */ 166 */
167 String get compilerPath { 167 String get compilerPath {
168 var compilerConfiguration = configuration.compilerConfiguration; 168 var compilerConfiguration = configuration.compilerConfiguration;
169 if (!compilerConfiguration.hasCompiler) return null; 169 if (!compilerConfiguration.hasCompiler) return null;
170 var name = compilerConfiguration.computeCompilerPath(buildDir); 170 var name = compilerConfiguration.computeCompilerPath();
171 171
172 // TODO(ahe): Only validate this once, in test_options.dart. 172 // TODO(ahe): Only validate this once, in test_options.dart.
173 TestUtils.ensureExists(name, configuration); 173 TestUtils.ensureExists(name, configuration);
174 return name; 174 return name;
175 } 175 }
176 176
177 String get pubPath { 177 String get pubPath {
178 var prefix = 'sdk/bin/'; 178 var prefix = 'sdk/bin/';
179 if (configuration.useSdk) { 179 if (configuration.useSdk) {
180 prefix = '$buildDir/dart-sdk/bin/'; 180 prefix = '$buildDir/dart-sdk/bin/';
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 for (var name in otherResources) { 875 for (var name in otherResources) {
876 var namePath = new Path(name); 876 var namePath = new Path(name);
877 var fromPath = info.filePath.directoryPath.join(namePath); 877 var fromPath = info.filePath.directoryPath.join(namePath);
878 new File('$tempDir/$name').parent.createSync(recursive: true); 878 new File('$tempDir/$name').parent.createSync(recursive: true);
879 new File(fromPath.toNativePath()).copySync('$tempDir/$name'); 879 new File(fromPath.toNativePath()).copySync('$tempDir/$name');
880 } 880 }
881 } 881 }
882 882
883 CommandArtifact compilationArtifact = 883 CommandArtifact compilationArtifact =
884 compilerConfiguration.computeCompilationArtifact( 884 compilerConfiguration.computeCompilationArtifact(
885 buildDir, tempDir, compileTimeArguments, environmentOverrides); 885 tempDir, compileTimeArguments, environmentOverrides);
886 if (!configuration.skipCompilation) { 886 if (!configuration.skipCompilation) {
887 commands.addAll(compilationArtifact.commands); 887 commands.addAll(compilationArtifact.commands);
888 } 888 }
889 889
890 if (expectCompileError(info) && compilerConfiguration.hasCompiler) { 890 if (expectCompileError(info) && compilerConfiguration.hasCompiler) {
891 // Do not attempt to run the compiled result. A compilation 891 // Do not attempt to run the compiled result. A compilation
892 // error should be reported by the compilation command. 892 // error should be reported by the compilation command.
893 return commands; 893 return commands;
894 } 894 }
895 895
896 List<String> runtimeArguments = 896 List<String> runtimeArguments =
897 compilerConfiguration.computeRuntimeArguments( 897 compilerConfiguration.computeRuntimeArguments(
898 configuration.runtimeConfiguration, 898 configuration.runtimeConfiguration,
899 buildDir,
900 info, 899 info,
901 vmOptions, 900 vmOptions,
902 sharedOptions, 901 sharedOptions,
903 args, 902 args,
904 compilationArtifact); 903 compilationArtifact);
905 904
906 return commands 905 return commands
907 ..addAll(configuration.runtimeConfiguration.computeRuntimeCommands( 906 ..addAll(configuration.runtimeConfiguration.computeRuntimeCommands(
908 this, compilationArtifact, runtimeArguments, environmentOverrides)); 907 this, compilationArtifact, runtimeArguments, environmentOverrides));
909 } 908 }
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 scriptPath = compiledDartWrapperFilename; 1082 scriptPath = compiledDartWrapperFilename;
1084 } 1083 }
1085 scriptPath = _createUrlPathFromFile(new Path(scriptPath)); 1084 scriptPath = _createUrlPathFromFile(new Path(scriptPath));
1086 1085
1087 if (configuration.compiler != Compiler.dartdevc) { 1086 if (configuration.compiler != Compiler.dartdevc) {
1088 content = getHtmlContents(fileName, scriptType, scriptPath); 1087 content = getHtmlContents(fileName, scriptType, scriptPath);
1089 } else { 1088 } else {
1090 var jsDir = new Path(compilationTempDir) 1089 var jsDir = new Path(compilationTempDir)
1091 .relativeTo(TestUtils.dartDir) 1090 .relativeTo(TestUtils.dartDir)
1092 .toString(); 1091 .toString();
1093 content = dartdevcHtml(nameNoExt, jsDir); 1092 content = dartdevcHtml(nameNoExt, jsDir, buildDir);
1094 } 1093 }
1095 1094
1096 new File(htmlPath).writeAsStringSync(content); 1095 new File(htmlPath).writeAsStringSync(content);
1097 } 1096 }
1098 1097
1099 // Construct the command(s) that compile all the inputs needed by the 1098 // Construct the command(s) that compile all the inputs needed by the
1100 // browser test. For running Dart in DRT, this will be noop commands. 1099 // browser test. For running Dart in DRT, this will be noop commands.
1101 var commands = <Command>[]; 1100 var commands = <Command>[];
1102 1101
1103 switch (configuration.compiler) { 1102 switch (configuration.compiler) {
1104 case Compiler.dart2js: 1103 case Compiler.dart2js:
1105 commands.add(_dart2jsCompileCommand(dartWrapperFilename, 1104 commands.add(_dart2jsCompileCommand(dartWrapperFilename,
1106 compiledDartWrapperFilename, tempDir, optionsFromFile)); 1105 compiledDartWrapperFilename, tempDir, optionsFromFile));
1107 break; 1106 break;
1108 1107
1109 case Compiler.dartdevc: 1108 case Compiler.dartdevc:
1110 commands.add(_dartdevcCompileCommand(dartWrapperFilename, 1109 commands.add(configuration.compilerConfiguration.createCommand(
1111 '$compilationTempDir/$nameNoExt.js', optionsFromFile)); 1110 dartWrapperFilename, '$compilationTempDir/$nameNoExt.js'));
1112 break; 1111 break;
1113 1112
1114 case Compiler.none: 1113 case Compiler.none:
1115 break; 1114 break;
1116 1115
1117 default: 1116 default:
1118 assert(false); 1117 assert(false);
1119 } 1118 }
1120 1119
1121 // Some tests require compiling multiple input scripts. 1120 // Some tests require compiling multiple input scripts.
1122 for (var name in optionsFromFile['otherScripts'] as List<String>) { 1121 for (var name in optionsFromFile['otherScripts'] as List<String>) {
1123 var namePath = new Path(name); 1122 var namePath = new Path(name);
1124 var fromPath = filePath.directoryPath.join(namePath); 1123 var fromPath = filePath.directoryPath.join(namePath);
1125 1124
1126 switch (configuration.compiler) { 1125 switch (configuration.compiler) {
1127 case Compiler.dart2js: 1126 case Compiler.dart2js:
1128 commands.add(_dart2jsCompileCommand(fromPath.toNativePath(), 1127 commands.add(_dart2jsCompileCommand(fromPath.toNativePath(),
1129 '$tempDir/${namePath.filename}.js', tempDir, optionsFromFile)); 1128 '$tempDir/${namePath.filename}.js', tempDir, optionsFromFile));
1130 break; 1129 break;
1131 1130
1132 case Compiler.dartdevc: 1131 case Compiler.dartdevc:
1133 commands.add(_dartdevcCompileCommand(fromPath.toNativePath(), 1132 commands.add(configuration.compilerConfiguration.createCommand(
1134 '$tempDir/${namePath.filename}.js', optionsFromFile)); 1133 fromPath.toNativePath(), '$tempDir/${namePath.filename}.js'));
1135 break; 1134 break;
1136 1135
1137 default: 1136 default:
1138 assert(configuration.compiler == Compiler.none); 1137 assert(configuration.compiler == Compiler.none);
1139 } 1138 }
1140 1139
1141 if (configuration.compiler == Compiler.none) { 1140 if (configuration.compiler == Compiler.none) {
1142 // For the tests that require multiple input scripts but are not 1141 // For the tests that require multiple input scripts but are not
1143 // compiled, move the input scripts over with the script so they can 1142 // compiled, move the input scripts over with the script so they can
1144 // be accessed. 1143 // be accessed.
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1316 args.add(inputFile); 1315 args.add(inputFile);
1317 1316
1318 var options = optionsFromFile['sharedOptions'] as List<String>; 1317 var options = optionsFromFile['sharedOptions'] as List<String>;
1319 if (options != null) args.addAll(options); 1318 if (options != null) args.addAll(options);
1320 1319
1321 return Command.compilation(Compiler.dart2js.name, outputFile, 1320 return Command.compilation(Compiler.dart2js.name, outputFile,
1322 dart2JsBootstrapDependencies, compilerPath, args, environmentOverrides, 1321 dart2JsBootstrapDependencies, compilerPath, args, environmentOverrides,
1323 alwaysCompile: !useSdk); 1322 alwaysCompile: !useSdk);
1324 } 1323 }
1325 1324
1326 /// Creates a [Command] to compile a single .dart file using dartdevc.
1327 Command _dartdevcCompileCommand(String inputFile, String outputFile,
1328 Map<String, dynamic> optionsFromFile) {
1329 var args = [
1330 "--dart-sdk",
1331 "$buildDir/dart-sdk",
1332 "--library-root",
1333 new Path(inputFile).directoryPath.toString(),
1334 "-o",
1335 outputFile,
1336 inputFile
1337 ];
1338
1339 // TODO(29923): This compiles everything imported by the test into the
1340 // same generated JS module, including other packages like expect,
1341 // stack_trace, etc. Those should be compiled as separate JS modules (by
1342 // build.py) and loaded dynamically by the test.
1343
1344 return Command.compilation(
1345 Compiler.dartdevc.name,
1346 outputFile,
1347 configuration.compilerConfiguration.bootstrapDependencies(buildDir),
1348 compilerPath,
1349 args,
1350 environmentOverrides);
1351 }
1352
1353 String get scriptType { 1325 String get scriptType {
1354 switch (configuration.compiler) { 1326 switch (configuration.compiler) {
1355 case Compiler.none: 1327 case Compiler.none:
1356 return 'application/dart'; 1328 return 'application/dart';
1357 case Compiler.dart2js: 1329 case Compiler.dart2js:
1358 case Compiler.dart2analyzer: 1330 case Compiler.dart2analyzer:
1359 case Compiler.dartdevc: 1331 case Compiler.dartdevc:
1360 return 'text/javascript'; 1332 return 'text/javascript';
1361 default: 1333 default:
1362 print('Non-web runtime, so no scriptType for: ' 1334 print('Non-web runtime, so no scriptType for: '
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
1790 1762
1791 bool isTestFile(String filename) { 1763 bool isTestFile(String filename) {
1792 // NOTE: We exclude tests and patch files for now. 1764 // NOTE: We exclude tests and patch files for now.
1793 return filename.endsWith(".dart") && 1765 return filename.endsWith(".dart") &&
1794 !filename.endsWith("_test.dart") && 1766 !filename.endsWith("_test.dart") &&
1795 !filename.contains("_internal/js_runtime/lib"); 1767 !filename.contains("_internal/js_runtime/lib");
1796 } 1768 }
1797 1769
1798 bool get listRecursively => true; 1770 bool get listRecursively => true;
1799 } 1771 }
OLDNEW
« no previous file with comments | « tools/testing/dart/compiler_configuration.dart ('k') | tools/testing/dart/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698