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 pub_upgrade_test; | 5 library pub_upgrade_test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:unittest/unittest.dart'; | 9 import 'package:unittest/unittest.dart'; |
10 | 10 |
11 import '../lib/src/lock_file.dart'; | 11 import '../lib/src/lock_file.dart'; |
12 import '../lib/src/log.dart' as log; | 12 import '../lib/src/log.dart' as log; |
13 import '../lib/src/package.dart'; | 13 import '../lib/src/package.dart'; |
14 import '../lib/src/pubspec.dart'; | 14 import '../lib/src/pubspec.dart'; |
15 import '../lib/src/sdk.dart' as sdk; | 15 import '../lib/src/sdk.dart' as sdk; |
16 import '../lib/src/source.dart'; | 16 import '../lib/src/source/cached.dart'; |
17 import '../lib/src/system_cache.dart'; | 17 import '../lib/src/system_cache.dart'; |
18 import '../lib/src/utils.dart'; | 18 import '../lib/src/utils.dart'; |
19 import '../lib/src/version.dart'; | 19 import '../lib/src/version.dart'; |
20 import '../lib/src/solver/version_solver.dart'; | 20 import '../lib/src/solver/version_solver.dart'; |
21 import 'test_pub.dart'; | 21 import 'test_pub.dart'; |
22 | 22 |
23 MockSource source1; | 23 MockSource source1; |
24 MockSource source2; | 24 MockSource source2; |
25 | 25 |
26 main() { | 26 main() { |
(...skipping 1261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1288 } | 1288 } |
1289 } | 1289 } |
1290 | 1290 |
1291 /// A source used for testing. This both creates mock package objects and acts | 1291 /// A source used for testing. This both creates mock package objects and acts |
1292 /// as a source for them. | 1292 /// as a source for them. |
1293 /// | 1293 /// |
1294 /// In order to support testing packages that have the same name but different | 1294 /// In order to support testing packages that have the same name but different |
1295 /// descriptions, a package's name is calculated by taking the description | 1295 /// descriptions, a package's name is calculated by taking the description |
1296 /// string and stripping off any trailing hyphen followed by non-hyphen | 1296 /// string and stripping off any trailing hyphen followed by non-hyphen |
1297 /// characters. | 1297 /// characters. |
1298 class MockSource extends Source { | 1298 class MockSource extends CachedSource { |
1299 final _packages = <String, Map<Version, Package>>{}; | 1299 final _packages = <String, Map<Version, Package>>{}; |
1300 | 1300 |
1301 /// Keeps track of which package version lists have been requested. Ensures | 1301 /// Keeps track of which package version lists have been requested. Ensures |
1302 /// that a source is only hit once for a given package and that pub | 1302 /// that a source is only hit once for a given package and that pub |
1303 /// internally caches the results. | 1303 /// internally caches the results. |
1304 final _requestedVersions = new Set<String>(); | 1304 final _requestedVersions = new Set<String>(); |
1305 | 1305 |
1306 /// Keeps track of which package pubspecs have been requested. Ensures that a | 1306 /// Keeps track of which package pubspecs have been requested. Ensures that a |
1307 /// source is only hit once for a given package and that pub internally | 1307 /// source is only hit once for a given package and that pub internally |
1308 /// caches the results. | 1308 /// caches the results. |
1309 final _requestedPubspecs = new Map<String, Set<Version>>(); | 1309 final _requestedPubspecs = new Map<String, Set<Version>>(); |
1310 | 1310 |
1311 final String name; | 1311 final String name; |
1312 bool get shouldCache => true; | |
1313 | 1312 |
1314 MockSource(this.name); | 1313 MockSource(this.name); |
1315 | 1314 |
1316 Future<String> systemCacheDirectory(PackageId id) { | 1315 dynamic parseDescription(String containingPath, description, |
| 1316 {bool fromLockFile: false}) => description; |
| 1317 |
| 1318 bool descriptionsEqual(description1, description2) => |
| 1319 description1 == description2; |
| 1320 |
| 1321 Future<String> getDirectory(PackageId id) { |
1317 return new Future.value('${id.name}-${id.version}'); | 1322 return new Future.value('${id.name}-${id.version}'); |
1318 } | 1323 } |
1319 | 1324 |
1320 Future<List<Version>> getVersions(String name, String description) { | 1325 Future<List<Version>> getVersions(String name, String description) { |
1321 return syncFuture(() { | 1326 return syncFuture(() { |
1322 // Make sure the solver doesn't request the same thing twice. | 1327 // Make sure the solver doesn't request the same thing twice. |
1323 if (_requestedVersions.contains(description)) { | 1328 if (_requestedVersions.contains(description)) { |
1324 throw new Exception('Version list for $description was already ' | 1329 throw new Exception('Version list for $description was already ' |
1325 'requested.'); | 1330 'requested.'); |
1326 } | 1331 } |
1327 | 1332 |
1328 _requestedVersions.add(description); | 1333 _requestedVersions.add(description); |
1329 | 1334 |
1330 if (!_packages.containsKey(description)){ | 1335 if (!_packages.containsKey(description)){ |
1331 throw new Exception('MockSource does not have a package matching ' | 1336 throw new Exception('MockSource does not have a package matching ' |
1332 '"$description".'); | 1337 '"$description".'); |
1333 } | 1338 } |
1334 | 1339 |
1335 return _packages[description].keys.toList(); | 1340 return _packages[description].keys.toList(); |
1336 }); | 1341 }); |
1337 } | 1342 } |
1338 | 1343 |
1339 Future<Pubspec> describe(PackageId id) { | 1344 Future<Pubspec> describeUncached(PackageId id) { |
1340 return syncFuture(() { | 1345 return syncFuture(() { |
1341 // Make sure the solver doesn't request the same thing twice. | 1346 // Make sure the solver doesn't request the same thing twice. |
1342 if (_requestedPubspecs.containsKey(id.description) && | 1347 if (_requestedPubspecs.containsKey(id.description) && |
1343 _requestedPubspecs[id.description].contains(id.version)) { | 1348 _requestedPubspecs[id.description].contains(id.version)) { |
1344 throw new Exception('Pubspec for $id was already requested.'); | 1349 throw new Exception('Pubspec for $id was already requested.'); |
1345 } | 1350 } |
1346 | 1351 |
1347 _requestedPubspecs.putIfAbsent(id.description, () => new Set<Version>()); | 1352 _requestedPubspecs.putIfAbsent(id.description, () => new Set<Version>()); |
1348 _requestedPubspecs[id.description].add(id.version); | 1353 _requestedPubspecs[id.description].add(id.version); |
1349 | 1354 |
1350 return _packages[id.description][id.version].pubspec; | 1355 return _packages[id.description][id.version].pubspec; |
1351 }); | 1356 }); |
1352 } | 1357 } |
1353 | 1358 |
1354 Future<bool> get(PackageId id, String path) { | 1359 Future<Package> downloadToSystemCache(PackageId id) => |
1355 throw new Exception('no'); | 1360 throw new UnsupportedError('Cannot download mock packages'); |
1356 } | 1361 |
| 1362 List<Package> getCachedPackages() => |
| 1363 throw new UnsupportedError('Cannot get mock packages'); |
| 1364 |
| 1365 Future<Pair<int, int>> repairCachedPackages() => |
| 1366 throw new UnsupportedError('Cannot repair mock packages'); |
1357 | 1367 |
1358 void addPackage(String description, Package package) { | 1368 void addPackage(String description, Package package) { |
1359 _packages.putIfAbsent(description, () => new Map<Version, Package>()); | 1369 _packages.putIfAbsent(description, () => new Map<Version, Package>()); |
1360 _packages[description][package.version] = package; | 1370 _packages[description][package.version] = package; |
1361 } | 1371 } |
1362 } | 1372 } |
1363 | 1373 |
1364 Package mockPackage(PackageId id, Map dependencyStrings, Map overrides) { | 1374 Package mockPackage(PackageId id, Map dependencyStrings, Map overrides) { |
1365 var sdkConstraint = null; | 1375 var sdkConstraint = null; |
1366 | 1376 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1445 } | 1455 } |
1446 | 1456 |
1447 var source = "mock1"; | 1457 var source = "mock1"; |
1448 if (match[7] != null) { | 1458 if (match[7] != null) { |
1449 source = match[7]; | 1459 source = match[7]; |
1450 if (source == "root") source = null; | 1460 if (source == "root") source = null; |
1451 } | 1461 } |
1452 | 1462 |
1453 return new PackageId(name, source, parsedVersion, description); | 1463 return new PackageId(name, source, parsedVersion, description); |
1454 } | 1464 } |
OLD | NEW |