Index: tests/compiler/dart2js/kernel/visitor_test.dart |
diff --git a/tests/compiler/dart2js/kernel/visitor_test.dart b/tests/compiler/dart2js/kernel/visitor_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2b85948fe0495ca352bd5eaed858e5f38359e89b |
--- /dev/null |
+++ b/tests/compiler/dart2js/kernel/visitor_test.dart |
@@ -0,0 +1,65 @@ |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+/// Test that the dart2js copy of [KernelVisitor] generates the expected IR as |
+/// defined by kernel spec-mode test files. |
+ |
+import 'dart:io'; |
+import 'package:compiler/src/compiler.dart' show Compiler; |
+import 'package:compiler/src/js_backend/backend.dart' show JavaScriptBackend; |
+import 'package:compiler/src/commandline_options.dart' show Flags; |
+import 'package:kernel/text/ast_to_text.dart'; |
+import 'package:path/path.dart' as pathlib; |
+import 'package:test/test.dart'; |
+ |
+import '../memory_compiler.dart'; |
+ |
+const String TESTCASE_DIR = 'third_party/pkg/kernel/testcases/'; |
+ |
+const List<String> SKIP_TESTS = const <String>[ |
+ 'DeltaBlue', // Super calls encoded as `super.{...` and not `this.{...`. |
+ 'external', // 'dart:_isolate_helper' is imported instead of 'dart:isolate'. |
+]; |
+ |
+main(List<String> arguments) { |
+ Directory directory = new Directory('${TESTCASE_DIR}/input'); |
+ for (FileSystemEntity file in directory.listSync()) { |
+ if (file is File && file.path.endsWith('.dart')) { |
+ String name = pathlib.basenameWithoutExtension(file.path); |
+ bool selected = arguments.contains(name); |
+ if (!selected) { |
+ if (arguments.isNotEmpty) continue; |
+ if (SKIP_TESTS.contains(name)) continue; |
+ } |
+ |
+ test(name, () async { |
+ var result = await runCompiler( |
+ entryPoint: file.absolute.uri, |
+ options: [Flags.analyzeOnly, Flags.useKernel]); |
+ Compiler compiler = result.compiler; |
+ JavaScriptBackend backend = compiler.backend; |
+ StringBuffer buffer = new StringBuffer(); |
+ new Printer(buffer).writeLibraryFile( |
+ backend.kernelTask.kernel.libraryToIr(compiler.mainApp)); |
+ String actual = buffer.toString(); |
+ String expected = |
+ new File('${TESTCASE_DIR}/spec-mode/$name.baseline.txt') |
+ .readAsStringSync(); |
+ if (selected) { |
+ String input = |
+ new File('${TESTCASE_DIR}/input/$name.dart').readAsStringSync(); |
+ print('============================================================'); |
+ print(name); |
+ print('--input-----------------------------------------------------'); |
+ print(input); |
+ print('--expected--------------------------------------------------'); |
+ print(expected); |
+ print('--actual----------------------------------------------------'); |
+ print(actual); |
+ } |
+ expect(actual, equals(expected)); |
+ }); |
+ } |
+ } |
+} |