| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:pub_semver/pub_semver.dart'; |
| |
| import 'descriptor.dart' as d; |
| import 'test_pub.dart'; |
| import '../lib/src/barback.dart' as barback; |
| |
| main() { |
| initConfig(); |
| |
| forBothPubGetAndUpgrade((command) { |
| integration("implicitly constrains it to versions pub supports", () { |
| servePackages((builder) { |
| builder.serve("barback", current("barback")); |
| builder.serve("stack_trace", previous("stack_trace")); |
| builder.serve("stack_trace", current("stack_trace")); |
| builder.serve("stack_trace", nextPatch("stack_trace")); |
| builder.serve("stack_trace", max("stack_trace")); |
| builder.serve("source_span", current("source_span")); |
| }); |
| |
| d.appDir({ |
| "barback": "any" |
| }).create(); |
| |
| pubCommand(command); |
| |
| d.packagesDir({"stack_trace": nextPatch("stack_trace")}).validate(); |
| }); |
| |
| integration("pub's implicit constraint uses the same source and " |
| "description as a dependency override", () { |
| servePackages((builder) { |
| builder.serve("barback", current("barback")); |
| builder.serve("stack_trace", nextPatch("stack_trace")); |
| builder.serve("source_span", current("source_span")); |
| }); |
| |
| d.dir("stack_trace", [ |
| d.libDir("stack_trace", 'stack_trace ${current("stack_trace")}'), |
| d.libPubspec("stack_trace", current("stack_trace")) |
| ]).create(); |
| |
| d.dir(appPath, [ |
| d.pubspec({ |
| "name": "myapp", |
| "dependencies": {"barback": "any"}, |
| "dependency_overrides": { |
| "stack_trace": {"path": "../stack_trace"}, |
| } |
| }) |
| ]).create(); |
| |
| pubCommand(command); |
| |
| // Validate that we're using the path dependency version of stack_trace |
| // rather than the hosted version. |
| d.packagesDir({ |
| "stack_trace": current("stack_trace") |
| }).validate(); |
| }); |
| |
| integration("doesn't add a constraint if barback isn't in the package " |
| "graph", () { |
| servePackages((builder) { |
| builder.serve("stack_trace", previous("stack_trace")); |
| builder.serve("stack_trace", current("stack_trace")); |
| builder.serve("stack_trace", nextPatch("stack_trace")); |
| builder.serve("stack_trace", max("stack_trace")); |
| builder.serve("source_span", current("source_span")); |
| }); |
| |
| d.appDir({ |
| "stack_trace": "any" |
| }).create(); |
| |
| pubCommand(command); |
| |
| d.packagesDir({"stack_trace": max("stack_trace")}).validate(); |
| }); |
| }); |
| |
| integration("unlocks if the locked version doesn't meet pub's " |
| "constraint", () { |
| servePackages((builder) { |
| builder.serve("barback", current("barback")); |
| builder.serve("stack_trace", previous("stack_trace")); |
| builder.serve("stack_trace", current("stack_trace")); |
| builder.serve("source_span", current("source_span")); |
| }); |
| |
| d.appDir({"barback": "any"}).create(); |
| |
| // Hand-create a lockfile to pin the package to an older version. |
| createLockFile("myapp", hosted: { |
| "barback": current("barback"), |
| "stack_trace": previous("stack_trace") |
| }); |
| |
| pubGet(); |
| |
| // It should be upgraded. |
| d.packagesDir({ |
| "stack_trace": current("stack_trace") |
| }).validate(); |
| }); |
| } |
| |
| String current(String packageName) => |
| barback.pubConstraints[packageName].min.toString(); |
| |
| String previous(String packageName) { |
| var constraint = barback.pubConstraints[packageName]; |
| return new Version(constraint.min.major, constraint.min.minor - 1, 0) |
| .toString(); |
| } |
| |
| String nextPatch(String packageName) => |
| barback.pubConstraints[packageName].min.nextPatch.toString(); |
| |
| String max(String packageName) => |
| barback.pubConstraints[packageName].max.toString(); |