From a30add01226d263bcf726022e47873540e5b9109 Mon Sep 17 00:00:00 2001 From: Natalie Weizenbaum Date: Thu, 29 Mar 2018 23:52:33 -0700 Subject: [PATCH] Override dependencies of locked packages Partially addresses #1853 --- lib/src/solver/package_lister.dart | 1 + test/get/overrides_locked_test.dart | 41 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 test/get/overrides_locked_test.dart diff --git a/lib/src/solver/package_lister.dart b/lib/src/solver/package_lister.dart index 0ee7a9224..8b5dc7d7f 100644 --- a/lib/src/solver/package_lister.dart +++ b/lib/src/solver/package_lister.dart @@ -227,6 +227,7 @@ class PackageLister { return incompatibilities; } else { return pubspec.dependencies.values + .where((range) => !_overriddenPackages.contains(range.name)) .map((range) => _dependency(depender, range)) .toList(); } diff --git a/test/get/overrides_locked_test.dart b/test/get/overrides_locked_test.dart new file mode 100644 index 000000000..7151c3a49 --- /dev/null +++ b/test/get/overrides_locked_test.dart @@ -0,0 +1,41 @@ +// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS d.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 d.file. + +import 'package:test/test.dart'; + +import '../descriptor.dart' as d; +import '../test_pub.dart'; + +main() { + // Regression test for #1853 + test("overrides a locked package's dependency", () async { + await servePackages((builder) { + builder.serve("foo", "1.2.3", deps: {"bar": "1.2.3"}); + builder.serve("bar", "1.2.3"); + }); + + await d.dir('bar', + [d.libDir('bar', 'bar 0.0.1'), d.libPubspec('bar', '0.0.1')]).create(); + + await d.appDir({ + "foo": "any" + }).create(); + + await pubGet(); + + await d.dir(appPath, [ + d.pubspec({ + "name": "myapp", + "dependencies": { + "foo": "any" + }, + "dependency_overrides": {"bar": {"path": "../bar"}} + }) + ]).create(); + + await pubGet(); + + await d.appPackagesFile({"foo": "1.2.3", "bar": "../bar"}).validate(); + }); +}