Chromium Code Reviews| 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..39bff998d5ce38571039ff42db3ef507231ddcaf |
| --- /dev/null |
| +++ b/tests/compiler/dart2js/async_compiler_input_provider_test.dart |
| @@ -0,0 +1,60 @@ |
| +// 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 "../../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); |
| + // Do nothing. |
|
ahe
2013/09/02 15:24:41
Throw on non-verbose messages?
Johnni Winther
2013/09/03 07:51:39
Done.
|
| +} |