| 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 library lock_file_test; | 5 library lock_file_test; |
| 6 | 6 |
| 7 import '../../../pkg/unittest/lib/unittest.dart'; | 7 import '../../../pkg/unittest/lib/unittest.dart'; |
| 8 import '../../../pkg/yaml/lib/yaml.dart'; | 8 import '../../../pkg/yaml/lib/yaml.dart'; |
| 9 import '../../pub/lock_file.dart'; | 9 import '../../pub/lock_file.dart'; |
| 10 import '../../pub/package.dart'; | 10 import '../../pub/package.dart'; |
| 11 import '../../pub/source.dart'; | 11 import '../../pub/source.dart'; |
| 12 import '../../pub/source_registry.dart'; | 12 import '../../pub/source_registry.dart'; |
| 13 import '../../pub/utils.dart'; | 13 import '../../pub/utils.dart'; |
| 14 import '../../pub/version.dart'; | 14 import '../../pub/version.dart'; |
| 15 | 15 |
| 16 class MockSource extends Source { | 16 class MockSource extends Source { |
| 17 final String name = 'mock'; | 17 final String name = 'mock'; |
| 18 final bool shouldCache = false; | 18 final bool shouldCache = false; |
| 19 | 19 |
| 20 void validateDescription(String description, {bool fromLockFile: false}) { | 20 dynamic parseDescription(String filePath, String description, |
| 21 {bool fromLockFile: false}) { |
| 21 if (!description.endsWith(' desc')) throw new FormatException(); | 22 if (!description.endsWith(' desc')) throw new FormatException(); |
| 23 return description; |
| 22 } | 24 } |
| 23 | 25 |
| 24 String packageName(String description) { | 26 String packageName(String description) { |
| 25 // Strip off ' desc'. | 27 // Strip off ' desc'. |
| 26 return description.substring(0, description.length - 5); | 28 return description.substring(0, description.length - 5); |
| 27 } | 29 } |
| 28 } | 30 } |
| 29 | 31 |
| 30 main() { | 32 main() { |
| 31 var sources = new SourceRegistry(); | 33 var sources = new SourceRegistry(); |
| 32 var mockSource = new MockSource(); | 34 var mockSource = new MockSource(); |
| 33 sources.register(mockSource); | 35 sources.register(mockSource); |
| 34 | 36 |
| 35 group('LockFile', () { | 37 group('LockFile', () { |
| 36 group('parse()', () { | 38 group('parse()', () { |
| 37 test('returns an empty lockfile if the contents are empty', () { | 39 test('returns an empty lockfile if the contents are empty', () { |
| 38 var lockFile = new LockFile.parse('', sources); | 40 var lockFile = new LockFile.parse(null, '', sources); |
| 39 expect(lockFile.packages.length, equals(0)); | 41 expect(lockFile.packages.length, equals(0)); |
| 40 }); | 42 }); |
| 41 | 43 |
| 42 test('returns an empty lockfile if the contents are whitespace', () { | 44 test('returns an empty lockfile if the contents are whitespace', () { |
| 43 var lockFile = new LockFile.parse(' \t\n ', sources); | 45 var lockFile = new LockFile.parse(null, ' \t\n ', sources); |
| 44 expect(lockFile.packages.length, equals(0)); | 46 expect(lockFile.packages.length, equals(0)); |
| 45 }); | 47 }); |
| 46 | 48 |
| 47 test('parses a series of package descriptions', () { | 49 test('parses a series of package descriptions', () { |
| 48 var lockFile = new LockFile.parse(''' | 50 var lockFile = new LockFile.parse(null, ''' |
| 49 packages: | 51 packages: |
| 50 bar: | 52 bar: |
| 51 version: 1.2.3 | 53 version: 1.2.3 |
| 52 source: mock | 54 source: mock |
| 53 description: bar desc | 55 description: bar desc |
| 54 foo: | 56 foo: |
| 55 version: 2.3.4 | 57 version: 2.3.4 |
| 56 source: mock | 58 source: mock |
| 57 description: foo desc | 59 description: foo desc |
| 58 ''', sources); | 60 ''', sources); |
| 59 | 61 |
| 60 expect(lockFile.packages.length, equals(2)); | 62 expect(lockFile.packages.length, equals(2)); |
| 61 | 63 |
| 62 var bar = lockFile.packages['bar']; | 64 var bar = lockFile.packages['bar']; |
| 63 expect(bar.name, equals('bar')); | 65 expect(bar.name, equals('bar')); |
| 64 expect(bar.version, equals(new Version(1, 2, 3))); | 66 expect(bar.version, equals(new Version(1, 2, 3))); |
| 65 expect(bar.source, equals(mockSource)); | 67 expect(bar.source, equals(mockSource)); |
| 66 expect(bar.description, equals('bar desc')); | 68 expect(bar.description, equals('bar desc')); |
| 67 | 69 |
| 68 var foo = lockFile.packages['foo']; | 70 var foo = lockFile.packages['foo']; |
| 69 expect(foo.name, equals('foo')); | 71 expect(foo.name, equals('foo')); |
| 70 expect(foo.version, equals(new Version(2, 3, 4))); | 72 expect(foo.version, equals(new Version(2, 3, 4))); |
| 71 expect(foo.source, equals(mockSource)); | 73 expect(foo.source, equals(mockSource)); |
| 72 expect(foo.description, equals('foo desc')); | 74 expect(foo.description, equals('foo desc')); |
| 73 }); | 75 }); |
| 74 | 76 |
| 75 test("throws if the version is missing", () { | 77 test("throws if the version is missing", () { |
| 76 expect(() { | 78 expect(() { |
| 77 new LockFile.parse(''' | 79 new LockFile.parse(null, ''' |
| 78 packages: | 80 packages: |
| 79 foo: | 81 foo: |
| 80 source: mock | 82 source: mock |
| 81 description: foo desc | 83 description: foo desc |
| 82 ''', sources); | 84 ''', sources); |
| 83 }, throwsFormatException); | 85 }, throwsFormatException); |
| 84 }); | 86 }); |
| 85 | 87 |
| 86 test("throws if the version is invalid", () { | 88 test("throws if the version is invalid", () { |
| 87 expect(() { | 89 expect(() { |
| 88 new LockFile.parse(''' | 90 new LockFile.parse(null, ''' |
| 89 packages: | 91 packages: |
| 90 foo: | 92 foo: |
| 91 version: vorpal | 93 version: vorpal |
| 92 source: mock | 94 source: mock |
| 93 description: foo desc | 95 description: foo desc |
| 94 ''', sources); | 96 ''', sources); |
| 95 }, throwsFormatException); | 97 }, throwsFormatException); |
| 96 }); | 98 }); |
| 97 | 99 |
| 98 test("throws if the source is missing", () { | 100 test("throws if the source is missing", () { |
| 99 expect(() { | 101 expect(() { |
| 100 new LockFile.parse(''' | 102 new LockFile.parse(null, ''' |
| 101 packages: | 103 packages: |
| 102 foo: | 104 foo: |
| 103 version: 1.2.3 | 105 version: 1.2.3 |
| 104 description: foo desc | 106 description: foo desc |
| 105 ''', sources); | 107 ''', sources); |
| 106 }, throwsFormatException); | 108 }, throwsFormatException); |
| 107 }); | 109 }); |
| 108 | 110 |
| 109 test("throws if the source is unknown", () { | 111 test("throws if the source is unknown", () { |
| 110 expect(() { | 112 expect(() { |
| 111 new LockFile.parse(''' | 113 new LockFile.parse(null, ''' |
| 112 packages: | 114 packages: |
| 113 foo: | 115 foo: |
| 114 version: 1.2.3 | 116 version: 1.2.3 |
| 115 source: notreal | 117 source: notreal |
| 116 description: foo desc | 118 description: foo desc |
| 117 ''', sources); | 119 ''', sources); |
| 118 }, throwsFormatException); | 120 }, throwsFormatException); |
| 119 }); | 121 }); |
| 120 | 122 |
| 121 test("throws if the description is missing", () { | 123 test("throws if the description is missing", () { |
| 122 expect(() { | 124 expect(() { |
| 123 new LockFile.parse(''' | 125 new LockFile.parse(null, ''' |
| 124 packages: | 126 packages: |
| 125 foo: | 127 foo: |
| 126 version: 1.2.3 | 128 version: 1.2.3 |
| 127 source: mock | 129 source: mock |
| 128 ''', sources); | 130 ''', sources); |
| 129 }, throwsFormatException); | 131 }, throwsFormatException); |
| 130 }); | 132 }); |
| 131 | 133 |
| 132 test("throws if the description is invalid", () { | 134 test("throws if the description is invalid", () { |
| 133 expect(() { | 135 expect(() { |
| 134 new LockFile.parse(''' | 136 new LockFile.parse(null, ''' |
| 135 packages: | 137 packages: |
| 136 foo: | 138 foo: |
| 137 version: 1.2.3 | 139 version: 1.2.3 |
| 138 source: mock | 140 source: mock |
| 139 description: foo desc is bad | 141 description: foo desc is bad |
| 140 ''', sources); | 142 ''', sources); |
| 141 }, throwsFormatException); | 143 }, throwsFormatException); |
| 142 }); | 144 }); |
| 143 | 145 |
| 144 test("ignores extra stuff in file", () { | 146 test("ignores extra stuff in file", () { |
| 145 var lockFile = new LockFile.parse(''' | 147 var lockFile = new LockFile.parse(null, ''' |
| 146 extra: | 148 extra: |
| 147 some: stuff | 149 some: stuff |
| 148 packages: | 150 packages: |
| 149 foo: | 151 foo: |
| 150 bonus: not used | 152 bonus: not used |
| 151 version: 1.2.3 | 153 version: 1.2.3 |
| 152 source: mock | 154 source: mock |
| 153 description: foo desc | 155 description: foo desc |
| 154 ''', sources); | 156 ''', sources); |
| 155 }); | 157 }); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 174 'version': '3.2.1', | 176 'version': '3.2.1', |
| 175 'source': 'mock', | 177 'source': 'mock', |
| 176 'description': 'bar desc' | 178 'description': 'bar desc' |
| 177 } | 179 } |
| 178 } | 180 } |
| 179 })); | 181 })); |
| 180 }); | 182 }); |
| 181 }); | 183 }); |
| 182 }); | 184 }); |
| 183 } | 185 } |
| OLD | NEW |