From ff3c0c6e093a0c0aef7edf7195244f1987c7ce3c Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 27 Mar 2025 15:38:14 -0500 Subject: [PATCH] fix(shorebird_cli): `shorebird release linux` not forwarding args (#3020) --- .../src/commands/release/linux_releaser.dart | 2 + .../commands/release/linux_releaser_test.dart | 82 ++++++++++++------- 2 files changed, 56 insertions(+), 28 deletions(-) diff --git a/packages/shorebird_cli/lib/src/commands/release/linux_releaser.dart b/packages/shorebird_cli/lib/src/commands/release/linux_releaser.dart index b825ef09..54b22a02 100644 --- a/packages/shorebird_cli/lib/src/commands/release/linux_releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release/linux_releaser.dart @@ -76,6 +76,8 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''); @override Future buildReleaseArtifacts() async { await artifactBuilder.buildLinuxApp( + target: target, + args: argResults.forwardedArgs, base64PublicKey: argResults.encodedPublicKey, ); diff --git a/packages/shorebird_cli/test/src/commands/release/linux_releaser_test.dart b/packages/shorebird_cli/test/src/commands/release/linux_releaser_test.dart index 908b23c3..53ccfb44 100644 --- a/packages/shorebird_cli/test/src/commands/release/linux_releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/linux_releaser_test.dart @@ -259,6 +259,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''), () => artifactBuilder.buildLinuxApp( target: any(named: 'target'), args: any(named: 'args'), + base64PublicKey: any(named: 'base64PublicKey'), ), ).thenAnswer((_) async => projectRoot); }); @@ -269,37 +270,62 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''), ); expect(releaseDir, releaseDirectory); }); - }); - group('when public key is passed as an arg', () { - setUp(() { - when( - () => artifactBuilder.buildLinuxApp( - target: any(named: 'target'), - args: any(named: 'args'), - base64PublicKey: any(named: 'base64PublicKey'), - ), - ).thenAnswer((_) async => projectRoot); - when( - () => argResults.wasParsed(CommonArguments.publicKeyArg.name), - ).thenReturn(true); - when( - () => argResults[CommonArguments.publicKeyArg.name], - ).thenReturn('public_key'); - when( - () => codeSigner.base64PublicKey(any()), - ).thenReturn('encoded_public_key'); + group('when target and flavor are specified', () { + const flavor = 'my-flavor'; + const target = 'my-target'; + + setUp(() { + releaser = LinuxReleaser( + argResults: argResults, + flavor: flavor, + target: target, + ); + }); + + test('builds artifacts with flavor and target', () async { + await runWithOverrides(releaser.buildReleaseArtifacts); + verify( + () => artifactBuilder.buildLinuxApp(target: target, args: []), + ).called(1); + }); }); - test('passes public key to buildLinuxApp', () async { - await runWithOverrides(releaser.buildReleaseArtifacts); - verify( - () => artifactBuilder.buildLinuxApp( - base64PublicKey: 'encoded_public_key', - target: any(named: 'target'), - args: any(named: 'args'), - ), - ).called(1); + group('when additional args are specified', () { + final args = ['--build-number=0 --build-name=1.0.0+1']; + setUp(() { + when(() => argResults.rest).thenReturn(args); + }); + + test('forwards args to artifact builder', () async { + await runWithOverrides(releaser.buildReleaseArtifacts); + verify(() => artifactBuilder.buildLinuxApp(args: args)).called(1); + }); + }); + + group('when public key is passed as an arg', () { + setUp(() { + when( + () => argResults.wasParsed(CommonArguments.publicKeyArg.name), + ).thenReturn(true); + when( + () => argResults[CommonArguments.publicKeyArg.name], + ).thenReturn('public_key'); + when( + () => codeSigner.base64PublicKey(any()), + ).thenReturn('encoded_public_key'); + }); + + test('passes public key to buildLinuxApp', () async { + await runWithOverrides(releaser.buildReleaseArtifacts); + verify( + () => artifactBuilder.buildLinuxApp( + base64PublicKey: 'encoded_public_key', + target: any(named: 'target'), + args: any(named: 'args'), + ), + ).called(1); + }); }); });