blob: 43e279ab732812ff10a0e3f3f8b8c0d5e3a8b5d1 [file] [log] [blame]
// Copyright (c) 2020, 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:io';
import 'package:path/path.dart' as path;
import 'spawn_uri__package_uri__test.dart';
final executable = Platform.executable;
main() async {
// Make a folder structure that has both ".dart_tool/package_config.json" and
// ".packages" and ensure VM prefers to use ".packages".
await withTempDir((String tempDir) async {
// Setup bogus ".packages" with "foo -> ..." with invalid mapping.
final dotPackagesPath = path.join(tempDir, '.packages');
final dotPackagesFile = File(dotPackagesPath);
await dotPackagesFile.writeAsString(buildDotPackages('invalid'));
// Setup ".dart_tool/package_config.json".
final dotDartToolDir = path.join(tempDir, '.dart_tool');
await Directory(dotDartToolDir).create();
final packageConfigJsonPath =
path.join(dotDartToolDir, 'package_config.json');
final packageConfigJsonFile = File(packageConfigJsonPath);
await packageConfigJsonFile.writeAsString(buildPackageConfig('foo', true));
final mainFile = path.join(tempDir, 'main.dart');
await File(mainFile).writeAsString('''
import 'dart:io' as io;
import 'dart:isolate';
main() async {
final uri = await Isolate.packageConfig;
final expectedUri = Uri.parse('${packageConfigJsonFile.uri}');
if (uri != expectedUri) {
throw 'VM should use .packages file (but used \$uri).';
}
}
''');
await run(executable, [mainFile]);
});
}