| Index: test/codegen_test.dart
|
| diff --git a/test/codegen_test.dart b/test/codegen_test.dart
|
| index 95d06e5a984fd3ec63029d6428267be56bbc4087..60db69316bb09825b7b4ba71da405c77a90d2c47 100644
|
| --- a/test/codegen_test.dart
|
| +++ b/test/codegen_test.dart
|
| @@ -102,14 +102,11 @@ main(List<String> arguments) {
|
| var relativePath = path.relative(testFile, from: codegenTestDir);
|
|
|
| // Only compile the top-level files for generating coverage.
|
| - if (codeCoverage && path.dirname(relativePath) != ".") continue;
|
| + bool isTopLevelTest = path.dirname(relativePath) == ".";
|
| + if (codeCoverage && !isTopLevelTest) continue;
|
|
|
| var name = path.withoutExtension(relativePath);
|
| test('dartdevc $name', () {
|
| - var relativeDir = path.dirname(relativePath);
|
| - var outDir = path.join(codegenOutputDir, relativeDir);
|
| - var expectDir = path.join(codegenExpectDir, relativeDir);
|
| -
|
| // Check if we need to use special compile options.
|
| var contents = new File(testFile).readAsStringSync();
|
| var match =
|
| @@ -125,15 +122,11 @@ main(List<String> arguments) {
|
| // Collect any other files we've imported.
|
| var files = new Set<String>();
|
| _collectTransitiveImports(contents, files, from: testFile);
|
| - var moduleName =
|
| - path.withoutExtension(path.relative(testFile, from: codegenTestDir));
|
| - var unit = new BuildUnit(moduleName, path.dirname(testFile),
|
| - files.toList(), _moduleForLibrary);
|
| + var unit = new BuildUnit(
|
| + name, path.dirname(testFile), files.toList(), _moduleForLibrary);
|
| var module = compiler.compile(unit, options);
|
| - _writeModule(
|
| - path.join(outDir, path.basenameWithoutExtension(testFile)),
|
| - path.join(expectDir, path.basenameWithoutExtension(testFile)),
|
| - module);
|
| + _writeModule(path.join(codegenOutputDir, name),
|
| + isTopLevelTest ? path.join(codegenExpectDir, name) : null, module);
|
| });
|
| }
|
|
|
| @@ -150,7 +143,6 @@ main(List<String> arguments) {
|
|
|
| void _writeModule(String outPath, String expectPath, JSModuleFile result) {
|
| _ensureDirectory(path.dirname(outPath));
|
| - _ensureDirectory(path.dirname(expectPath));
|
|
|
| String errors = result.errors.join('\n');
|
| if (errors.isNotEmpty && !errors.endsWith('\n')) errors += '\n';
|
| @@ -158,7 +150,6 @@ void _writeModule(String outPath, String expectPath, JSModuleFile result) {
|
|
|
| var jsFile = new File(outPath + '.js');
|
| var summaryFile = new File(outPath + '.sum');
|
| - var expectFile = new File(expectPath + '.js');
|
| var errorFile = new File(outPath + '.err');
|
|
|
| if (result.isValid) {
|
| @@ -172,8 +163,6 @@ void _writeModule(String outPath, String expectPath, JSModuleFile result) {
|
| .writeAsStringSync(JSON.encode(result.placeSourceMap(mapPath)));
|
| }
|
|
|
| - expectFile.writeAsStringSync(result.code);
|
| -
|
| // There are no errors, so delete any stale ".err" file.
|
| if (errorFile.existsSync()) {
|
| errorFile.deleteSync();
|
| @@ -202,12 +191,24 @@ dart_library.library('$moduleName', null, [
|
| if (jsFile.existsSync()) {
|
| jsFile.deleteSync();
|
| }
|
| + }
|
|
|
| - // There are errors, so delete any stale expect ".js" file.
|
| - if (expectFile.existsSync()) {
|
| - expectFile.deleteSync();
|
| + // Write the expectation file if needed.
|
| + // Generally speaking we try to avoid these tests, but they are occasionally
|
| + // useful.
|
| + if (expectPath != null) {
|
| + _ensureDirectory(path.dirname(expectPath));
|
| +
|
| + var expectFile = new File(expectPath + '.js');
|
| + if (result.isValid) {
|
| + expectFile.writeAsStringSync(result.code);
|
| + } else {
|
| + // There are errors, so delete any stale expect ".js" file.
|
| + if (expectFile.existsSync()) {
|
| + expectFile.deleteSync();
|
| + }
|
| + expectFile.writeAsStringSync("//FAILED TO COMPILE");
|
| }
|
| - expectFile.writeAsStringSync("//FAILED TO COMPILE");
|
| }
|
| }
|
|
|
|
|