From 57bd5638529baddd7d136a61bc87a56b007ff81c Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Thu, 21 Jan 2021 05:04:33 +0000 Subject: [PATCH] Prepare for switching to null safe package_config The CL that does the switch is green, but I guess we might want to separate the switch from preparatory changes, if this is possible. https://dart-review.googlesource.com/c/sdk/+/180242 Change-Id: I1a553fa15120dbc55ff879ab56180423ff564d9b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180282 Commit-Queue: Konstantin Shcheglov Reviewed-by: Jake Macdonald --- pkg/modular_test/lib/src/loader.dart | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pkg/modular_test/lib/src/loader.dart b/pkg/modular_test/lib/src/loader.dart index 65d5558084c..90500179255 100644 --- a/pkg/modular_test/lib/src/loader.dart +++ b/pkg/modular_test/lib/src/loader.dart @@ -20,11 +20,12 @@ /// The format is described in `test_specification_parser.dart`. import 'dart:io'; import 'dart:convert'; +import 'dart:typed_data'; import 'suite.dart'; import 'test_specification_parser.dart'; import 'find_sdk_root.dart'; -import 'package:package_config/packages_file.dart' as package_config; +import 'package:package_config/src/packages_file.dart' as packages_file; /// Returns the [ModularTest] associated with a folder under [uri]. /// @@ -38,7 +39,7 @@ Future loadTest(Uri uri) async { var testUri = folder.uri; // normalized in case the trailing '/' was missing. Uri root = await findRoot(); Map defaultPackages = - package_config.parse(_defaultPackagesInput, root); + _parseDotPackagesBytesToLibMap(_defaultPackagesInput, root); Module sdkModule = await _createSdkModule(root); Map modules = {'sdk': sdkModule}; String specString; @@ -76,7 +77,7 @@ Future loadTest(Uri uri) async { modules[moduleName] = module; } else if (fileName == '.packages') { List packagesBytes = await entry.readAsBytes(); - packages = package_config.parse(packagesBytes, entryUri); + packages = _parseDotPackagesBytesToLibMap(packagesBytes, entryUri); } else if (fileName == 'modules.yaml') { specString = await entry.readAsString(); } @@ -313,3 +314,15 @@ int _compareFileSystemEntity(FileSystemEntity a, FileSystemEntity b) { } } } + +/// Parse [bytes] representing a `.packages` file into the map of package names +/// to URIs of their `lib` locations. +Map _parseDotPackagesBytesToLibMap(Uint8List bytes, Uri baseUri) { + var map = {}; + var packageConfig = + packages_file.parse(bytes, baseUri, (error) => throw error); + for (var package in packageConfig.packages) { + map[package.name] = package.packageUriRoot; + } + return map; +}