OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
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. | |
4 | |
5 import 'descriptor.dart' as d; | 1 import 'descriptor.dart' as d; |
6 import 'test_pub.dart'; | 2 import 'test_pub.dart'; |
7 import '../lib/src/barback.dart' as barback; | 3 import '../lib/src/barback.dart' as barback; |
8 import '../lib/src/version.dart'; | 4 import '../lib/src/version.dart'; |
9 | |
10 main() { | 5 main() { |
11 initConfig(); | 6 initConfig(); |
12 | |
13 forBothPubGetAndUpgrade((command) { | 7 forBothPubGetAndUpgrade((command) { |
14 integration("implicitly constrains it to versions pub supports", () { | 8 integration("implicitly constrains it to versions pub supports", () { |
15 servePackages((builder) { | 9 servePackages((builder) { |
16 builder.serve("barback", current("barback")); | 10 builder.serve("barback", current("barback")); |
17 builder.serve("stack_trace", previous("stack_trace")); | 11 builder.serve("stack_trace", previous("stack_trace")); |
18 builder.serve("stack_trace", current("stack_trace")); | 12 builder.serve("stack_trace", current("stack_trace")); |
19 builder.serve("stack_trace", nextPatch("stack_trace")); | 13 builder.serve("stack_trace", nextPatch("stack_trace")); |
20 builder.serve("stack_trace", max("stack_trace")); | 14 builder.serve("stack_trace", max("stack_trace")); |
21 builder.serve("source_span", current("source_span")); | 15 builder.serve("source_span", current("source_span")); |
22 }); | 16 }); |
23 | |
24 d.appDir({ | 17 d.appDir({ |
25 "barback": "any" | 18 "barback": "any" |
26 }).create(); | 19 }).create(); |
27 | |
28 pubCommand(command); | 20 pubCommand(command); |
29 | 21 d.packagesDir({ |
30 d.packagesDir({"stack_trace": nextPatch("stack_trace")}).validate(); | 22 "stack_trace": nextPatch("stack_trace") |
| 23 }).validate(); |
31 }); | 24 }); |
32 | 25 integration( |
33 integration("pub's implicit constraint uses the same source and " | 26 "pub's implicit constraint uses the same source and " |
34 "description as a dependency override", () { | 27 "description as a dependency override", |
| 28 () { |
35 servePackages((builder) { | 29 servePackages((builder) { |
36 builder.serve("barback", current("barback")); | 30 builder.serve("barback", current("barback")); |
37 builder.serve("stack_trace", nextPatch("stack_trace")); | 31 builder.serve("stack_trace", nextPatch("stack_trace")); |
38 builder.serve("source_span", current("source_span")); | 32 builder.serve("source_span", current("source_span")); |
39 }); | 33 }); |
40 | 34 d.dir( |
41 d.dir("stack_trace", [ | 35 "stack_trace", |
42 d.libDir("stack_trace", 'stack_trace ${current("stack_trace")}'), | 36 [ |
43 d.libPubspec("stack_trace", current("stack_trace")) | 37 d.libDir("stack_trace", 'stack_trace ${current("stack_trace")}'), |
44 ]).create(); | 38 d.libPubspec("stack_trace", current("stack_trace"))]).create(); |
45 | 39 d.dir(appPath, [d.pubspec({ |
46 d.dir(appPath, [ | |
47 d.pubspec({ | |
48 "name": "myapp", | 40 "name": "myapp", |
49 "dependencies": {"barback": "any"}, | 41 "dependencies": { |
| 42 "barback": "any" |
| 43 }, |
50 "dependency_overrides": { | 44 "dependency_overrides": { |
51 "stack_trace": {"path": "../stack_trace"}, | 45 "stack_trace": { |
| 46 "path": "../stack_trace" |
| 47 } |
52 } | 48 } |
53 }) | 49 })]).create(); |
54 ]).create(); | |
55 | |
56 pubCommand(command); | 50 pubCommand(command); |
57 | |
58 // Validate that we're using the path dependency version of stack_trace | |
59 // rather than the hosted version. | |
60 d.packagesDir({ | 51 d.packagesDir({ |
61 "stack_trace": current("stack_trace") | 52 "stack_trace": current("stack_trace") |
62 }).validate(); | 53 }).validate(); |
63 }); | 54 }); |
64 | 55 integration( |
65 integration("doesn't add a constraint if barback isn't in the package " | 56 "doesn't add a constraint if barback isn't in the package " "graph", |
66 "graph", () { | 57 () { |
67 servePackages((builder) { | 58 servePackages((builder) { |
68 builder.serve("stack_trace", previous("stack_trace")); | 59 builder.serve("stack_trace", previous("stack_trace")); |
69 builder.serve("stack_trace", current("stack_trace")); | 60 builder.serve("stack_trace", current("stack_trace")); |
70 builder.serve("stack_trace", nextPatch("stack_trace")); | 61 builder.serve("stack_trace", nextPatch("stack_trace")); |
71 builder.serve("stack_trace", max("stack_trace")); | 62 builder.serve("stack_trace", max("stack_trace")); |
72 builder.serve("source_span", current("source_span")); | 63 builder.serve("source_span", current("source_span")); |
73 }); | 64 }); |
74 | |
75 d.appDir({ | 65 d.appDir({ |
76 "stack_trace": "any" | 66 "stack_trace": "any" |
77 }).create(); | 67 }).create(); |
78 | |
79 pubCommand(command); | 68 pubCommand(command); |
80 | 69 d.packagesDir({ |
81 d.packagesDir({"stack_trace": max("stack_trace")}).validate(); | 70 "stack_trace": max("stack_trace") |
| 71 }).validate(); |
82 }); | 72 }); |
83 }); | 73 }); |
84 | 74 integration( |
85 integration("unlocks if the locked version doesn't meet pub's " | 75 "unlocks if the locked version doesn't meet pub's " "constraint", |
86 "constraint", () { | 76 () { |
87 servePackages((builder) { | 77 servePackages((builder) { |
88 builder.serve("barback", current("barback")); | 78 builder.serve("barback", current("barback")); |
89 builder.serve("stack_trace", previous("stack_trace")); | 79 builder.serve("stack_trace", previous("stack_trace")); |
90 builder.serve("stack_trace", current("stack_trace")); | 80 builder.serve("stack_trace", current("stack_trace")); |
91 builder.serve("source_span", current("source_span")); | 81 builder.serve("source_span", current("source_span")); |
92 }); | 82 }); |
93 | 83 d.appDir({ |
94 d.appDir({"barback": "any"}).create(); | 84 "barback": "any" |
95 | 85 }).create(); |
96 // Hand-create a lockfile to pin the package to an older version. | |
97 createLockFile("myapp", hosted: { | 86 createLockFile("myapp", hosted: { |
98 "barback": current("barback"), | 87 "barback": current("barback"), |
99 "stack_trace": previous("stack_trace") | 88 "stack_trace": previous("stack_trace") |
100 }); | 89 }); |
101 | |
102 pubGet(); | 90 pubGet(); |
103 | |
104 // It should be upgraded. | |
105 d.packagesDir({ | 91 d.packagesDir({ |
106 "stack_trace": current("stack_trace") | 92 "stack_trace": current("stack_trace") |
107 }).validate(); | 93 }).validate(); |
108 }); | 94 }); |
109 } | 95 } |
110 | |
111 String current(String packageName) => | 96 String current(String packageName) => |
112 barback.pubConstraints[packageName].min.toString(); | 97 barback.pubConstraints[packageName].min.toString(); |
113 | |
114 String previous(String packageName) { | 98 String previous(String packageName) { |
115 var constraint = barback.pubConstraints[packageName]; | 99 var constraint = barback.pubConstraints[packageName]; |
116 return new Version(constraint.min.major, constraint.min.minor - 1, 0) | 100 return new Version( |
117 .toString(); | 101 constraint.min.major, |
| 102 constraint.min.minor - 1, |
| 103 0).toString(); |
118 } | 104 } |
119 | |
120 String nextPatch(String packageName) => | 105 String nextPatch(String packageName) => |
121 barback.pubConstraints[packageName].min.nextPatch.toString(); | 106 barback.pubConstraints[packageName].min.nextPatch.toString(); |
122 | |
123 String max(String packageName) => | 107 String max(String packageName) => |
124 barback.pubConstraints[packageName].max.toString(); | 108 barback.pubConstraints[packageName].max.toString(); |
OLD | NEW |