Show outdated sdk packages. (#2841)
Mention the source of non-hosted package-versions.
diff --git a/lib/src/command/outdated.dart b/lib/src/command/outdated.dart
index 7c7806c..590daf9 100644
--- a/lib/src/command/outdated.dart
+++ b/lib/src/command/outdated.dart
@@ -19,6 +19,8 @@
import '../pubspec.dart';
import '../pubspec_utils.dart';
import '../solver.dart';
+import '../source/git.dart';
+import '../source/path.dart';
import '../source/sdk.dart' show SdkSource;
import '../system_cache.dart';
import '../utils.dart';
@@ -227,7 +229,7 @@
...upgradablePackages,
...resolvablePackages
]) {
- if (!visited.add(id.name) || id.source is SdkSource) continue;
+ if (!visited.add(id.name)) continue;
rows.add(await analyzeDependency(id.toRef()));
}
@@ -789,7 +791,17 @@
/// A string representation of this version to include in the outdated report.
String get describe {
final version = _pubspec.version;
- final suffix = _overridden ? ' (overridden)' : '';
+ var suffix = '';
+ if (_overridden) {
+ suffix = ' (overridden)';
+ } else if (_id.source is SdkSource) {
+ // Version is not relevant for sdk-packages.
+ return '(sdk)';
+ } else if (_id.source is GitSource) {
+ suffix = ' (git)';
+ } else if (_id.source is PathSource) {
+ suffix = ' (path)';
+ }
return '$version$suffix';
}
diff --git a/test/outdated/goldens/ignores_sdk_dependencies.txt b/test/outdated/goldens/handles_sdk_dependencies.txt
similarity index 84%
rename from test/outdated/goldens/ignores_sdk_dependencies.txt
rename to test/outdated/goldens/handles_sdk_dependencies.txt
index 43fea60..6d4d76c 100644
--- a/test/outdated/goldens/ignores_sdk_dependencies.txt
+++ b/test/outdated/goldens/handles_sdk_dependencies.txt
@@ -54,9 +54,11 @@
Package Name Current Upgradable Resolvable Latest
direct dependencies:
+flutter (sdk) (sdk) (sdk) (sdk)
foo *1.1.0 *1.1.0 2.0.0 2.0.0
-dev_dependencies: all up-to-date.
+dev_dependencies:
+flutter_test (sdk) (sdk) (sdk) (sdk)
1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `dart pub upgrade --major-versions`.
@@ -109,9 +111,10 @@
Package Name Current Upgradable Resolvable Latest
direct dependencies:
-foo ✗1.1.0 ✗1.1.0 ✗2.0.0 ✗2.0.0
+foo ✗1.1.0 ✗1.1.0 ✓2.0.0 ✓2.0.0
-dev_dependencies: all support null safety.
+dev_dependencies:
+flutter_test ✗(sdk) ✗(sdk) ✗(sdk) ✗(sdk)
1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.
@@ -124,9 +127,10 @@
Package Name Current Upgradable Resolvable Latest
direct dependencies:
-foo ✗1.1.0 ✗1.1.0 ✗2.0.0 ✗2.0.0
+foo ✗1.1.0 ✗1.1.0 ✓2.0.0 ✓2.0.0
-dev_dependencies: all support null safety.
+dev_dependencies:
+flutter_test ✗(sdk) ✗(sdk) ✗(sdk) ✗(sdk)
1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.
@@ -139,9 +143,10 @@
Package Name Current Upgradable Resolvable Latest
direct dependencies:
-foo ✗1.1.0 ✗1.1.0 ✗2.0.0 ✗2.0.0
+foo ✗1.1.0 ✗1.1.0 ✓2.0.0 ✓2.0.0
-dev_dependencies: all support null safety.
+dev_dependencies:
+flutter_test ✗(sdk) ✗(sdk) ✗(sdk) ✗(sdk)
1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.
@@ -150,6 +155,25 @@
{
"packages": [
{
+ "package": "flutter_test",
+ "current": {
+ "version": "1.0.0",
+ "nullSafety": false
+ },
+ "upgradable": {
+ "version": "1.0.0",
+ "nullSafety": false
+ },
+ "resolvable": {
+ "version": "1.0.0",
+ "nullSafety": false
+ },
+ "latest": {
+ "version": "1.0.0",
+ "nullSafety": false
+ }
+ },
+ {
"package": "foo",
"current": {
"version": "1.1.0",
@@ -161,11 +185,11 @@
},
"resolvable": {
"version": "2.0.0",
- "nullSafety": false
+ "nullSafety": true
},
"latest": {
"version": "2.0.0",
- "nullSafety": false
+ "nullSafety": true
}
}
]
diff --git a/test/outdated/goldens/newer_versions.txt b/test/outdated/goldens/newer_versions.txt
index 97ac5ab..6e74a3e 100644
--- a/test/outdated/goldens/newer_versions.txt
+++ b/test/outdated/goldens/newer_versions.txt
@@ -132,23 +132,23 @@
Showing outdated packages.
[*] indicates versions that are not the latest available.
-Package Name Current Upgradable Resolvable Latest
+Package Name Current Upgradable Resolvable Latest
direct dependencies:
-bar 1.0.0 1.0.0 1.0.0 1.0.0
-foo *1.2.3 *1.3.0 *2.0.0 3.0.0
-local_package 0.0.1 0.0.1 0.0.1 0.0.1
+bar 1.0.0 1.0.0 1.0.0 1.0.0
+foo *1.2.3 *1.3.0 *2.0.0 3.0.0
+local_package 0.0.1 (path) 0.0.1 (path) 0.0.1 (path) 0.0.1 (path)
dev_dependencies:
-builder *1.2.3 *1.3.0 2.0.0 2.0.0
+builder *1.2.3 *1.3.0 2.0.0 2.0.0
transitive dependencies:
-transitive *1.2.3 *1.3.0 *1.3.0 2.0.0
-transitive2 - - 1.0.0 1.0.0
+transitive *1.2.3 *1.3.0 *1.3.0 2.0.0
+transitive2 - - 1.0.0 1.0.0
transitive dev_dependencies:
-dev_trans *1.0.0 - *1.0.0 2.0.0
-transitive3 - - 1.0.0 1.0.0
+dev_trans *1.0.0 - *1.0.0 2.0.0
+transitive3 - - 1.0.0 1.0.0
3 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.
@@ -231,15 +231,15 @@
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.
-Package Name Current Upgradable Resolvable Latest
+Package Name Current Upgradable Resolvable Latest
direct dependencies:
-bar ✗1.0.0 ✗1.0.0 ✗1.0.0 ✗1.0.0
-foo ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0
-local_package ✗0.0.1 ✗0.0.1 ✗0.0.1 ✗0.0.1
+bar ✗1.0.0 ✗1.0.0 ✗1.0.0 ✗1.0.0
+foo ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0
+local_package ✗0.0.1 (path) ✗0.0.1 (path) ✗0.0.1 (path) ✗0.0.1 (path)
dev_dependencies:
-builder ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0-alpha
+builder ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0-alpha
2 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.
@@ -252,23 +252,23 @@
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.
-Package Name Current Upgradable Resolvable Latest
+Package Name Current Upgradable Resolvable Latest
direct dependencies:
-bar ✗1.0.0 ✗1.0.0 ✗1.0.0 ✗1.0.0
-foo ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0
-local_package ✗0.0.1 ✗0.0.1 ✗0.0.1 ✗0.0.1
+bar ✗1.0.0 ✗1.0.0 ✗1.0.0 ✗1.0.0
+foo ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0
+local_package ✗0.0.1 (path) ✗0.0.1 (path) ✗0.0.1 (path) ✗0.0.1 (path)
dev_dependencies:
-builder ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0-alpha
+builder ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0-alpha
transitive dependencies:
-transitive ✗1.2.3 ✗1.3.0 ✗1.3.0 ✗2.0.0
-transitive2 - - ✗1.0.0 ✗1.0.0
+transitive ✗1.2.3 ✗1.3.0 ✗1.3.0 ✗2.0.0
+transitive2 - - ✗1.0.0 ✗1.0.0
transitive dev_dependencies:
-dev_trans ✗1.0.0 - ✗1.0.0 ✗2.0.0
-transitive3 - - ✗1.0.0 ✗1.0.0
+dev_trans ✗1.0.0 - ✗1.0.0 ✗2.0.0
+transitive3 - - ✗1.0.0 ✗1.0.0
3 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.
@@ -281,15 +281,15 @@
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.
-Package Name Current Upgradable Resolvable Latest
+Package Name Current Upgradable Resolvable Latest
direct dependencies:
-bar ✗1.0.0 ✗1.0.0 ✗1.0.0 ✗1.0.0
-foo ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0
-local_package ✗0.0.1 ✗0.0.1 ✗0.0.1 ✗0.0.1
+bar ✗1.0.0 ✗1.0.0 ✗1.0.0 ✗1.0.0
+foo ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗3.0.0
+local_package ✗0.0.1 (path) ✗0.0.1 (path) ✗0.0.1 (path) ✗0.0.1 (path)
dev_dependencies:
-builder ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗2.0.0
+builder ✗1.2.3 ✗1.3.0 ✗2.0.0 ✗2.0.0
2 upgradable dependencies are locked (in pubspec.lock) to older versions.
To update these dependencies, use `dart pub upgrade`.
diff --git a/test/outdated/outdated_test.dart b/test/outdated/outdated_test.dart
index 7d2b1cd..a882120 100644
--- a/test/outdated/outdated_test.dart
+++ b/test/outdated/outdated_test.dart
@@ -399,20 +399,26 @@
await variations('prereleases');
});
- test('ignores SDK dependencies', () async {
+ test('Handles SDK dependencies', () async {
await servePackages((builder) => builder
- ..serve('foo', '1.0.0')
- ..serve('foo', '1.1.0')
- ..serve('foo', '2.0.0'));
+ ..serve('foo', '1.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.10.0 <3.0.0'}
+ })
+ ..serve('foo', '1.1.0', pubspec: {
+ 'environment': {'sdk': '>=2.10.0 <3.0.0'}
+ })
+ ..serve('foo', '2.0.0', pubspec: {
+ 'environment': {'sdk': '>=2.12.0 <3.0.0'}
+ }));
await d.dir('flutter-root', [
d.file('version', '1.2.3'),
d.dir('packages', [
d.dir('flutter', [
- d.libPubspec('flutter', '1.0.0'),
+ d.libPubspec('flutter', '1.0.0', sdk: '>=2.12.0 <3.0.0'),
]),
d.dir('flutter_test', [
- d.libPubspec('flutter_test', '1.0.0'),
+ d.libPubspec('flutter_test', '1.0.0', sdk: '>=2.10.0 <3.0.0'),
]),
]),
]).create();
@@ -421,6 +427,7 @@
d.pubspec({
'name': 'app',
'version': '1.0.1',
+ 'environment': {'sdk': '>=2.12.0 <3.0.0'},
'dependencies': {
'foo': '^1.0.0',
'flutter': {
@@ -438,10 +445,12 @@
await pubGet(environment: {
'FLUTTER_ROOT': d.path('flutter-root'),
+ '_PUB_TEST_SDK_VERSION': '2.13.0'
});
- await variations('ignores_sdk_dependencies', environment: {
+ await variations('handles_sdk_dependencies', environment: {
'FLUTTER_ROOT': d.path('flutter-root'),
+ '_PUB_TEST_SDK_VERSION': '2.13.0'
});
});
}