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