Skip to content

Commit

Permalink
correctly parse package_config files on windows with relative root URI (
Browse files Browse the repository at this point in the history
  • Loading branch information
jonahwilliams committed Mar 17, 2022
1 parent ba4e575 commit aab92ee
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
is collected.
* Add a `branchHits` field to `HitMap`.
* Add support for scraping the service URI from the new Dart VM service message.
* Correctly parse package_config files on Windows when the root URI is relative.

## 1.1.0 - 2022-1-18

Expand Down
3 changes: 2 additions & 1 deletion lib/src/resolver.dart
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,9 @@ class Resolver {
static Map<String, Uri> _parsePackages(String packagesPath) {
final content = File(packagesPath).readAsStringSync();
try {
final packagesUri = p.toUri(packagesPath);
final parsed =
PackageConfig.parseString(content, Uri.base.resolve(packagesPath));
PackageConfig.parseString(content, Uri.base.resolveUri(packagesUri));
return {
for (var package in parsed.packages)
package.name: package.packageUriRoot
Expand Down
22 changes: 18 additions & 4 deletions test/resolver_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,17 @@ import 'package:test_descriptor/test_descriptor.dart' as d;
void main() {
group('Default Resolver', () {
setUp(() async {
final String sandboxUriPath = p.toUri(d.sandbox).toString();
await d.dir('bar', [
d.dir('lib', [
d.file('bar.dart', 'final fizz = "bar";'),
])
]).create();

await d.dir('foo', [
d.file('.packages', '''
# Fake for testing!
foo:file:///${d.sandbox}/foo/lib
foo:$sandboxUriPath/foo/lib
'''),
d.file('.bad.packages', 'thisIsntAPackagesFile!'),
d.dir('.dart_tool', [
Expand All @@ -23,7 +30,12 @@ foo:file:///${d.sandbox}/foo/lib
"packages": [
{
"name": "foo",
"rootUri": "file:///${d.sandbox}/foo",
"rootUri": "../",
"packageUri": "lib/"
},
{
"name": "bar",
"rootUri": "$sandboxUriPath/bar",
"packageUri": "lib/"
}
]
Expand All @@ -41,14 +53,16 @@ foo:file:///${d.sandbox}/foo/lib
packagesPath:
p.join(d.sandbox, 'foo', '.dart_tool', 'package_config.json'));
expect(resolver.resolve('package:foo/foo.dart'),
'${d.sandbox}/foo/lib/foo.dart');
p.join(d.sandbox, 'foo', 'lib', 'foo.dart'));
expect(resolver.resolve('package:bar/bar.dart'),
p.join(d.sandbox, 'bar', 'lib', 'bar.dart'));
});

test('can be created from a .packages file', () async {
final resolver =
Resolver(packagesPath: p.join(d.sandbox, 'foo', '.packages'));
expect(resolver.resolve('package:foo/foo.dart'),
'${d.sandbox}/foo/lib/foo.dart');
p.join(d.sandbox, 'foo', 'lib', 'foo.dart'));
});

test('errors if the packagesFile is an unknown format', () async {
Expand Down

0 comments on commit aab92ee

Please sign in to comment.