From 4ff2c1a942dec0171a663db14da27ca54225fde2 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 3 Aug 2023 16:29:45 -0500 Subject: [PATCH] fix(shorebird_cli): flutter revision detection in `shorebird release` (#1017) --- .../commands/release/release_aar_command.dart | 16 +---------- .../release/release_android_command.dart | 16 +---------- .../commands/release/release_ios_command.dart | 16 +---------- .../release_ios_framework_command.dart | 16 +---------- .../release/release_aar_command_test.dart | 23 +-------------- .../release/release_android_command_test.dart | 23 +-------------- .../release/release_ios_command_test.dart | 28 +------------------ .../release_ios_framework_command_test.dart | 28 +------------------ 8 files changed, 8 insertions(+), 158 deletions(-) diff --git a/packages/shorebird_cli/lib/src/commands/release/release_aar_command.dart b/packages/shorebird_cli/lib/src/commands/release/release_aar_command.dart index dde6c8b4..35b44c1c 100644 --- a/packages/shorebird_cli/lib/src/commands/release/release_aar_command.dart +++ b/packages/shorebird_cli/lib/src/commands/release/release_aar_command.dart @@ -12,7 +12,6 @@ import 'package:shorebird_cli/src/shorebird_build_mixin.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_release_version_mixin.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; /// {@template release_aar_command} @@ -135,19 +134,6 @@ ${summary.join('\n')} } } - final flutterRevisionProgress = logger.progress( - 'Fetching Flutter revision', - ); - final String shorebirdFlutterRevision; - try { - shorebirdFlutterRevision = - await shorebirdVersionManager.fetchCurrentGitHash(); - flutterRevisionProgress.complete(); - } catch (error) { - flutterRevisionProgress.fail('$error'); - return ExitCode.software.code; - } - final Release release; if (existingRelease != null) { release = existingRelease; @@ -161,7 +147,7 @@ ${summary.join('\n')} release = await codePushClientWrapper.createRelease( appId: appId, version: releaseVersion, - flutterRevision: shorebirdFlutterRevision, + flutterRevision: shorebirdEnv.flutterRevision, platform: platform, ); } diff --git a/packages/shorebird_cli/lib/src/commands/release/release_android_command.dart b/packages/shorebird_cli/lib/src/commands/release/release_android_command.dart index d3fadad6..4362af03 100644 --- a/packages/shorebird_cli/lib/src/commands/release/release_android_command.dart +++ b/packages/shorebird_cli/lib/src/commands/release/release_android_command.dart @@ -11,7 +11,6 @@ import 'package:shorebird_cli/src/shorebird_build_mixin.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_release_version_mixin.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; /// {@template release_android_command} @@ -161,19 +160,6 @@ ${summary.join('\n')} } } - final flutterRevisionProgress = logger.progress( - 'Fetching Flutter revision', - ); - final String shorebirdFlutterRevision; - try { - shorebirdFlutterRevision = - await shorebirdVersionManager.fetchCurrentGitHash(); - flutterRevisionProgress.complete(); - } catch (error) { - flutterRevisionProgress.fail('$error'); - return ExitCode.software.code; - } - final Release release; if (existingRelease != null) { release = existingRelease; @@ -187,7 +173,7 @@ ${summary.join('\n')} release = await codePushClientWrapper.createRelease( appId: appId, version: releaseVersion, - flutterRevision: shorebirdFlutterRevision, + flutterRevision: shorebirdEnv.flutterRevision, platform: platform, ); } diff --git a/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart b/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart index 38d1472f..2e55e1b5 100644 --- a/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart +++ b/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart @@ -14,7 +14,6 @@ import 'package:shorebird_cli/src/shorebird_artifact_mixin.dart'; import 'package:shorebird_cli/src/shorebird_build_mixin.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; /// {@template release_ios_command} @@ -160,19 +159,6 @@ ${summary.join('\n')} } } - final flutterRevisionProgress = logger.progress( - 'Fetching Flutter revision', - ); - final String shorebirdFlutterRevision; - try { - shorebirdFlutterRevision = - await shorebirdVersionManager.fetchCurrentGitHash(); - flutterRevisionProgress.complete(); - } catch (error) { - flutterRevisionProgress.fail('$error'); - return ExitCode.software.code; - } - final Release release; if (existingRelease != null) { release = existingRelease; @@ -186,7 +172,7 @@ ${summary.join('\n')} release = await codePushClientWrapper.createRelease( appId: appId, version: releaseVersion, - flutterRevision: shorebirdFlutterRevision, + flutterRevision: shorebirdEnv.flutterRevision, platform: releasePlatform, ); } diff --git a/packages/shorebird_cli/lib/src/commands/release/release_ios_framework_command.dart b/packages/shorebird_cli/lib/src/commands/release/release_ios_framework_command.dart index 32baa342..e45f1cde 100644 --- a/packages/shorebird_cli/lib/src/commands/release/release_ios_framework_command.dart +++ b/packages/shorebird_cli/lib/src/commands/release/release_ios_framework_command.dart @@ -12,7 +12,6 @@ import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/shorebird_build_mixin.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; class ReleaseIosFrameworkCommand extends ShorebirdCommand @@ -108,19 +107,6 @@ ${summary.join('\n')} } } - final flutterRevisionProgress = logger.progress( - 'Fetching Flutter revision', - ); - final String shorebirdFlutterRevision; - try { - shorebirdFlutterRevision = - await shorebirdVersionManager.fetchCurrentGitHash(); - flutterRevisionProgress.complete(); - } catch (error) { - flutterRevisionProgress.fail('$error'); - return ExitCode.software.code; - } - final Release release; if (existingRelease != null) { release = existingRelease; @@ -128,7 +114,7 @@ ${summary.join('\n')} release = await codePushClientWrapper.createRelease( appId: appId, version: releaseVersion, - flutterRevision: shorebirdFlutterRevision, + flutterRevision: shorebirdEnv.flutterRevision, platform: releasePlatform, ); } diff --git a/packages/shorebird_cli/test/src/commands/release/release_aar_command_test.dart b/packages/shorebird_cli/test/src/commands/release/release_aar_command_test.dart index c7e84c6c..806ce104 100644 --- a/packages/shorebird_cli/test/src/commands/release/release_aar_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/release_aar_command_test.dart @@ -18,7 +18,6 @@ import 'package:shorebird_cli/src/process.dart'; import 'package:shorebird_cli/src/shorebird_build_mixin.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; import 'package:test/test.dart'; @@ -47,9 +46,6 @@ class _MockShorebirdEnv extends Mock implements ShorebirdEnv {} class _MockShorebirdValidator extends Mock implements ShorebirdValidator {} -class _MockShorebirdVersionManager extends Mock - implements ShorebirdVersionManager {} - class _FakeRelease extends Fake implements Release {} class _FakeShorebirdProcess extends Fake implements ShorebirdProcess {} @@ -89,7 +85,6 @@ void main() { late ShorebirdEnv shorebirdEnv; late ShorebirdProcess shorebirdProcess; late ShorebirdValidator shorebirdValidator; - late ShorebirdVersionManager shorebirdVersionManager; late ReleaseAarCommand command; R runWithOverrides(R Function() body) { @@ -105,9 +100,6 @@ void main() { processRef.overrideWith(() => shorebirdProcess), shorebirdEnvRef.overrideWith(() => shorebirdEnv), shorebirdValidatorRef.overrideWith(() => shorebirdValidator), - shorebirdVersionManagerRef.overrideWith( - () => shorebirdVersionManager, - ), }, ); } @@ -163,7 +155,6 @@ void main() { shorebirdRoot = Directory.systemTemp.createTempSync(); shorebirdEnv = _MockShorebirdEnv(); shorebirdValidator = _MockShorebirdValidator(); - shorebirdVersionManager = _MockShorebirdVersionManager(); when(() => auth.client).thenReturn(httpClient); when(() => argResults['build-number']).thenReturn(buildNumber); @@ -178,6 +169,7 @@ void main() { when( () => shorebirdEnv.androidPackageName, ).thenReturn(androidPackageName); + when(() => shorebirdEnv.flutterRevision).thenReturn(flutterRevision); when( () => flutterBuildProcessResult.exitCode, @@ -241,9 +233,6 @@ void main() { checkShorebirdInitialized: any(named: 'checkShorebirdInitialized'), ), ).thenAnswer((_) async {}); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenAnswer((_) async => flutterRevision); command = runWithOverrides( () => ReleaseAarCommand(unzipFn: (_, __) async {}), @@ -322,16 +311,6 @@ void main() { verify(() => logger.info('Aborting.')).called(1); }); - test('throws error when unable to detect flutter revision', () async { - final exception = Exception('oops'); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenThrow(exception); - final exitCode = await runWithOverrides(command.run); - expect(exitCode, ExitCode.software.code); - verify(() => progress.fail('$exception')).called(1); - }); - test('does not prompt for confirmation when --force is used', () async { when(() => argResults['force']).thenReturn(true); final tempDir = setUpTempArtifacts(); diff --git a/packages/shorebird_cli/test/src/commands/release/release_android_command_test.dart b/packages/shorebird_cli/test/src/commands/release/release_android_command_test.dart index aa6bb73c..e430fe5c 100644 --- a/packages/shorebird_cli/test/src/commands/release/release_android_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/release_android_command_test.dart @@ -20,7 +20,6 @@ import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/process.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_cli/src/validators/validators.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; import 'package:test/test.dart'; @@ -57,9 +56,6 @@ class _MockShorebirdEnv extends Mock implements ShorebirdEnv {} class _MockShorebirdValidator extends Mock implements ShorebirdValidator {} -class _MockShorebirdVersionManager extends Mock - implements ShorebirdVersionManager {} - class _MockJava extends Mock implements Java {} class _FakeRelease extends Fake implements Release {} @@ -106,7 +102,6 @@ void main() { late ShorebirdProcess shorebirdProcess; late ShorebirdEnv shorebirdEnv; late ShorebirdValidator shorebirdValidator; - late ShorebirdVersionManager shorebirdVersionManager; late ReleaseAndroidCommand command; R runWithOverrides(R Function() body) { @@ -125,9 +120,6 @@ void main() { processRef.overrideWith(() => shorebirdProcess), shorebirdEnvRef.overrideWith(() => shorebirdEnv), shorebirdValidatorRef.overrideWith(() => shorebirdValidator), - shorebirdVersionManagerRef.overrideWith( - () => shorebirdVersionManager, - ), }, ); } @@ -157,10 +149,10 @@ void main() { shorebirdProcess = _MockShorebirdProcess(); shorebirdEnv = _MockShorebirdEnv(); shorebirdValidator = _MockShorebirdValidator(); - shorebirdVersionManager = _MockShorebirdVersionManager(); when(() => shorebirdEnv.getShorebirdYaml()).thenReturn(shorebirdYaml); when(() => shorebirdEnv.shorebirdRoot).thenReturn(shorebirdRoot); + when(() => shorebirdEnv.flutterRevision).thenReturn(flutterRevision); when( () => shorebirdProcess.run( @@ -247,9 +239,6 @@ void main() { supportedOperatingSystems: any(named: 'supportedOperatingSystems'), ), ).thenAnswer((_) async {}); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenAnswer((_) async => flutterRevision); command = runWithOverrides(ReleaseAndroidCommand.new) ..testArgResults = argResults; @@ -329,16 +318,6 @@ void main() { ); }); - test('throws error when unable to detect flutter revision', () async { - final exception = Exception('oops'); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenThrow(exception); - final exitCode = await runWithOverrides(command.run); - expect(exitCode, ExitCode.software.code); - verify(() => progress.fail('$exception')).called(1); - }); - test( 'does not prompt for confirmation ' 'when --release-version and --force are used', () async { diff --git a/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart b/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart index 93549d19..2ac0e512 100644 --- a/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart @@ -18,7 +18,6 @@ import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/process.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_cli/src/validators/validators.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; import 'package:test/test.dart'; @@ -53,9 +52,6 @@ class _MockShorebirdEnv extends Mock implements ShorebirdEnv {} class _MockShorebirdValidator extends Mock implements ShorebirdValidator {} -class _MockShorebirdVersionManager extends Mock - implements ShorebirdVersionManager {} - class _FakeRelease extends Fake implements Release {} class _FakeShorebirdProcess extends Fake implements ShorebirdProcess {} @@ -115,7 +111,6 @@ flutter: late ShorebirdProcess shorebirdProcess; late ShorebirdEnv shorebirdEnv; late ShorebirdValidator shorebirdValidator; - late ShorebirdVersionManager shorebirdVersionManager; late ReleaseIosCommand command; R runWithOverrides(R Function() body) { @@ -130,9 +125,6 @@ flutter: processRef.overrideWith(() => shorebirdProcess), shorebirdEnvRef.overrideWith(() => shorebirdEnv), shorebirdValidatorRef.overrideWith(() => shorebirdValidator), - shorebirdVersionManagerRef.overrideWith( - () => shorebirdVersionManager, - ), }, ); } @@ -177,10 +169,10 @@ flutter: shorebirdProcess = _MockShorebirdProcess(); shorebirdEnv = _MockShorebirdEnv(); shorebirdValidator = _MockShorebirdValidator(); - shorebirdVersionManager = _MockShorebirdVersionManager(); when(() => shorebirdEnv.getShorebirdYaml()).thenReturn(shorebirdYaml); when(() => shorebirdEnv.shorebirdRoot).thenReturn(shorebirdRoot); + when(() => shorebirdEnv.flutterRevision).thenReturn(flutterRevision); when( () => shorebirdProcess.run( 'flutter', @@ -252,9 +244,6 @@ flutter: supportedOperatingSystems: any(named: 'supportedOperatingSystems'), ), ).thenAnswer((_) async {}); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenAnswer((_) async => flutterRevision); command = runWithOverrides(() => ReleaseIosCommand(ipaReader: ipaReader)) ..testArgResults = argResults; @@ -450,21 +439,6 @@ error: exportArchive: No signing certificate "iOS Distribution" found ).called(1); }); - test('throws error when unable to detect flutter revision', () async { - final exception = Exception('oops'); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenThrow(exception); - final tempDir = setUpTempDir(); - - final exitCode = await IOOverrides.runZoned( - () => runWithOverrides(command.run), - getCurrentDirectory: () => tempDir, - ); - expect(exitCode, ExitCode.software.code); - verify(() => progress.fail('$exception')).called(1); - }); - test( 'does not prompt for confirmation ' 'when --release-version and --force are used', () async { diff --git a/packages/shorebird_cli/test/src/commands/release/release_ios_framework_command_test.dart b/packages/shorebird_cli/test/src/commands/release/release_ios_framework_command_test.dart index 6d360eff..f7ed7a77 100644 --- a/packages/shorebird_cli/test/src/commands/release/release_ios_framework_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/release_ios_framework_command_test.dart @@ -16,7 +16,6 @@ import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/process.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; -import 'package:shorebird_cli/src/shorebird_version_manager.dart'; import 'package:shorebird_cli/src/validators/validators.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; import 'package:test/test.dart'; @@ -47,9 +46,6 @@ class _MockShorebirdEnv extends Mock implements ShorebirdEnv {} class _MockShorebirdValidator extends Mock implements ShorebirdValidator {} -class _MockShorebirdVersionManager extends Mock - implements ShorebirdVersionManager {} - class _FakeRelease extends Fake implements Release {} class _FakeShorebirdProcess extends Fake implements ShorebirdProcess {} @@ -96,7 +92,6 @@ flutter: late ShorebirdProcess shorebirdProcess; late ShorebirdEnv shorebirdEnv; late ShorebirdValidator shorebirdValidator; - late ShorebirdVersionManager shorebirdVersionManager; late ReleaseIosFrameworkCommand command; R runWithOverrides(R Function() body) { @@ -111,9 +106,6 @@ flutter: processRef.overrideWith(() => shorebirdProcess), shorebirdEnvRef.overrideWith(() => shorebirdEnv), shorebirdValidatorRef.overrideWith(() => shorebirdValidator), - shorebirdVersionManagerRef.overrideWith( - () => shorebirdVersionManager, - ), }, ); } @@ -150,10 +142,10 @@ flutter: shorebirdProcess = _MockShorebirdProcess(); shorebirdEnv = _MockShorebirdEnv(); shorebirdValidator = _MockShorebirdValidator(); - shorebirdVersionManager = _MockShorebirdVersionManager(); when(() => shorebirdEnv.getShorebirdYaml()).thenReturn(shorebirdYaml); when(() => shorebirdEnv.shorebirdRoot).thenReturn(shorebirdRoot); + when(() => shorebirdEnv.flutterRevision).thenReturn(flutterRevision); when( () => shorebirdProcess.run( 'flutter', @@ -218,9 +210,6 @@ flutter: supportedOperatingSystems: any(named: 'supportedOperatingSystems'), ), ).thenAnswer((_) async {}); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenAnswer((_) async => flutterRevision); command = runWithOverrides(ReleaseIosFrameworkCommand.new) ..testArgResults = argResults; @@ -314,21 +303,6 @@ flutter: ); }); - test('throws error when unable to detect flutter revision', () async { - final exception = Exception('oops'); - when( - () => shorebirdVersionManager.fetchCurrentGitHash(), - ).thenThrow(exception); - final tempDir = setUpTempDir(); - - final exitCode = await IOOverrides.runZoned( - () => runWithOverrides(command.run), - getCurrentDirectory: () => tempDir, - ); - expect(exitCode, ExitCode.software.code); - verify(() => progress.fail('$exception')).called(1); - }); - test( 'does not prompt for confirmation ' 'when --release-version and --force are used', () async {