don't warn if previous prerelease was null safe (#2730)
diff --git a/lib/src/validator/relative_version_numbering.dart b/lib/src/validator/relative_version_numbering.dart
index fc3a902..1eff1e0 100644
--- a/lib/src/validator/relative_version_numbering.dart
+++ b/lib/src/validator/relative_version_numbering.dart
@@ -38,8 +38,7 @@
}
existingVersions..sort((a, b) => a.version.compareTo(b.version));
final previousVersion = existingVersions.lastWhere(
- (id) =>
- !id.version.isPreRelease && id.version < entrypoint.root.version,
+ (id) => id.version < entrypoint.root.version,
orElse: () => null);
if (previousVersion == null) return;
diff --git a/test/validator/relative_version_numbering_test.dart b/test/validator/relative_version_numbering_test.dart
index 3cb69b2..35994e2 100644
--- a/test/validator/relative_version_numbering_test.dart
+++ b/test/validator/relative_version_numbering_test.dart
@@ -71,31 +71,6 @@
await expectValidation(validator);
});
- test(
- 'is not opting in to null-safety with previous non-null-safe version. '
- 'Even with an in-between null-safe prerelease', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
- );
-
- await setup(sdkConstraint: '>=2.9.0 <3.0.0');
- await expectValidation(validator);
- });
-
test('is opting in to null-safety with previous null-safe version',
() async {
await servePackages(
@@ -154,9 +129,22 @@
await expectValidation(validator);
});
+ test('is opting in to null-safety with no existing versions', () async {
+ await setup(sdkConstraint: '>=2.12.0 <3.0.0');
+ await servePackages((x) => x);
+ await expectValidation(validator);
+ });
+
+ test('is not opting in to null-safety with no existing versions', () async {
+ await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+ await servePackages((x) => x);
+
+ await expectValidation(validator);
+ });
+
test(
- 'is opting in to null-safety with previous null-safe version. '
- 'Even with an in-between non-null-safe prerelease', () async {
+ 'is not opting in to null-safety with previous null-safe stable version. '
+ 'With an in-between not null-safe prerelease', () async {
await servePackages(
(server) => server
..serve(
@@ -175,53 +163,32 @@
),
);
- await setup(sdkConstraint: '>=2.12.0 <3.0.0');
- await expectValidation(validator);
- });
-
- test('is opting in to null-safety with no existing versions', () async {
- await setup(sdkConstraint: '>=2.12.0 <3.0.0');
- await servePackages((x) => x);
+ await setup(sdkConstraint: '>=2.9.0 <3.0.0');
await expectValidation(validator);
});
test(
- 'is opting in to null-safety with no existing versions. '
- 'Even with an in-between non-null-safe prerelease', () async {
+ 'opts in to null-safety, with previous stable version not-null-safe. '
+ 'With an in-between non-null-safe prerelease', () async {
+ await servePackages(
+ (server) => server
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ ),
+ );
+
await setup(sdkConstraint: '>=2.12.0 <3.0.0');
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- ),
- );
- await expectValidation(validator);
- });
-
- test('is not opting in to null-safety with no existing versions', () async {
- await setup(sdkConstraint: '>=2.9.0 <3.0.0');
- await servePackages((x) => x);
-
- await expectValidation(validator);
- });
-
- test(
- 'is not opting in to null-safety with no existing versions. '
- 'Even with an in-between null-safe prerelease', () async {
- await setup(sdkConstraint: '>=2.9.0 <3.0.0');
- await servePackages(
- (server) => server.serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
- );
-
await expectValidation(validator);
});
});
@@ -244,6 +211,47 @@
});
test(
+ 'is not opting in to null-safety with no existing stable versions. '
+ 'With a previous in-between null-safe prerelease', () async {
+ await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+ await servePackages(
+ (server) => server.serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ ),
+ );
+
+ await expectValidation(validator, hints: isNotEmpty);
+ });
+ test(
+ 'is not opting in to null-safety with previous non-null-safe stable version. '
+ 'With an in-between null-safe prerelease', () async {
+ await servePackages(
+ (server) => server
+ ..serve(
+ 'test_pkg',
+ '0.0.1',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ )
+ ..serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.12.0<3.0.0'}
+ },
+ ),
+ );
+
+ await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+ await expectValidation(validator, hints: isNotEmpty);
+ });
+
+ test(
'opts in to null-safety, with previous version not-null-safe. '
'Even with a later null-safe version', () async {
await servePackages(
@@ -268,31 +276,6 @@
await expectValidation(validator, hints: isNotEmpty);
});
- test(
- 'opts in to null-safety, with previous version not-null-safe. '
- 'Even with an in-between non-null-safe prerelease', () async {
- await servePackages(
- (server) => server
- ..serve(
- 'test_pkg',
- '0.0.1',
- pubspec: {
- 'environment': {'sdk': '>=2.9.0<3.0.0'}
- },
- )
- ..serve(
- 'test_pkg',
- '0.0.2-dev',
- pubspec: {
- 'environment': {'sdk': '>=2.12.0<3.0.0'}
- },
- ),
- );
-
- await setup(sdkConstraint: '>=2.12.0 <3.0.0');
- await expectValidation(validator, hints: isNotEmpty);
- });
-
test('is not opting in to null-safety with previous null-safe version',
() async {
await servePackages(
@@ -335,8 +318,8 @@
});
test(
- 'is not opting in to null-safety with previous null-safe version. '
- 'Even with an in-between not null-safe prerelease', () async {
+ 'is opting in to null-safety with previous null-safe stable version. '
+ 'with an in-between non-null-safe prerelease', () async {
await servePackages(
(server) => server
..serve(
@@ -355,7 +338,23 @@
),
);
- await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+ await setup(sdkConstraint: '>=2.12.0 <3.0.0');
+ await expectValidation(validator, hints: isNotEmpty);
+ });
+
+ test(
+ 'is opting in to null-safety with no existing stable versions. '
+ 'With a previous non-null-safe prerelease', () async {
+ await setup(sdkConstraint: '>=2.12.0 <3.0.0');
+ await servePackages(
+ (server) => server.serve(
+ 'test_pkg',
+ '0.0.2-dev',
+ pubspec: {
+ 'environment': {'sdk': '>=2.9.0<3.0.0'}
+ },
+ ),
+ );
await expectValidation(validator, hints: isNotEmpty);
});
});