| // Copyright (c) 2017, 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.md file. |
| |
| library fasta.test.compile_platform_test; |
| |
| import 'dart:async'; |
| import 'dart:io'; |
| |
| import 'package:async_helper/async_helper.dart'; |
| |
| import 'package:expect/expect.dart'; |
| |
| import '../../tool/_fasta/compile_platform.dart' show compilePlatform; |
| |
| main(List<String> arguments) async { |
| await asyncTest(() async { |
| await withTemporaryDirectory("compile_platform_test_", (Uri tmp) async { |
| String patchedSdk = Uri.base |
| .resolveUri(new Uri.file(Platform.resolvedExecutable)) |
| .resolve("patched_sdk") |
| .toFilePath(); |
| // This first invocation should succeed. |
| await compilePlatform(<String>[ |
| "-v", |
| patchedSdk, |
| tmp.resolve("platform.dill").toFilePath(), |
| tmp.resolve("platform-outline.dill").toFilePath(), |
| ]); |
| print("Successfully compiled $patchedSdk.\n\n"); |
| |
| try { |
| // This invocation is expected to throw an exception for now. Patching |
| // isn't fully implemented yet. |
| // |
| // TODO(ahe): When this stops crashing, use Process to invoke the tool |
| // instead of importing its main entry point. |
| await compilePlatform(<String>[ |
| "-v", |
| "sdk/", |
| tmp.resolve("platform.dill").toFilePath(), |
| tmp.resolve("platform-outline.dill").toFilePath(), |
| ]); |
| } on String catch (e) { |
| Expect.isTrue( |
| e.startsWith("A member with disambiguated name '_withType' ")); |
| print("Failed as expected: $e"); |
| return; |
| } |
| Expect.fail("Test didn't throw expected exception."); |
| }); |
| }); |
| } |
| |
| withTemporaryDirectory(String prefix, Future f(Uri tmp)) async { |
| Directory tmp = await Directory.systemTemp.createTemp(prefix); |
| try { |
| await f(tmp.uri); |
| } finally { |
| await tmp.delete(recursive: true); |
| } |
| } |