fix(shorebird_cli): fix release status check in patch command (#2123)
This commit is contained in:
@@ -204,10 +204,7 @@ NOTE: this is ${styleBold.wrap('not')} recommended. Asset changes cannot be incl
|
||||
);
|
||||
}
|
||||
|
||||
codePushClientWrapper.ensureReleaseIsNotActive(
|
||||
release: release,
|
||||
platform: patcher.releaseType.releasePlatform,
|
||||
);
|
||||
assertReleaseIsActive(release: release, patcher: patcher);
|
||||
|
||||
try {
|
||||
await shorebirdFlutter.installRevision(revision: release.flutterRevision);
|
||||
@@ -285,6 +282,20 @@ NOTE: this is ${styleBold.wrap('not')} recommended. Asset changes cannot be incl
|
||||
);
|
||||
}
|
||||
|
||||
void assertReleaseIsActive({
|
||||
required Release release,
|
||||
required Patcher patcher,
|
||||
}) {
|
||||
final releaseStatus =
|
||||
release.platformStatuses[patcher.releaseType.releasePlatform];
|
||||
if (releaseStatus != ReleaseStatus.active) {
|
||||
logger.err('''
|
||||
Release ${release.version} is in an incomplete state. It's possible that the original release was terminated or failed to complete.
|
||||
Please re-run the release command for this version or create a new release.''');
|
||||
exit(ExitCode.software.code);
|
||||
}
|
||||
}
|
||||
|
||||
Future<DiffStatus> assertUnpatchableDiffs({
|
||||
required File releaseArtifact,
|
||||
required File patchArtifact,
|
||||
|
||||
@@ -441,10 +441,6 @@ void main() {
|
||||
appId: appId,
|
||||
releaseVersion: releaseVersion,
|
||||
),
|
||||
() => codePushClientWrapper.ensureReleaseIsNotActive(
|
||||
release: any(named: 'release'),
|
||||
platform: releasePlatform,
|
||||
),
|
||||
() => codePushClientWrapper.getReleaseArtifact(
|
||||
appId: appId,
|
||||
releaseId: release.id,
|
||||
@@ -499,10 +495,6 @@ void main() {
|
||||
choices: any(named: 'choices'),
|
||||
display: captureAny(named: 'display'),
|
||||
),
|
||||
() => codePushClientWrapper.ensureReleaseIsNotActive(
|
||||
release: any(named: 'release'),
|
||||
platform: releasePlatform,
|
||||
),
|
||||
() => codePushClientWrapper.getReleaseArtifact(
|
||||
appId: appId,
|
||||
releaseId: release.id,
|
||||
@@ -581,10 +573,6 @@ void main() {
|
||||
),
|
||||
() => patcher.buildPatchArtifact(),
|
||||
() => patcher.extractReleaseVersionFromArtifact(any()),
|
||||
() => codePushClientWrapper.ensureReleaseIsNotActive(
|
||||
release: any(named: 'release'),
|
||||
platform: releasePlatform,
|
||||
),
|
||||
() => shorebirdFlutter.installRevision(
|
||||
revision: releaseFlutterRevision,
|
||||
),
|
||||
@@ -663,6 +651,43 @@ void main() {
|
||||
});
|
||||
});
|
||||
|
||||
group('when the target release is in a draft state', () {
|
||||
setUp(() {
|
||||
when(
|
||||
() => codePushClientWrapper.getRelease(
|
||||
appId: any(named: 'appId'),
|
||||
releaseVersion: any(named: 'releaseVersion'),
|
||||
),
|
||||
).thenAnswer(
|
||||
(_) async => Release(
|
||||
id: 0,
|
||||
appId: appId,
|
||||
version: releaseVersion,
|
||||
flutterRevision: flutterRevision,
|
||||
displayName: '1.2.3+1',
|
||||
platformStatuses: {releasePlatform: ReleaseStatus.draft},
|
||||
createdAt: DateTime(2023),
|
||||
updatedAt: DateTime(2023),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
test('logs error and exits with code 70', () async {
|
||||
await expectLater(
|
||||
() => runWithOverrides(command.run),
|
||||
exitsWithCode(ExitCode.software),
|
||||
);
|
||||
|
||||
verify(
|
||||
() => logger.err(
|
||||
'''
|
||||
Release ${release.version} is in an incomplete state. It's possible that the original release was terminated or failed to complete.
|
||||
Please re-run the release command for this version or create a new release.''',
|
||||
),
|
||||
).called(1);
|
||||
});
|
||||
});
|
||||
|
||||
group('when primary release artifact fails to download', () {
|
||||
final error = Exception('Failed to download primary release artifact.');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user