blob: 965101a830cb26dca129e7999bce56d83e00fdc2 [file] [log] [blame]
// 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:test/test.dart';
import 'package:path/path.dart' as path;
import 'descriptor.dart' as d;
import 'test_pub.dart';
main() {
forBothPubGetAndUpgrade((command) {
test("chooses best version matching override constraint", () async {
await servePackages((builder) {
builder.serve("foo", "1.0.0");
builder.serve("foo", "2.0.0");
builder.serve("foo", "3.0.0");
});
await d.dir(appPath, [
d.pubspec({
"name": "myapp",
"dependencies": {"foo": ">2.0.0"},
"dependency_overrides": {"foo": "<3.0.0"}
})
]).create();
await pubCommand(command);
await d.appPackagesFile({"foo": "2.0.0"}).validate();
});
test("treats override as implicit dependency", () async {
await servePackages((builder) {
builder.serve("foo", "1.0.0");
});
await d.dir(appPath, [
d.pubspec({
"name": "myapp",
"dependency_overrides": {"foo": "any"}
})
]).create();
await pubCommand(command);
await d.appPackagesFile({"foo": "1.0.0"}).validate();
});
test("ignores other constraints on overridden package", () async {
await servePackages((builder) {
builder.serve("foo", "1.0.0");
builder.serve("foo", "2.0.0");
builder.serve("foo", "3.0.0");
builder.serve("bar", "1.0.0", pubspec: {
"dependencies": {"foo": "5.0.0-nonexistent"}
});
});
await d.dir(appPath, [
d.pubspec({
"name": "myapp",
"dependencies": {"bar": "any"},
"dependency_overrides": {"foo": "<3.0.0"}
})
]).create();
await pubCommand(command);
await d.appPackagesFile({"foo": "2.0.0", "bar": "1.0.0"}).validate();
});
test("ignores SDK constraints", () async {
await servePackages((builder) {
builder.serve("foo", "1.0.0", pubspec: {
"environment": {"sdk": "5.6.7-fblthp"}
});
});
await d.dir(appPath, [
d.pubspec({
"name": "myapp",
"dependency_overrides": {"foo": "any"}
})
]).create();
await pubCommand(command);
await d.appPackagesFile({"foo": "1.0.0"}).validate();
});
test("warns about overridden dependencies", () async {
await servePackages((builder) {
builder.serve("foo", "1.0.0");
builder.serve("bar", "1.0.0");
});
await d
.dir("baz", [d.libDir("baz"), d.libPubspec("baz", "0.0.1")]).create();
await d.dir(appPath, [
d.pubspec({
"name": "myapp",
"dependency_overrides": {
"foo": "any",
"bar": "any",
"baz": {"path": "../baz"}
}
})
]).create();
var bazPath = path.join("..", "baz");
await runPub(
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
""");
});
});
}