Don't be conservative in upgrade --major-versions without specific pa… (#3539)
diff --git a/lib/src/command/upgrade.dart b/lib/src/command/upgrade.dart
index 25feb70..a83d129 100644
--- a/lib/src/command/upgrade.dart
+++ b/lib/src/command/upgrade.dart
@@ -222,6 +222,14 @@
}
final newPubspecText = _updatePubspec(changes);
+ // When doing '--majorVersions' for specific packages we try to update other
+ // packages as little as possible to make a focused change (SolveType.get).
+ //
+ // But without a specific package we want to get as many non-major updates
+ // as possible (SolveType.upgrade).
+ final solveType =
+ argResults.rest.isEmpty ? SolveType.upgrade : SolveType.get;
+
if (_dryRun) {
// Even if it is a dry run, run `acquireDependencies` so that the user
// gets a report on changes.
@@ -233,7 +241,7 @@
lockFile: entrypoint.lockFile,
solveResult: solveResult,
).acquireDependencies(
- SolveType.get,
+ solveType,
dryRun: true,
precompile: _precompile,
analytics: null, // No analytics for dry-run
@@ -246,7 +254,7 @@
// we can show the changes when not in --dry-run mode. For now we only show
// the changes made to pubspec.yaml in dry-run mode.
await Entrypoint(directory, cache).acquireDependencies(
- SolveType.get,
+ solveType,
precompile: _precompile,
analytics: analytics,
);
diff --git a/test/testdata/goldens/upgrade/example_warns_about_major_versions_test/pub upgrade --major-versions does not update major versions in example~.txt b/test/testdata/goldens/upgrade/example_warns_about_major_versions_test/pub upgrade --major-versions does not update major versions in example~.txt
index ae304ea..2cc96c0 100644
--- a/test/testdata/goldens/upgrade/example_warns_about_major_versions_test/pub upgrade --major-versions does not update major versions in example~.txt
+++ b/test/testdata/goldens/upgrade/example_warns_about_major_versions_test/pub upgrade --major-versions does not update major versions in example~.txt
@@ -17,7 +17,9 @@
## Section 1
$ pub upgrade --major-versions --directory example
Resolving dependencies in example...
+ bar 2.0.0
> foo 2.0.0 (was 1.0.0)
+ myapp 0.0.0 from path .
Changed 1 dependency in example!
Changed 1 constraint in pubspec.yaml: