blob: 5b7d9f020516177cf7b87175ee41b85d22cc312f [file] [log] [blame]
// 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"));
}