| Index: test/codegen_test.dart
|
| diff --git a/test/codegen_test.dart b/test/codegen_test.dart
|
| index 90b1e70765b0b91ef976af9e7f473a2240c2a413..e2678645bcbce0365710c92114b6b26ff7a71e0c 100644
|
| --- a/test/codegen_test.dart
|
| +++ b/test/codegen_test.dart
|
| @@ -40,6 +40,9 @@ final ArgParser argParser = new ArgParser()
|
| /// The `test/codegen` directory.
|
| final codegenDir = path.join(testDirectory, 'codegen');
|
|
|
| +/// The `test/codegen/expect` directory.
|
| +final codegenExpectDir = path.join(codegenDir, 'expect');
|
| +
|
| /// The generated directory where tests, expanded multitests, and other test
|
| /// support libraries are copied to.
|
| ///
|
| @@ -105,8 +108,9 @@ main(List<String> arguments) {
|
|
|
| var name = path.withoutExtension(relativePath);
|
| test('dartdevc $name', () {
|
| - var outDir = path.join(codegenOutputDir, path.dirname(relativePath));
|
| - _ensureDirectory(outDir);
|
| + 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();
|
| @@ -129,7 +133,9 @@ main(List<String> arguments) {
|
| files.toList(), _moduleForLibrary);
|
| var module = compiler.compile(unit, options);
|
| _writeModule(
|
| - path.join(outDir, path.basenameWithoutExtension(testFile)), module);
|
| + path.join(outDir, path.basenameWithoutExtension(testFile)),
|
| + path.join(expectDir, path.basenameWithoutExtension(testFile)),
|
| + module);
|
| });
|
| }
|
|
|
| @@ -140,14 +146,16 @@ main(List<String> arguments) {
|
| }
|
| }
|
|
|
| -void _writeModule(String outPath, JSModuleFile result) {
|
| +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';
|
| new File(outPath + '.txt').writeAsStringSync(errors);
|
|
|
| var jsFile = new File(outPath + '.js');
|
| + var expectFile = new File(expectPath + '.js');
|
| var errorFile = new File(outPath + '.err');
|
|
|
| if (result.isValid) {
|
| @@ -158,6 +166,8 @@ void _writeModule(String outPath, 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();
|
| @@ -186,24 +196,30 @@ 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();
|
| + }
|
| + expectFile.writeAsStringSync("//FAILED TO COMPILE");
|
| }
|
| }
|
|
|
| void _buildAllPackages(ModuleCompiler compiler) {
|
| group('dartdevc package', () {
|
| - _buildPackages(compiler, codegenOutputDir);
|
| + _buildPackages(compiler, codegenOutputDir, codegenExpectDir);
|
|
|
| var packages = ['matcher', 'path', 'stack_trace'];
|
| for (var package in packages) {
|
| test(package, () {
|
| - _buildPackage(compiler, codegenOutputDir, package);
|
| + _buildPackage(compiler, codegenOutputDir, codegenExpectDir, package);
|
| });
|
| }
|
|
|
| test('unittest', () {
|
| // Only build files applicable to the web - html_*.dart and its
|
| // internal dependences.
|
| - _buildPackage(compiler, codegenOutputDir, "unittest", packageFiles: [
|
| + _buildPackage(compiler, codegenOutputDir, codegenExpectDir, "unittest", packageFiles: [
|
| 'unittest.dart',
|
| 'html_config.dart',
|
| 'html_individual_config.dart',
|
| @@ -213,11 +229,11 @@ void _buildAllPackages(ModuleCompiler compiler) {
|
| });
|
|
|
| test('dartdevc sunflower', () {
|
| - _buildSunflower(compiler, codegenOutputDir);
|
| + _buildSunflower(compiler, codegenOutputDir, codegenExpectDir);
|
| });
|
| }
|
|
|
| -void _buildSunflower(ModuleCompiler compiler, String outputDir) {
|
| +void _buildSunflower(ModuleCompiler compiler, String outputDir, String expectDir) {
|
| var baseDir = path.join(codegenDir, 'sunflower');
|
| var files = ['sunflower', 'circle', 'painter']
|
| .map((f) => path.join(baseDir, '$f.dart'))
|
| @@ -226,10 +242,11 @@ void _buildSunflower(ModuleCompiler compiler, String outputDir) {
|
| var options = new CompilerOptions(summarizeApi: false);
|
|
|
| var built = compiler.compile(input, options);
|
| - _writeModule(path.join(outputDir, 'sunflower', 'sunflower'), built);
|
| + _writeModule(path.join(outputDir, 'sunflower', 'sunflower'),
|
| + path.join(expectDir, 'sunflower', 'sunflower'), built);
|
| }
|
|
|
| -void _buildPackages(ModuleCompiler compiler, String outputDir) {
|
| +void _buildPackages(ModuleCompiler compiler, String outputDir, String expectDir) {
|
| // Note: we don't summarize these, as we're going to rely on our in-memory
|
| // shared analysis context for caching, and `_moduleForLibrary` below
|
| // understands these are from other modules.
|
| @@ -244,12 +261,13 @@ void _buildPackages(ModuleCompiler compiler, String outputDir) {
|
| var built = compiler.compile(input, options);
|
|
|
| var outPath = path.join(outputDir, path.withoutExtension(uriPath));
|
| - _writeModule(outPath, built);
|
| + var expectPath = path.join(expectDir, path.withoutExtension(uriPath));
|
| + _writeModule(outPath, expectPath, built);
|
| });
|
| }
|
| }
|
|
|
| -void _buildPackage(ModuleCompiler compiler, String outputDir, packageName,
|
| +void _buildPackage(ModuleCompiler compiler, String outputDir, String expectDir, packageName,
|
| {List<String> packageFiles}) {
|
| var options = new CompilerOptions(sourceMap: false, summarizeApi: false);
|
|
|
| @@ -279,7 +297,8 @@ void _buildPackage(ModuleCompiler compiler, String outputDir, packageName,
|
| var module = compiler.compile(unit, options);
|
|
|
| var outPath = path.join(outputDir, packageName, packageName);
|
| - _writeModule(outPath, module);
|
| + var expectPath = path.join(expectDir, packageName, packageName);
|
| + _writeModule(outPath, expectPath, module);
|
| }
|
|
|
| String _moduleForLibrary(Source source) {
|
|
|