71 lines
2.1 KiB
Dart
71 lines
2.1 KiB
Dart
// Copyright 2017 Google Inc.
|
|
//
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file or at
|
|
// https://developers.google.com/open-source/licenses/bsd
|
|
|
|
import 'dart:convert';
|
|
|
|
import 'package:ngflutter/src/exceptions.dart';
|
|
import 'package:ngflutter/src/file_reader.dart';
|
|
import 'package:ngflutter/src/package_uri_resolver.dart';
|
|
import 'package:path/path.dart' as path;
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
group('PackageUriResolver', () {
|
|
FileReader.reader = new FileReaderMock();
|
|
|
|
PackageUriResolver resolver;
|
|
|
|
setUp(() {
|
|
resolver = new PackageUriResolver('.packages');
|
|
});
|
|
|
|
test('should parse dependent package URI', () {
|
|
var filePath = resolver.resolve('package:some_package/some_file.dart');
|
|
expect(
|
|
filePath,
|
|
equals(path.join(
|
|
path.separator,
|
|
path.join(
|
|
'home',
|
|
'someone',
|
|
'.pub-cache',
|
|
'hosted',
|
|
'pub.dartlang.org',
|
|
'some_package-1.0.0',
|
|
'lib',
|
|
'some_file.dart'))));
|
|
});
|
|
|
|
test('should parse current project URI', () {
|
|
var filePath = resolver.resolve('package:ngflutter/some_file.dart');
|
|
expect(filePath, equals(path.join('lib', 'some_file.dart')));
|
|
});
|
|
|
|
test('should throw for unknow package', () {
|
|
expect(() => resolver.resolve('package:unknown/some_file.dart'),
|
|
throwsA(const TypeMatcher<UsageException>()));
|
|
});
|
|
});
|
|
}
|
|
|
|
class FileReaderMock implements FileReader {
|
|
static const List<String> _dotPackages = const [
|
|
'# Generated by pub on 2017-05-01 00:00:00.00001.',
|
|
'some_package:file:///home/someone/.pub-cache/hosted/'
|
|
'pub.dartlang.org/some_package-1.0.0/lib/',
|
|
'ngflutter:lib/'
|
|
];
|
|
|
|
@override
|
|
List<String> readAsLines(Object uri, {Encoding encoding: utf8}) {
|
|
if (uri is String && uri == '.packages') return _dotPackages;
|
|
return null;
|
|
}
|
|
|
|
@override
|
|
String readAsString(Object uri, {Encoding encoding: utf8}) => null;
|
|
}
|