5
5
6
6
import * as assert from 'assert'
7
7
import { SpawnOptions } from 'child_process'
8
+ import { SamCliContext } from '../../../../shared/sam/cli/samCliContext'
8
9
import { runSamCliInit , SamCliInitArgs } from '../../../../shared/sam/cli/samCliInit'
9
10
import { SamCliProcessInvoker } from '../../../../shared/sam/cli/samCliInvokerUtils'
11
+ import {
12
+ MINIMUM_SAM_CLI_VERSION_INCLUSIVE ,
13
+ SAM_CLI_VERSION_0_30 ,
14
+ SamCliValidator ,
15
+ SamCliValidatorResult ,
16
+ SamCliVersionValidation
17
+ } from '../../../../shared/sam/cli/samCliValidator'
10
18
import { ChildProcessResult } from '../../../../shared/utilities/childProcess'
11
19
import { getTestLogger } from '../../../globalSetup.test'
12
20
import { assertThrowsError } from '../../utilities/assertUtils'
13
- import { assertArgsContainArgument } from './samCliTestUtils'
21
+ import { assertArgIsPresent , assertArgsContainArgument } from './samCliTestUtils'
14
22
import {
15
23
assertErrorContainsBadExitMessage ,
16
24
assertLogContainsBadExitInformation ,
@@ -37,6 +45,24 @@ describe('runSamCliInit', async () => {
37
45
}
38
46
}
39
47
48
+ class FakeSamCliValidator implements SamCliValidator {
49
+ private readonly version : string
50
+ public constructor ( version : string = MINIMUM_SAM_CLI_VERSION_INCLUSIVE ) {
51
+ this . version = version
52
+ }
53
+ public async detectValidSamCli ( ) : Promise < SamCliValidatorResult > {
54
+ return {
55
+ samCliFound : true ,
56
+ versionValidation : {
57
+ version : this . version ,
58
+ validation : SamCliVersionValidation . Valid
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ const defaultFakeValidator = new FakeSamCliValidator ( )
65
+
40
66
const sampleSamInitArgs : SamCliInitArgs = {
41
67
name : 'qwerty' ,
42
68
location : '/some/path/to/code.js' ,
@@ -51,7 +77,12 @@ describe('runSamCliInit', async () => {
51
77
}
52
78
)
53
79
54
- await runSamCliInit ( sampleSamInitArgs , processInvoker )
80
+ const context : SamCliContext = {
81
+ validator : defaultFakeValidator ,
82
+ invoker : processInvoker
83
+ }
84
+
85
+ await runSamCliInit ( sampleSamInitArgs , context )
55
86
} )
56
87
57
88
it ( 'Passes name to sam cli' , async ( ) => {
@@ -61,7 +92,12 @@ describe('runSamCliInit', async () => {
61
92
}
62
93
)
63
94
64
- await runSamCliInit ( sampleSamInitArgs , processInvoker )
95
+ const context : SamCliContext = {
96
+ validator : defaultFakeValidator ,
97
+ invoker : processInvoker
98
+ }
99
+
100
+ await runSamCliInit ( sampleSamInitArgs , context )
65
101
} )
66
102
67
103
it ( 'Passes location to sam cli' , async ( ) => {
@@ -71,7 +107,12 @@ describe('runSamCliInit', async () => {
71
107
}
72
108
)
73
109
74
- await runSamCliInit ( sampleSamInitArgs , processInvoker )
110
+ const context : SamCliContext = {
111
+ validator : defaultFakeValidator ,
112
+ invoker : processInvoker
113
+ }
114
+
115
+ await runSamCliInit ( sampleSamInitArgs , context )
75
116
} )
76
117
77
118
it ( 'Passes runtime to sam cli' , async ( ) => {
@@ -81,14 +122,23 @@ describe('runSamCliInit', async () => {
81
122
}
82
123
)
83
124
84
- await runSamCliInit ( sampleSamInitArgs , processInvoker )
125
+ const context : SamCliContext = {
126
+ validator : defaultFakeValidator ,
127
+ invoker : processInvoker
128
+ }
129
+
130
+ await runSamCliInit ( sampleSamInitArgs , context )
85
131
} )
86
132
87
133
it ( 'throws on unexpected exit code' , async ( ) => {
88
134
const badExitCodeProcessInvoker = new BadExitCodeSamCliProcessInvoker ( { } )
135
+ const context : SamCliContext = {
136
+ validator : defaultFakeValidator ,
137
+ invoker : badExitCodeProcessInvoker
138
+ }
89
139
90
140
const error = await assertThrowsError ( async ( ) => {
91
- await runSamCliInit ( sampleSamInitArgs , badExitCodeProcessInvoker )
141
+ await runSamCliInit ( sampleSamInitArgs , context )
92
142
} , 'Expected an error to be thrown' )
93
143
94
144
assertErrorContainsBadExitMessage ( error , badExitCodeProcessInvoker . error . message )
@@ -98,4 +148,19 @@ describe('runSamCliInit', async () => {
98
148
0
99
149
)
100
150
} )
151
+
152
+ it ( 'Passes --no-interactive if version >= 0.30.0' , async ( ) => {
153
+ const processInvoker : SamCliProcessInvoker = new ExtendedTestSamCliProcessInvoker (
154
+ ( spawnOptions : SpawnOptions , args : any [ ] ) => {
155
+ assertArgIsPresent ( args , '--no-interactive' )
156
+ }
157
+ )
158
+
159
+ const context : SamCliContext = {
160
+ validator : new FakeSamCliValidator ( SAM_CLI_VERSION_0_30 ) ,
161
+ invoker : processInvoker
162
+ }
163
+
164
+ await runSamCliInit ( sampleSamInitArgs , context )
165
+ } )
101
166
} )
0 commit comments