| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 /// Tests code generation. | 5 /// Tests code generation. |
| 6 /// Runs Dart Dev Compiler on all input in the `codegen` directory and checks | 6 /// Runs Dart Dev Compiler on all input in the `codegen` directory and checks |
| 7 /// that the output is what we expected. | 7 /// that the output is what we expected. |
| 8 library dev_compiler.test.codegen_test; | 8 library dev_compiler.test.codegen_test; |
| 9 | 9 |
| 10 import 'dart:convert' show JSON; | 10 import 'dart:convert' show JSON; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 'corelib', | 43 'corelib', |
| 44 path.join('lib', 'convert'), | 44 path.join('lib', 'convert'), |
| 45 path.join('lib', 'html'), | 45 path.join('lib', 'html'), |
| 46 path.join('lib', 'math'), | 46 path.join('lib', 'math'), |
| 47 path.join('lib', 'typed_data') | 47 path.join('lib', 'typed_data') |
| 48 ]; | 48 ]; |
| 49 | 49 |
| 50 var multitests = expandMultiTests(testDirs, filePattern); | 50 var multitests = expandMultiTests(testDirs, filePattern); |
| 51 | 51 |
| 52 // Build packages tests depend on | 52 // Build packages tests depend on |
| 53 var generatedSdkDir = path.join(testDirectory, '..', 'tool', 'generated_sdk'); | 53 var sdkSummaryFile = |
| 54 path.join(testDirectory, '..', 'lib', 'runtime', 'dart_sdk.sum'); |
| 54 var analyzerOptions = new AnalyzerOptions( | 55 var analyzerOptions = new AnalyzerOptions( |
| 55 customUrlMappings: packageUrlMappings, dartSdkPath: generatedSdkDir); | 56 customUrlMappings: packageUrlMappings, |
| 57 dartSdkSummaryPath: sdkSummaryFile); |
| 56 var compiler = new ModuleCompiler(analyzerOptions); | 58 var compiler = new ModuleCompiler(analyzerOptions); |
| 57 | 59 |
| 58 group('dartdevc package', () { | 60 group('dartdevc package', () { |
| 59 _buildPackages(compiler, expectDir); | 61 _buildPackages(compiler, expectDir); |
| 60 | 62 |
| 61 test('matcher', () { | 63 test('matcher', () { |
| 62 _buildPackage(compiler, expectDir, "matcher"); | 64 _buildPackage(compiler, expectDir, "matcher"); |
| 63 }); | 65 }); |
| 64 | 66 |
| 65 test('unittest', () { | 67 test('unittest', () { |
| 66 _buildPackage(compiler, expectDir, "unittest"); | 68 // Only build files applicable to the web - html_*.dart and its |
| 69 // internal dependences. |
| 70 _buildPackage(compiler, expectDir, "unittest", packageFiles: [ |
| 71 'unittest.dart', |
| 72 'html_config.dart', |
| 73 'html_individual_config.dart', |
| 74 'html_enhanced_config.dart' |
| 75 ]); |
| 67 }); | 76 }); |
| 68 | 77 |
| 69 test('stack_trace', () { | 78 test('stack_trace', () { |
| 70 _buildPackage(compiler, expectDir, "stack_trace"); | 79 _buildPackage(compiler, expectDir, "stack_trace"); |
| 71 }); | 80 }); |
| 72 | 81 |
| 73 test('path', () { | 82 test('path', () { |
| 74 _buildPackage(compiler, expectDir, "path"); | 83 _buildPackage(compiler, expectDir, "path"); |
| 75 }); | 84 }); |
| 76 }); | 85 }); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 moduleName, baseDir, files.toList(), _moduleForLibrary); | 130 moduleName, baseDir, files.toList(), _moduleForLibrary); |
| 122 var module = compiler.compile(unit, options); | 131 var module = compiler.compile(unit, options); |
| 123 _writeModule(path.join(outDir.path, filename), module); | 132 _writeModule(path.join(outDir.path, filename), module); |
| 124 }); | 133 }); |
| 125 } | 134 } |
| 126 }); | 135 }); |
| 127 } | 136 } |
| 128 | 137 |
| 129 if (codeCoverage) { | 138 if (codeCoverage) { |
| 130 test('build_sdk code coverage', () { | 139 test('build_sdk code coverage', () { |
| 140 var generatedSdkDir = |
| 141 path.join(testDirectory, '..', 'tool', 'generated_sdk'); |
| 131 return build_sdk.main(['--dart-sdk', generatedSdkDir, '-o', expectDir]); | 142 return build_sdk.main(['--dart-sdk', generatedSdkDir, '-o', expectDir]); |
| 132 }); | 143 }); |
| 133 } | 144 } |
| 134 } | 145 } |
| 135 | 146 |
| 136 void _writeModule(String outPath, JSModuleFile result) { | 147 void _writeModule(String outPath, JSModuleFile result) { |
| 137 new Directory(path.dirname(outPath)).createSync(recursive: true); | 148 new Directory(path.dirname(outPath)).createSync(recursive: true); |
| 138 | 149 |
| 139 String errors = result.errors.join('\n'); | 150 String errors = result.errors.join('\n'); |
| 140 if (errors.isNotEmpty && !errors.endsWith('\n')) errors += '\n'; | 151 if (errors.isNotEmpty && !errors.endsWith('\n')) errors += '\n'; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 test(name, () { | 202 test(name, () { |
| 192 var input = new BuildUnit(name, inputDir, [uri], _moduleForLibrary); | 203 var input = new BuildUnit(name, inputDir, [uri], _moduleForLibrary); |
| 193 var built = compiler.compile(input, options); | 204 var built = compiler.compile(input, options); |
| 194 | 205 |
| 195 var outPath = path.join(expectDir, path.withoutExtension(uriPath)); | 206 var outPath = path.join(expectDir, path.withoutExtension(uriPath)); |
| 196 _writeModule(outPath, built); | 207 _writeModule(outPath, built); |
| 197 }); | 208 }); |
| 198 } | 209 } |
| 199 } | 210 } |
| 200 | 211 |
| 201 void _buildPackage(ModuleCompiler compiler, String expectDir, packageName) { | 212 void _buildPackage(ModuleCompiler compiler, String expectDir, packageName, |
| 213 {List<String> packageFiles}) { |
| 202 var options = new CompilerOptions(sourceMap: false, summarizeApi: false); | 214 var options = new CompilerOptions(sourceMap: false, summarizeApi: false); |
| 203 | 215 |
| 204 var packageRoot = path.join(inputDir, 'packages'); | 216 var packageRoot = path.join(inputDir, 'packages'); |
| 205 var packageInputDir = path.join(packageRoot, packageName); | 217 var packageInputDir = path.join(packageRoot, packageName); |
| 206 var files = new Directory(packageInputDir).listSync(recursive: true); | 218 List<String> files; |
| 219 if (packageFiles != null) { |
| 220 // Only collect files transitively reachable from packageFiles |
| 221 var reachable = new Set<String>(); |
| 222 for (var f in packageFiles) { |
| 223 f = path.join(packageInputDir, f); |
| 224 _collectTransitiveImports(new File(f).readAsStringSync(), reachable, |
| 225 packageRoot: packageRoot, from: f); |
| 226 } |
| 227 files = reachable.toList(); |
| 228 } else { |
| 229 // Collect all files in the packages directory |
| 230 files = new Directory(packageInputDir) |
| 231 .listSync(recursive: true) |
| 232 .where((entry) => entry.path.endsWith('.dart')) |
| 233 .map((entry) => entry.path) |
| 234 .toList(); |
| 235 } |
| 207 | 236 |
| 208 var unit = new BuildUnit( | 237 var unit = |
| 209 packageName, | 238 new BuildUnit(packageName, packageInputDir, files, _moduleForLibrary); |
| 210 packageInputDir, | |
| 211 files | |
| 212 .where((entry) => entry.path.endsWith('dart')) | |
| 213 .map((entry) => entry.path) | |
| 214 .toList(), | |
| 215 _moduleForLibrary); | |
| 216 var module = compiler.compile(unit, options); | 239 var module = compiler.compile(unit, options); |
| 217 | 240 |
| 218 var outPath = path.join(expectDir, packageName, packageName); | 241 var outPath = path.join(expectDir, packageName, packageName); |
| 219 _writeModule(outPath, module); | 242 _writeModule(outPath, module); |
| 220 } | 243 } |
| 221 | 244 |
| 222 String _moduleForLibrary(Source source) { | 245 String _moduleForLibrary(Source source) { |
| 223 var scheme = source.uri.scheme; | 246 var scheme = source.uri.scheme; |
| 224 if (scheme == 'package') { | 247 if (scheme == 'package') { |
| 225 return source.uri.pathSegments.first; | 248 return source.uri.pathSegments.first; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 /// Simplified from ParseDartTask.resolveDirective. | 342 /// Simplified from ParseDartTask.resolveDirective. |
| 320 String _resolveDirective(UriBasedDirective directive) { | 343 String _resolveDirective(UriBasedDirective directive) { |
| 321 StringLiteral uriLiteral = directive.uri; | 344 StringLiteral uriLiteral = directive.uri; |
| 322 String uriContent = uriLiteral.stringValue; | 345 String uriContent = uriLiteral.stringValue; |
| 323 if (uriContent != null) { | 346 if (uriContent != null) { |
| 324 uriContent = uriContent.trim(); | 347 uriContent = uriContent.trim(); |
| 325 directive.uriContent = uriContent; | 348 directive.uriContent = uriContent; |
| 326 } | 349 } |
| 327 return directive.validate() == null ? uriContent : null; | 350 return directive.validate() == null ? uriContent : null; |
| 328 } | 351 } |
| OLD | NEW |