compatibleWith(): implement toString() and use to parse ^
diff --git a/pkgs/pub_semver/lib/src/version_constraint.dart b/pkgs/pub_semver/lib/src/version_constraint.dart index 0cd45b6..f67375f 100644 --- a/pkgs/pub_semver/lib/src/version_constraint.dart +++ b/pkgs/pub_semver/lib/src/version_constraint.dart
@@ -112,8 +112,7 @@ '"^" constraint "$constraint" in "$originalText".'); } - return new VersionRange(min: version, includeMin: true, - max: version.nextBreaking); + return new VersionConstraint.compatibleWith(version); } while (true) { @@ -156,10 +155,8 @@ /// Versions are considered backward compatible with [version] if they /// are greater than or equal to [version], but less than the next breaking /// version ([Version.nextBreaking]) of [version]. - factory VersionConstraint.compatibleWith(Version version) { - return new VersionRange(min: version, includeMin: true, - max: version.nextBreaking); - } + factory VersionConstraint.compatibleWith(Version version) => + new _CompatibleWithVersionRange(version); /// Creates a new version constraint that is the intersection of /// [constraints]. @@ -199,3 +196,11 @@ VersionConstraint intersect(VersionConstraint other) => this; String toString() => '<empty>'; } + +class _CompatibleWithVersionRange extends VersionRange { + _CompatibleWithVersionRange(Version version) : super( + min: version, includeMin: true, + max: version.nextBreaking, includeMax: false); + + String toString() => '^$min'; +}
diff --git a/pkgs/pub_semver/test/version_constraint_test.dart b/pkgs/pub_semver/test/version_constraint_test.dart index 316d57d..9ba6905 100644 --- a/pkgs/pub_semver/test/version_constraint_test.dart +++ b/pkgs/pub_semver/test/version_constraint_test.dart
@@ -174,10 +174,18 @@ }); }); - test('compatibleWith', () { - var constraint = new VersionConstraint.compatibleWith(v072); + group('compatibleWith()', () { + test('returns the range of compatible versions', () { + var constraint = new VersionConstraint.compatibleWith(v072); - expect(constraint, equals(new VersionRange(min: v072, includeMin: true, - max: v072.nextBreaking))); + expect(constraint, equals(new VersionRange(min: v072, includeMin: true, + max: v072.nextBreaking))); + }); + + test('toString() uses "^"', () { + var constraint = new VersionConstraint.compatibleWith(v072); + + expect(constraint.toString(), equals('^0.7.2')); + }); }); }