| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:pub/src/lock_file.dart'; | 5 import 'package:pub/src/lock_file.dart'; |
| 6 import 'package:pub/src/package.dart'; | 6 import 'package:pub/src/package.dart'; |
| 7 import 'package:pub/src/source.dart'; | 7 import 'package:pub/src/source.dart'; |
| 8 import 'package:pub/src/source_registry.dart'; | 8 import 'package:pub/src/source_registry.dart'; |
| 9 import 'package:pub/src/system_cache.dart'; | 9 import 'package:pub/src/system_cache.dart'; |
| 10 import 'package:pub_semver/pub_semver.dart'; | 10 import 'package:pub_semver/pub_semver.dart'; |
| 11 import 'package:test/test.dart'; | 11 import 'package:test/test.dart'; |
| 12 import 'package:yaml/yaml.dart'; | 12 import 'package:yaml/yaml.dart'; |
| 13 | 13 |
| 14 class MockSource extends Source { | 14 class MockSource extends Source { |
| 15 final String name = 'mock'; | 15 final String name = 'mock'; |
| 16 | 16 |
| 17 BoundSource bind(SystemCache cache) => | 17 BoundSource bind(SystemCache cache) => |
| 18 throw new UnsupportedError("Cannot download mock packages."); | 18 throw new UnsupportedError("Cannot download mock packages."); |
| 19 | 19 |
| 20 PackageRef parseRef(String name, description, {String containingPath}) { | 20 PackageRef parseRef(String name, description, {String containingPath}) { |
| 21 if (!description.endsWith(' desc')) throw new FormatException('Bad'); | 21 if (!description.endsWith(' desc')) throw new FormatException('Bad'); |
| 22 return new PackageRef(name, this.name, description); | 22 return new PackageRef(name, this, description); |
| 23 } | 23 } |
| 24 | 24 |
| 25 PackageId parseId(String name, Version version, description) { | 25 PackageId parseId(String name, Version version, description) { |
| 26 if (!description.endsWith(' desc')) throw new FormatException('Bad'); | 26 if (!description.endsWith(' desc')) throw new FormatException('Bad'); |
| 27 return new PackageId(name, this.name, version, description); | 27 return new PackageId(name, this, version, description); |
| 28 } | 28 } |
| 29 | 29 |
| 30 bool descriptionsEqual(description1, description2) => | 30 bool descriptionsEqual(description1, description2) => |
| 31 description1 == description2; | 31 description1 == description2; |
| 32 | 32 |
| 33 int hashDescription(description) => description.hashCode; |
| 34 |
| 33 String packageName(String description) { | 35 String packageName(String description) { |
| 34 // Strip off ' desc'. | 36 // Strip off ' desc'. |
| 35 return description.substring(0, description.length - 5); | 37 return description.substring(0, description.length - 5); |
| 36 } | 38 } |
| 37 } | 39 } |
| 38 | 40 |
| 39 main() { | 41 main() { |
| 40 var sources = new SourceRegistry(); | 42 var sources = new SourceRegistry(); |
| 41 var mockSource = new MockSource(); | 43 var mockSource = new MockSource(); |
| 42 sources.register(mockSource); | 44 sources.register(mockSource); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 64 version: 2.3.4 | 66 version: 2.3.4 |
| 65 source: mock | 67 source: mock |
| 66 description: foo desc | 68 description: foo desc |
| 67 ''', sources); | 69 ''', sources); |
| 68 | 70 |
| 69 expect(lockFile.packages.length, equals(2)); | 71 expect(lockFile.packages.length, equals(2)); |
| 70 | 72 |
| 71 var bar = lockFile.packages['bar']; | 73 var bar = lockFile.packages['bar']; |
| 72 expect(bar.name, equals('bar')); | 74 expect(bar.name, equals('bar')); |
| 73 expect(bar.version, equals(new Version(1, 2, 3))); | 75 expect(bar.version, equals(new Version(1, 2, 3))); |
| 74 expect(bar.source, equals(mockSource.name)); | 76 expect(bar.source, equals(mockSource)); |
| 75 expect(bar.description, equals('bar desc')); | 77 expect(bar.description, equals('bar desc')); |
| 76 | 78 |
| 77 var foo = lockFile.packages['foo']; | 79 var foo = lockFile.packages['foo']; |
| 78 expect(foo.name, equals('foo')); | 80 expect(foo.name, equals('foo')); |
| 79 expect(foo.version, equals(new Version(2, 3, 4))); | 81 expect(foo.version, equals(new Version(2, 3, 4))); |
| 80 expect(foo.source, equals(mockSource.name)); | 82 expect(foo.source, equals(mockSource)); |
| 81 expect(foo.description, equals('foo desc')); | 83 expect(foo.description, equals('foo desc')); |
| 82 }); | 84 }); |
| 83 | 85 |
| 84 test("allows an unknown source", () { | 86 test("allows an unknown source", () { |
| 85 var lockFile = new LockFile.parse(''' | 87 var lockFile = new LockFile.parse(''' |
| 86 packages: | 88 packages: |
| 87 foo: | 89 foo: |
| 88 source: bad | 90 source: bad |
| 89 version: 1.2.3 | 91 version: 1.2.3 |
| 90 description: foo desc | 92 description: foo desc |
| 91 ''', sources); | 93 ''', sources); |
| 92 var foo = lockFile.packages['foo']; | 94 var foo = lockFile.packages['foo']; |
| 93 expect(foo.source, equals('bad')); | 95 expect(foo.source, equals(sources['bad'])); |
| 94 }); | 96 }); |
| 95 | 97 |
| 96 test("allows an empty dependency map", () { | 98 test("allows an empty dependency map", () { |
| 97 var lockFile = new LockFile.parse(''' | 99 var lockFile = new LockFile.parse(''' |
| 98 packages: | 100 packages: |
| 99 ''', sources); | 101 ''', sources); |
| 100 expect(lockFile.packages, isEmpty); | 102 expect(lockFile.packages, isEmpty); |
| 101 }); | 103 }); |
| 102 | 104 |
| 103 test("throws if the top level is not a map", () { | 105 test("throws if the top level is not a map", () { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 version: 1.2.3 | 185 version: 1.2.3 |
| 184 source: mock | 186 source: mock |
| 185 description: foo desc | 187 description: foo desc |
| 186 ''', sources); | 188 ''', sources); |
| 187 }); | 189 }); |
| 188 }); | 190 }); |
| 189 | 191 |
| 190 test('serialize() dumps the lockfile to YAML', () { | 192 test('serialize() dumps the lockfile to YAML', () { |
| 191 var lockfile = new LockFile([ | 193 var lockfile = new LockFile([ |
| 192 new PackageId( | 194 new PackageId( |
| 193 'foo', mockSource.name, new Version.parse('1.2.3'), 'foo desc'), | 195 'foo', mockSource, new Version.parse('1.2.3'), 'foo desc'), |
| 194 new PackageId( | 196 new PackageId('bar', mockSource, new Version.parse('3.2.1'), 'bar desc') |
| 195 'bar', mockSource.name, new Version.parse('3.2.1'), 'bar desc') | 197 ]); |
| 196 ], sources); | |
| 197 | 198 |
| 198 expect(loadYaml(lockfile.serialize(null)), equals({ | 199 expect(loadYaml(lockfile.serialize(null)), equals({ |
| 199 'sdk': 'any', | 200 'sdk': 'any', |
| 200 'packages': { | 201 'packages': { |
| 201 'foo': { | 202 'foo': { |
| 202 'version': '1.2.3', | 203 'version': '1.2.3', |
| 203 'source': 'mock', | 204 'source': 'mock', |
| 204 'description': 'foo desc' | 205 'description': 'foo desc' |
| 205 }, | 206 }, |
| 206 'bar': { | 207 'bar': { |
| 207 'version': '3.2.1', | 208 'version': '3.2.1', |
| 208 'source': 'mock', | 209 'source': 'mock', |
| 209 'description': 'bar desc' | 210 'description': 'bar desc' |
| 210 } | 211 } |
| 211 } | 212 } |
| 212 })); | 213 })); |
| 213 }); | 214 }); |
| 214 }); | 215 }); |
| 215 } | 216 } |
| OLD | NEW |