| // 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:path/path.dart' as path; |
| |
| import 'descriptor.dart' as d; |
| import 'test_pub.dart'; |
| |
| main() { |
| initConfig(); |
| forBothPubGetAndUpgrade((command) { |
| integration("chooses best version matching override constraint", () { |
| servePackages([ |
| packageMap("foo", "1.0.0"), |
| packageMap("foo", "2.0.0"), |
| packageMap("foo", "3.0.0") |
| ]); |
| |
| d.dir(appPath, [ |
| d.pubspec({ |
| "name": "myapp", |
| "dependencies": { |
| "foo": ">2.0.0" |
| }, |
| "dependency_overrides": { |
| "foo": "<3.0.0" |
| } |
| }) |
| ]).create(); |
| |
| pubCommand(command); |
| |
| d.packagesDir({ |
| "foo": "2.0.0" |
| }).validate(); |
| }); |
| |
| integration("treats override as implicit dependency", () { |
| servePackages([ |
| packageMap("foo", "1.0.0") |
| ]); |
| |
| d.dir(appPath, [ |
| d.pubspec({ |
| "name": "myapp", |
| "dependency_overrides": { |
| "foo": "any" |
| } |
| }) |
| ]).create(); |
| |
| pubCommand(command); |
| |
| d.packagesDir({ |
| "foo": "1.0.0" |
| }).validate(); |
| }); |
| |
| integration("ignores other constraints on overridden package", () { |
| servePackages([ |
| packageMap("foo", "1.0.0"), |
| packageMap("foo", "2.0.0"), |
| packageMap("foo", "3.0.0"), |
| packageMap("bar", "1.0.0", {"foo": "5.0.0-nonexistent"}) |
| ]); |
| |
| d.dir(appPath, [ |
| d.pubspec({ |
| "name": "myapp", |
| "dependencies": { |
| "bar": "any" |
| }, |
| "dependency_overrides": { |
| "foo": "<3.0.0" |
| } |
| }) |
| ]).create(); |
| |
| pubCommand(command); |
| |
| d.packagesDir({ |
| "foo": "2.0.0", |
| "bar": "1.0.0" |
| }).validate(); |
| }); |
| |
| integration("warns about overridden dependencies", () { |
| servePackages([ |
| packageMap("foo", "1.0.0"), |
| packageMap("bar", "1.0.0") |
| ]); |
| |
| d.dir("baz", [ |
| d.libDir("baz"), |
| d.libPubspec("baz", "0.0.1") |
| ]).create(); |
| |
| d.dir(appPath, [ |
| d.pubspec({ |
| "name": "myapp", |
| "dependency_overrides": { |
| "foo": "any", |
| "bar": "any", |
| "baz": {"path": "../baz"} |
| } |
| }) |
| ]).create(); |
| |
| var bazPath = path.join("..", "baz"); |
| |
| schedulePub(args: [command.name], output: command.success, error: |
| """ |
| Warning: You are using these overridden dependencies: |
| ! bar 1.0.0 |
| ! baz 0.0.1 from path $bazPath |
| ! foo 1.0.0 |
| """); |
| }); |
| }); |
| } |