Index: tests/compiler/dart2js/async_compiler_input_provider_test.dart |
diff --git a/tests/compiler/dart2js/async_compiler_input_provider_test.dart b/tests/compiler/dart2js/async_compiler_input_provider_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9b8a8264039f30e7b5e712c6bd04b5118e08129c |
--- /dev/null |
+++ b/tests/compiler/dart2js/async_compiler_input_provider_test.dart |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2012, 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. |
+ |
+import "dart:async"; |
+import "dart:io"; |
+ |
+import "package:expect/expect.dart"; |
+import "package:async_helper/async_helper.dart"; |
+ |
+import '../../../sdk/lib/_internal/compiler/compiler.dart' as compiler; |
+import '../../../sdk/lib/_internal/compiler/implementation/filenames.dart'; |
+ |
+const SOURCES = const { |
+ "/main.dart": """ |
+ import "foo.dart"; |
+ main() => foo(); |
+ """, |
+ "/foo.dart": """ |
+ library foo; |
+ import "bar.dart"; |
+ foo() => bar(); |
+ """, |
+ "/bar.dart": """ |
+ library bar; |
+ bar() => print("bar"); |
+ """ |
+}; |
+ |
+Future<String> provideInput(Uri uri) { |
+ var source = SOURCES[uri.path]; |
+ if (source == null) { |
+ // Not one of our source files, so assume it's a built-in. |
+ source = new File(uriPathToNative(uri.path)).readAsStringSync(); |
+ } |
+ |
+ // Deliver the input asynchronously. |
+ return new Future(() => source); |
+} |
+ |
+main() { |
+ var entrypoint = Uri.parse("file:///main.dart"); |
+ |
+ // Find the path to sdk/ in the repo relative to this script. |
+ Uri script = currentDirectory.resolve(nativeToUriPath(Platform.script)); |
+ Uri libraryRoot = script.resolve('../../../sdk/'); |
+ Uri packageRoot = script.resolve('./packages/'); |
+ |
+ asyncStart(); |
+ compiler.compile(entrypoint, libraryRoot, packageRoot, |
+ provideInput, handleDiagnostic, []).then((code) { |
+ Expect.isNotNull(code); |
+ }).whenComplete(() => asyncEnd()); |
+} |
+ |
+void handleDiagnostic(Uri uri, int begin, int end, String message, |
+ compiler.Diagnostic kind) { |
+ print(message); |
+ if (kind != compiler.Diagnostic.VERBOSE_INFO) { |
+ throw 'Unexpected diagnostic kind $kind'; |
+ } |
+} |