OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |