@@ -1030,6 +1030,91 @@ describe('SAM runSync', () => {
10301030 prompterTester . assertCallAll ( )
10311031 } )
10321032
1033+ it ( '[entry: command palette] specify and save flag (with --watch) should save params before starting SAM process' , async ( ) => {
1034+ const prompterTester = PrompterTester . init ( )
1035+ . handleQuickPick ( 'Select a SAM/CloudFormation Template' , async ( quickPick ) => {
1036+ // Need sometime to wait for the template to search for template file
1037+ await quickPick . untilReady ( )
1038+ assert . strictEqual ( quickPick . items [ 0 ] . label , templateFile . fsPath )
1039+ quickPick . acceptItem ( quickPick . items [ 0 ] )
1040+ } )
1041+ . handleQuickPick ( 'Specify parameter source for sync' , async ( picker ) => {
1042+ // Need time to check samconfig.toml file and generate options
1043+ await picker . untilReady ( )
1044+ assert . strictEqual ( picker . items [ 0 ] . label , 'Specify required parameters and save as defaults' )
1045+ picker . acceptItem ( picker . items [ 0 ] )
1046+ } )
1047+ . handleQuickPick ( 'Select a region' , ( quickPick ) => {
1048+ const select = quickPick . items . filter ( ( i ) => i . detail === 'us-west-2' ) [ 0 ]
1049+ quickPick . acceptItem ( select || quickPick . items [ 0 ] )
1050+ } )
1051+ . handleQuickPick ( 'Select a CloudFormation Stack' , async ( picker ) => {
1052+ await picker . untilReady ( )
1053+ assert . strictEqual ( picker . items [ 2 ] . label , 'stack3' )
1054+ picker . acceptItem ( picker . items [ 2 ] )
1055+ } )
1056+ . handleQuickPick ( 'Specify S3 bucket for deployment artifacts' , async ( picker ) => {
1057+ await picker . untilReady ( )
1058+ assert . strictEqual ( picker . items . length , 2 )
1059+ assert . strictEqual ( picker . items [ 0 ] . label , 'Create a SAM CLI managed S3 bucket' )
1060+ picker . acceptItem ( picker . items [ 0 ] )
1061+ } )
1062+ . handleQuickPick ( 'Specify parameters for sync' , async ( picker ) => {
1063+ await picker . untilReady ( )
1064+ assert . strictEqual ( picker . items . length , 9 )
1065+ const dependencyLayer = picker . items . filter ( ( item ) => item . label === 'Dependency layer' ) [ 0 ]
1066+ const useContainer = picker . items . filter ( ( item ) => item . label === 'Use container' ) [ 0 ]
1067+ const watch = picker . items . filter ( ( item ) => item . label === 'Watch' ) [ 0 ]
1068+ picker . acceptItems ( dependencyLayer , useContainer , watch )
1069+ } )
1070+ . build ( )
1071+
1072+ // Invoke sync command from command palette
1073+ await runSync ( 'code' , undefined )
1074+
1075+ assert ( mockGetSamCliPath . calledOnce )
1076+ assert ( mockChildProcessClass . calledOnce )
1077+ assert . deepEqual ( mockChildProcessClass . getCall ( 0 ) . args , [
1078+ 'sam-cli-path' ,
1079+ [
1080+ 'sync' ,
1081+ '--code' ,
1082+ '--template' ,
1083+ `${ templateFile . fsPath } ` ,
1084+ '--stack-name' ,
1085+ 'stack3' ,
1086+ '--region' ,
1087+ 'us-west-2' ,
1088+ '--no-dependency-layer' ,
1089+ '--save-params' ,
1090+ '--dependency-layer' ,
1091+ '--use-container' ,
1092+ '--watch' ,
1093+ ] ,
1094+ {
1095+ spawnOptions : {
1096+ cwd : projectRoot ?. fsPath ,
1097+ env : {
1098+ AWS_TOOLING_USER_AGENT : 'AWS-Toolkit-For-VSCode/testPluginVersion' ,
1099+ SAM_CLI_TELEMETRY : '0' ,
1100+ } ,
1101+ } ,
1102+ } ,
1103+ ] )
1104+ assert ( mockGetSpawnEnv . calledOnce )
1105+ assert ( spyRunInterminal . calledOnce )
1106+ assert . deepEqual ( spyRunInterminal . getCall ( 0 ) . args , [ mockSamSyncChildProcess , 'sync' ] )
1107+ assert . strictEqual ( spyWriteSamconfigGlobal . callCount , 2 )
1108+ assert ( spyWriteSamconfigGlobal . calledBefore ( spyRunInterminal ) )
1109+ // Check telementry
1110+ assertTelemetry ( 'sam_sync' , { result : 'Succeeded' , source : undefined } )
1111+ assertTelemetryCurried ( 'sam_sync' ) ( {
1112+ syncedResources : 'CodeOnly' ,
1113+ source : undefined ,
1114+ } )
1115+ prompterTester . assertCallAll ( )
1116+ } )
1117+
10331118 it ( '[entry: template file] specify flag should instantiate correct process in terminal' , async ( ) => {
10341119 const prompterTester = PrompterTester . init ( )
10351120 . handleQuickPick ( 'Specify parameter source for sync' , async ( picker ) => {
0 commit comments