mirror of
https://github.com/dart-lang/sdk
synced 2024-10-03 08:59:24 +00:00
b101a7d002
Change-Id: Ib33169c3e0ffc870915c189404074a1dea472546 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196548 Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Leaf Petersen <leafp@google.com>
86 lines
2.6 KiB
Dart
86 lines
2.6 KiB
Dart
// Copyright (c) 2018, 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.
|
|
|
|
// @dart = 2.9
|
|
|
|
import 'dart:async';
|
|
import 'dart:mirrors';
|
|
|
|
import 'package:expect/expect.dart';
|
|
|
|
main() async {
|
|
IsolateMirror isolate = currentMirrorSystem().isolate;
|
|
print(isolate);
|
|
|
|
LibraryMirror success =
|
|
await isolate.loadUri(Uri.parse("dynamic_load_success.dart"));
|
|
print(success);
|
|
InstanceMirror result = success.invoke(#advanceCounter, []);
|
|
print(result);
|
|
Expect.equals(1, result.reflectee);
|
|
result = success.invoke(#advanceCounter, []);
|
|
print(result);
|
|
Expect.equals(2, result.reflectee);
|
|
|
|
LibraryMirror success2 =
|
|
await isolate.loadUri(Uri.parse("dynamic_load_success.dart"));
|
|
print(success2);
|
|
Expect.equals(success, success2);
|
|
result = success2.invoke(#advanceCounter, []);
|
|
print(result);
|
|
Expect.equals(3, result.reflectee); // Same library, same state.
|
|
|
|
LibraryMirror math = await isolate.loadUri(Uri.parse("dart:math"));
|
|
result = math.invoke(#max, [3, 4]);
|
|
print(result);
|
|
Expect.equals(4, result.reflectee);
|
|
|
|
Future<LibraryMirror> bad_load = isolate.loadUri(Uri.parse("DOES_NOT_EXIST"));
|
|
var error;
|
|
try {
|
|
await bad_load;
|
|
} catch (e) {
|
|
error = e;
|
|
}
|
|
print(error);
|
|
Expect.isTrue(error.toString().contains("Cannot open file") ||
|
|
error.toString().contains("file not found") ||
|
|
error.toString().contains("No such file or directory") ||
|
|
error.toString().contains("The system cannot find the file specified"));
|
|
Expect.isTrue(error.toString().contains("DOES_NOT_EXIST"));
|
|
|
|
Future<LibraryMirror> bad_load2 = isolate.loadUri(Uri.parse("dart:_builtin"));
|
|
var error2;
|
|
try {
|
|
await bad_load2;
|
|
} catch (e) {
|
|
error2 = e;
|
|
}
|
|
print(error2);
|
|
Expect.isTrue(error2.toString().contains("Cannot load"));
|
|
Expect.isTrue(error2.toString().contains("dart:_builtin"));
|
|
|
|
// Check error is not sticky.
|
|
LibraryMirror success3 =
|
|
await isolate.loadUri(Uri.parse("dynamic_load_success.dart"));
|
|
print(success3);
|
|
Expect.equals(success, success3);
|
|
result = success3.invoke(#advanceCounter, []);
|
|
print(result);
|
|
Expect.equals(4, result.reflectee); // Same library, same state.
|
|
|
|
Future<LibraryMirror> bad_load3 =
|
|
isolate.loadUri(Uri.parse("dynamic_load_error.dart"));
|
|
var error3;
|
|
try {
|
|
await bad_load3;
|
|
} catch (e) {
|
|
error3 = e;
|
|
}
|
|
print(error3);
|
|
Expect.isTrue(error3.toString().contains("library url expected") ||
|
|
error3.toString().contains("Error: Expected a String"));
|
|
Expect.isTrue(error3.toString().contains("dynamic_load_error.dart"));
|
|
}
|