Index: sdk/lib/_internal/pub/test/downgrade/downgrades_dependency_test.dart |
diff --git a/sdk/lib/_internal/pub/test/downgrade/downgrades_dependency_test.dart b/sdk/lib/_internal/pub/test/downgrade/downgrades_dependency_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8adf3a5365791a97d99907b3382da776df2f56fd |
--- /dev/null |
+++ b/sdk/lib/_internal/pub/test/downgrade/downgrades_dependency_test.dart |
@@ -0,0 +1,44 @@ |
+// Copyright (c) 2014, 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. |
+ |
+library pub_tests; |
+ |
+import 'package:scheduled_test/scheduled_test.dart'; |
+ |
+import '../descriptor.dart' as d; |
+import '../test_pub.dart'; |
+ |
+main() { |
+ initConfig(); |
+ integration("downgrades a dependency to the lowest matching version", () { |
+ servePackages([ |
+ packageMap("foo", "1.0.0"), |
+ packageMap("foo", "2.0.0-dev"), |
+ packageMap("foo", "2.0.0"), |
+ packageMap("foo", "2.1.0"), |
+ ]); |
+ |
+ d.appDir({"foo": ">=2.0.0 <3.0.0"}).create(); |
+ |
+ pubGet(); |
+ |
+ d.packagesDir({ |
+ "foo": "2.1.0", |
+ }).validate(); |
+ |
+ pubDowngrade(); |
+ |
+ // 1.0.0 shouldn't be chosen because it's outside the version constraint and |
+ // 2.0.0-dev shouldn't be chosen because release versions should be |
+ // preferred. |
+ d.packagesDir({ |
+ "foo": "2.0.0", |
+ }).validate(); |
+ |
+ // The lockfile should be updated. |
+ d.dir(appPath, [ |
+ d.matcherFile("pubspec.lock", contains("2.0.0")) |
+ ]).validate(); |
+ }); |
+} |