| Index: utils/tests/pub/lock_file_test.dart
|
| diff --git a/utils/tests/pub/lock_file_test.dart b/utils/tests/pub/lock_file_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5cb978573e86b798b2295ea2ced7a7af77d208aa
|
| --- /dev/null
|
| +++ b/utils/tests/pub/lock_file_test.dart
|
| @@ -0,0 +1,171 @@
|
| +// Copyright (c) 2012, 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.
|
| +
|
| +#library('lock_file_test');
|
| +
|
| +#import('../../../lib/unittest/unittest.dart');
|
| +#import('../../pub/lock_file.dart');
|
| +#import('../../pub/package.dart');
|
| +#import('../../pub/source.dart');
|
| +#import('../../pub/source_registry.dart');
|
| +#import('../../pub/utils.dart');
|
| +#import('../../pub/version.dart');
|
| +
|
| +class MockSource extends Source {
|
| + final String name = 'mock';
|
| + final bool shouldCache = false;
|
| +
|
| + void validateDescription(String description) => description.endsWith(' desc');
|
| +
|
| + String packageName(PackageId id) {
|
| + // Strip off ' desc'.
|
| + return id.description.substring(0, id.description.length - 5);
|
| + }
|
| +}
|
| +
|
| +main() {
|
| + var sources = new SourceRegistry();
|
| + var mockSource = new MockSource();
|
| + sources.register(mockSource);
|
| +
|
| + group('LockFile', () {
|
| + group('parse()', () {
|
| + test('returns an empty lockfile if the contents are empty', () {
|
| + var lockFile = new LockFile.parse('', sources);
|
| + expect(lockFile.packages.length).equals(0);
|
| + });
|
| +
|
| + test('returns an empty lockfile if the contents are whitespace', () {
|
| + var lockFile = new LockFile.parse(' \t\n ', sources);
|
| + expect(lockFile.packages.length).equals(0);
|
| + });
|
| +
|
| + test('parses a series of package descriptions', () {
|
| + var lockFile = new LockFile.parse('''
|
| +packages:
|
| + bar:
|
| + version: 1.2.3
|
| + source: mock
|
| + description: bar desc
|
| + foo:
|
| + version: 2.3.4
|
| + source: mock
|
| + description: foo desc
|
| +''', sources);
|
| +
|
| + expect(lockFile.packages.length).equals(2);
|
| +
|
| + var bar = lockFile.packages['bar'];
|
| + expect(bar.name).equals('bar');
|
| + expect(bar.version).equals(new Version(1, 2, 3));
|
| + expect(bar.source).equals(mockSource);
|
| + expect(bar.description).equals('bar desc');
|
| +
|
| + var foo = lockFile.packages['foo'];
|
| + expect(foo.name).equals('foo');
|
| + expect(foo.version).equals(new Version(2, 3, 4));
|
| + expect(foo.source).equals(mockSource);
|
| + expect(foo.description).equals('foo desc');
|
| + });
|
| +
|
| + test("throws if the version is missing", () {
|
| + throwsBadFormat(() {
|
| + new LockFile.parse('''
|
| +packages:
|
| + foo:
|
| + source: mock
|
| + description: foo desc
|
| +''', sources);
|
| + });
|
| + });
|
| +
|
| + test("throws if the version is invalid", () {
|
| + throwsBadFormat(() {
|
| + new LockFile.parse('''
|
| +packages:
|
| + foo:
|
| + version: vorpal
|
| + source: mock
|
| + description: foo desc
|
| +''', sources);
|
| + });
|
| + });
|
| +
|
| + test("throws if the source is missing", () {
|
| + throwsBadFormat(() {
|
| + new LockFile.parse('''
|
| +packages:
|
| + foo:
|
| + version: 1.2.3
|
| + description: foo desc
|
| +''', sources);
|
| + });
|
| + });
|
| +
|
| + test("throws if the source is unknown", () {
|
| + throwsBadFormat(() {
|
| + new LockFile.parse('''
|
| +packages:
|
| + foo:
|
| + version: 1.2.3
|
| + source: notreal
|
| + description: foo desc
|
| +''', sources);
|
| + });
|
| + });
|
| +
|
| + test("throws if the description is missing", () {
|
| + throwsBadFormat(() {
|
| + new LockFile.parse('''
|
| +packages:
|
| + foo:
|
| + version: 1.2.3
|
| + source: mock
|
| +''', sources);
|
| + });
|
| + });
|
| +
|
| + test("throws if the description is invalid", () {
|
| + throwsBadFormat(() {
|
| + new LockFile.parse('''
|
| +packages:
|
| + foo:
|
| + version: 1.2.3
|
| + source: mock
|
| + description: foo desc is bad
|
| +''', sources);
|
| + });
|
| + });
|
| +
|
| + test("throws if the source name doesn't match the given name", () {
|
| + throwsBadFormat(() {
|
| + new LockFile.parse('''
|
| +packages:
|
| + foo:
|
| + version: 1.2.3
|
| + source: mock
|
| + description: notfoo desc
|
| +''', sources);
|
| + });
|
| + });
|
| +
|
| + test("ignores extra stuff in file", () {
|
| + var lockFile = new LockFile.parse('''
|
| +extra:
|
| + some: stuff
|
| +packages:
|
| + foo:
|
| + bonus: not used
|
| + version: 1.2.3
|
| + source: mock
|
| + description: foo desc
|
| +''', sources);
|
| + });
|
| + });
|
| + });
|
| +}
|
| +
|
| +throwsBadFormat(function) {
|
| + expectThrow(function, (e) => e is FormatException);
|
| +}
|
|
|