From 3a1cfd53c153625f157c5b6e8fd3cb2135095add Mon Sep 17 00:00:00 2001 From: Sigurd Meldgaard Date: Fri, 20 Jan 2023 16:28:28 +0000 Subject: [PATCH 1/2] Use bold to distinguish package names in solve-traces --- lib/src/package_name.dart | 5 +++-- lib/src/solver/incompatibility.dart | 11 ++++++---- test/version_solver_test.dart | 31 ++++++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/lib/src/package_name.dart b/lib/src/package_name.dart index af1a24cd1..a4b2f80a9 100644 --- a/lib/src/package_name.dart +++ b/lib/src/package_name.dart @@ -4,6 +4,7 @@ import 'package:pub_semver/pub_semver.dart'; +import 'log.dart'; import 'package.dart'; import 'source.dart'; import 'source/hosted.dart'; @@ -153,10 +154,10 @@ class PackageRange { PackageRef toRef() => _ref; @override - String toString([PackageDetail? detail]) { + String toString({PackageDetail? detail, bool boldName = false}) { detail ??= PackageDetail.defaults; - var buffer = StringBuffer(name); + var buffer = StringBuffer(boldName ? bold(name) : name); if (detail.showVersion ?? _showVersionConstraint) { buffer.write(' $constraint'); } diff --git a/lib/src/solver/incompatibility.dart b/lib/src/solver/incompatibility.dart index 8b815019c..5dcd64513 100644 --- a/lib/src/solver/incompatibility.dart +++ b/lib/src/solver/incompatibility.dart @@ -4,6 +4,7 @@ import 'package:pub_semver/pub_semver.dart'; +import '../log.dart'; import '../package_name.dart'; import 'incompatibility_cause.dart'; import 'term.dart'; @@ -476,9 +477,9 @@ class Incompatibility { /// Returns a terse representation of [term]'s package ref. String _terseRef(Term term, Map? details) => - term.package + bold(term.package .toRef() - .toString(details == null ? null : details[term.package.name]); + .toString(details == null ? null : details[term.package.name])); /// Returns a terse representation of [term]'s package. /// @@ -492,8 +493,10 @@ class Incompatibility { if (allowEvery && term!.constraint.isAny) { return 'every version of ${_terseRef(term, details)}'; } else { - return term!.package - .toString(details == null ? null : details[term.package.name]); + return term!.package.toString( + detail: details == null ? null : details[term.package.name], + boldName: true, + ); } } } diff --git a/test/version_solver_test.dart b/test/version_solver_test.dart index 394859ed2..d17132b95 100644 --- a/test/version_solver_test.dart +++ b/test/version_solver_test.dart @@ -7,6 +7,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; import 'package:pub/src/lock_file.dart'; +import 'package:pub/src/log.dart'; import 'package:pub/src/pubspec.dart'; import 'package:pub/src/source/hosted.dart'; import 'package:pub/src/system_cache.dart'; @@ -3037,9 +3038,10 @@ Future expectResolves({ int? tries, Map? environment, bool downgrade = false, + bool colors = false, }) async { await runPub( - args: [downgrade ? 'downgrade' : 'get'], + args: [if (colors) '--color', downgrade ? 'downgrade' : 'get'], environment: environment, output: output ?? (error == null @@ -3132,4 +3134,31 @@ void regressions() { environment: {'FLUTTER_ROOT': p.join(d.sandbox, 'flutter')}, ); }); + test('uses colors to highlight package names in solve-traces', () async { + await d.dir('a', [d.libPubspec('a', '1.0.0')]).create(); + + await servePackages() + ..serve('a', '1.0.0') + ..serve( + 'b', + '1.0.0', + deps: { + 'a': {'path': p.join(d.sandbox, 'shared')} + }, + ) + ..serve('c', '1.0.0') + ..serve('c', '2.0.0') + ..serve('c', '3.0.0') + ..serve('c', '4.0.0') + ..serve('c', '5.0.0'); + + await d.appDir(dependencies: {'a': 'any', 'b': 'any', 'c': 'any'}).create(); + await expectResolves( + error: ''' +Because every version of ${bold('b')} depends on ${bold('a')} from path and ${bold('myapp')} depends on ${bold('a')} from hosted, ${bold('${bold('b')} is forbidden')}. +So, because ${bold('myapp')} depends on ${bold('b')} any, ${bold('version solving failed')}. +''', + colors: true, + ); + }); } From 7517edda22b1d8370f86586675b6fed9faeba4a4 Mon Sep 17 00:00:00 2001 From: Sigurd Meldgaard Date: Fri, 20 Jan 2023 16:34:08 +0000 Subject: [PATCH 2/2] trailing comma --- lib/src/solver/incompatibility.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/src/solver/incompatibility.dart b/lib/src/solver/incompatibility.dart index 5dcd64513..d1522c235 100644 --- a/lib/src/solver/incompatibility.dart +++ b/lib/src/solver/incompatibility.dart @@ -476,10 +476,11 @@ class Incompatibility { } /// Returns a terse representation of [term]'s package ref. - String _terseRef(Term term, Map? details) => - bold(term.package - .toRef() - .toString(details == null ? null : details[term.package.name])); + String _terseRef(Term term, Map? details) => bold( + term.package + .toRef() + .toString(details == null ? null : details[term.package.name]), + ); /// Returns a terse representation of [term]'s package. ///