Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: utils/tests/pub/version_solver_test.dart

Issue 12790006: Remove support for SDK dependencies. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_update_test; 5 library pub_update_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import '../../../pkg/unittest/lib/unittest.dart'; 10 import '../../../pkg/unittest/lib/unittest.dart';
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 // Make sure the error string mentions the conflicting dependers. 62 // Make sure the error string mentions the conflicting dependers.
63 if (!x.toString().contains(package1)) return false; 63 if (!x.toString().contains(package1)) return false;
64 if (!x.toString().contains(package2)) return false; 64 if (!x.toString().contains(package2)) return false;
65 65
66 return true; 66 return true;
67 }, "is a SourceMismatchException"); 67 }, "is a SourceMismatchException");
68 } 68 }
69 69
70 MockSource source1; 70 MockSource source1;
71 MockSource source2; 71 MockSource source2;
72 Source versionlessSource;
73 72
74 main() { 73 main() {
75 initConfig(); 74 initConfig();
76 75
77 testResolve('no dependencies', { 76 testResolve('no dependencies', {
78 'myapp 0.0.0': {} 77 'myapp 0.0.0': {}
79 }, result: { 78 }, result: {
80 'myapp from root': '0.0.0' 79 'myapp from root': '0.0.0'
81 }); 80 });
82 81
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 'bang 1.0.0': {}, 143 'bang 1.0.0': {},
145 'whoop 1.0.0': {}, 144 'whoop 1.0.0': {},
146 'zoop 1.0.0': {} 145 'zoop 1.0.0': {}
147 }, result: { 146 }, result: {
148 'myapp from root': '0.0.0', 147 'myapp from root': '0.0.0',
149 'foo': '1.0.1', 148 'foo': '1.0.1',
150 'bar': '1.0.0', 149 'bar': '1.0.0',
151 'bang': '1.0.0' 150 'bang': '1.0.0'
152 }); 151 });
153 152
154 testResolve('from versionless source', {
155 'myapp 0.0.0': {
156 'foo from versionless': 'any'
157 },
158 'foo 1.2.3 from versionless': {}
159 }, result: {
160 'myapp from root': '0.0.0',
161 'foo from versionless': '1.2.3'
162 });
163
164 testResolve('transitively through versionless source', {
165 'myapp 0.0.0': {
166 'foo from versionless': 'any'
167 },
168 'foo 1.2.3 from versionless': {
169 'bar': '>=1.0.0'
170 },
171 'bar 1.1.0': {}
172 }, result: {
173 'myapp from root': '0.0.0',
174 'foo from versionless': '1.2.3',
175 'bar': '1.1.0'
176 });
177
178 testResolve('with compatible locked dependency', { 153 testResolve('with compatible locked dependency', {
179 'myapp 0.0.0': { 154 'myapp 0.0.0': {
180 'foo': 'any' 155 'foo': 'any'
181 }, 156 },
182 'foo 1.0.0': { 'bar': '1.0.0' }, 157 'foo 1.0.0': { 'bar': '1.0.0' },
183 'foo 1.0.1': { 'bar': '1.0.1' }, 158 'foo 1.0.1': { 'bar': '1.0.1' },
184 'foo 1.0.2': { 'bar': '1.0.2' }, 159 'foo 1.0.2': { 'bar': '1.0.2' },
185 'bar 1.0.0': {}, 160 'bar 1.0.0': {},
186 'bar 1.0.1': {}, 161 'bar 1.0.1': {},
187 'bar 1.0.2': {} 162 'bar 1.0.2': {}
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 // TODO(rnystrom): More stuff to test: 394 // TODO(rnystrom): More stuff to test:
420 // - Depending on a non-existent package. 395 // - Depending on a non-existent package.
421 // - Test that only a certain number requests are sent to the mock source so we 396 // - Test that only a certain number requests are sent to the mock source so we
422 // can keep track of server traffic. 397 // can keep track of server traffic.
423 398
424 testResolve(description, packages, {lockfile, result, Matcher error}) { 399 testResolve(description, packages, {lockfile, result, Matcher error}) {
425 test(description, () { 400 test(description, () {
426 var cache = new SystemCache('.'); 401 var cache = new SystemCache('.');
427 source1 = new MockSource('mock1'); 402 source1 = new MockSource('mock1');
428 source2 = new MockSource('mock2'); 403 source2 = new MockSource('mock2');
429 versionlessSource = new MockVersionlessSource();
430 cache.register(source1); 404 cache.register(source1);
431 cache.register(source2); 405 cache.register(source2);
432 cache.register(versionlessSource);
433 cache.sources.setDefault(source1.name); 406 cache.sources.setDefault(source1.name);
434 407
435 // Build the test package graph. 408 // Build the test package graph.
436 var root; 409 var root;
437 packages.forEach((nameVersion, dependencies) { 410 packages.forEach((nameVersion, dependencies) {
438 var parsed = parseSource(nameVersion, (isDev, nameVersion, source) { 411 var parsed = parseSource(nameVersion, (isDev, nameVersion, source) {
439 var parts = nameVersion.split(' '); 412 var parts = nameVersion.split(' ');
440 var name = parts[0]; 413 var name = parts[0];
441 var version = parts[1]; 414 var version = parts[1];
442 415
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 new PubspecEnvironment()); 519 new PubspecEnvironment());
547 return new Package.inMemory(pubspec); 520 return new Package.inMemory(pubspec);
548 } 521 }
549 522
550 void addPackage(Package package) { 523 void addPackage(Package package) {
551 _packages.putIfAbsent(package.name, () => new Map<Version, Package>()); 524 _packages.putIfAbsent(package.name, () => new Map<Version, Package>());
552 _packages[package.name][package.version] = package; 525 _packages[package.name][package.version] = package;
553 } 526 }
554 } 527 }
555 528
556 /// A source used for testing that doesn't natively understand versioning,
557 /// similar to how the Git and SDK sources work.
558 class MockVersionlessSource extends Source {
559 final Map<String, Package> _packages;
560
561 final String name = 'versionless';
562 final bool shouldCache = false;
563
564 MockVersionlessSource()
565 : _packages = <String, Package>{};
566
567 Future<bool> install(PackageId id, String path) {
568 throw 'no';
569 }
570
571 Future<Pubspec> describe(PackageId id) {
572 return new Future<Pubspec>.immediate(_packages[id.description].pubspec);
573 }
574
575 void addPackage(Package package) {
576 _packages[package.name] = package;
577 }
578 }
nweiz 2013/03/15 18:21:54 I don't understand why we're getting rid of this.
Bob Nystrom 2013/03/15 18:31:56 Per our discussion, I don't think these test anyth
579
580 void parseSource(String description, 529 void parseSource(String description,
581 callback(bool isDev, String name, Source source)) { 530 callback(bool isDev, String name, Source source)) {
582 var isDev = false; 531 var isDev = false;
583 532
584 if (description.startsWith("(dev) ")) { 533 if (description.startsWith("(dev) ")) {
585 description = description.substring("(dev) ".length); 534 description = description.substring("(dev) ".length);
586 isDev = true; 535 isDev = true;
587 } 536 }
588 537
589 var name = description; 538 var name = description;
590 var source = source1; 539 var source = source1;
591 540
592 var sourceNames = { 541 var sourceNames = {
593 'mock1': source1, 542 'mock1': source1,
594 'mock2': source2, 543 'mock2': source2,
595 'root': null, 544 'root': null
596 'versionless': versionlessSource
597 }; 545 };
598 546
599 var match = new RegExp(r"(.*) from (.*)").firstMatch(description); 547 var match = new RegExp(r"(.*) from (.*)").firstMatch(description);
600 if (match != null) { 548 if (match != null) {
601 name = match[1]; 549 name = match[1];
602 source = sourceNames[match[2]]; 550 source = sourceNames[match[2]];
603 } 551 }
604 552
605 callback(isDev, name, source); 553 callback(isDev, name, source);
606 } 554 }
OLDNEW
« utils/pub/validator/dependency.dart ('K') | « utils/tests/pub/validator_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698