@@ -42,20 +42,22 @@ const convertBuildArgs = buildArgs => {
42
42
} ;
43
43
44
44
const runAssertions = ( imageFullName , image , tags , dockerfile , buildArgs ) => {
45
- expect ( docker . createTag ) . toHaveBeenCalledTimes ( 1 ) ;
46
45
expect ( core . getInput ) . toHaveBeenCalledTimes ( 7 ) ;
47
46
expect ( core . setOutput ) . toHaveBeenCalledTimes ( 3 ) ;
48
47
expect ( core . setOutput ) . toHaveBeenCalledWith ( 'imageFullName' , imageFullName ) ;
49
48
expect ( core . setOutput ) . toHaveBeenCalledWith ( 'imageName' , image ) ;
50
- expect ( core . setOutput ) . toHaveBeenCalledWith ( 'tags' , tags ) ;
49
+ expect ( core . setOutput ) . toHaveBeenCalledWith ( 'tags' , tags . join ( ',' ) ) ;
51
50
52
51
if ( buildArgs ) {
53
52
expect ( cp . execSync ) . toHaveBeenCalledWith (
54
- `docker build -f ${ dockerfile } -t ${ imageFullName } :${ tags } ${ convertBuildArgs ( buildArgs ) } .` ,
53
+ `docker build -f ${ dockerfile } -t ${ imageFullName } :${ tags [ 0 ] } ${ convertBuildArgs ( buildArgs ) } .` ,
55
54
cpOptions
56
55
) ;
57
56
} else {
58
- expect ( cp . execSync ) . toHaveBeenCalledWith ( `docker build -f ${ dockerfile } -t ${ imageFullName } :${ tags } .` , cpOptions ) ;
57
+ expect ( cp . execSync ) . toHaveBeenCalledWith (
58
+ `docker build -f ${ dockerfile } -t ${ imageFullName } :${ tags [ 0 ] } .` ,
59
+ cpOptions
60
+ ) ;
59
61
}
60
62
} ;
61
63
@@ -85,7 +87,9 @@ describe('Create & push Docker image to GitHub Registry', () => {
85
87
86
88
run ( ) ;
87
89
88
- runAssertions ( imageFullName , image , tag , dockerfile ) ;
90
+ runAssertions ( imageFullName , image , [ tag ] , dockerfile ) ;
91
+
92
+ expect ( docker . createTag ) . toHaveBeenCalledTimes ( 1 ) ;
89
93
} ) ;
90
94
91
95
test ( 'Keep default GitHub organization' , ( ) => {
@@ -104,7 +108,9 @@ describe('Create & push Docker image to GitHub Registry', () => {
104
108
105
109
run ( ) ;
106
110
107
- runAssertions ( imageFullName , image , tag , dockerfile ) ;
111
+ runAssertions ( imageFullName , image , [ tag ] , dockerfile ) ;
112
+
113
+ expect ( docker . createTag ) . toHaveBeenCalledTimes ( 1 ) ;
108
114
} ) ;
109
115
110
116
test ( 'Converts owner name to lowercase' , ( ) => {
@@ -125,7 +131,9 @@ describe('Create & push Docker image to GitHub Registry', () => {
125
131
126
132
run ( ) ;
127
133
128
- runAssertions ( imageFullName , image , tag , dockerfile ) ;
134
+ runAssertions ( imageFullName , image , [ tag ] , dockerfile ) ;
135
+
136
+ expect ( docker . createTag ) . toHaveBeenCalledTimes ( 1 ) ;
129
137
} ) ;
130
138
} ) ;
131
139
@@ -146,7 +154,41 @@ describe('Create & push Docker image to GCR', () => {
146
154
147
155
run ( ) ;
148
156
149
- runAssertions ( imageFullName , image , tag , dockerfile ) ;
157
+ runAssertions ( imageFullName , image , [ tag ] , dockerfile ) ;
158
+
159
+ expect ( docker . createTag ) . toHaveBeenCalledTimes ( 1 ) ;
160
+ } ) ;
161
+ } ) ;
162
+
163
+ describe ( 'Create & push Docker image with many tags' , ( ) => {
164
+ test ( 'Valid Docker inputs with two tags' , ( ) => {
165
+ const image = 'gcp-project/image' ;
166
+ const registry = 'gcr.io' ;
167
+ const tag1 = 'latest' ;
168
+ const tag2 = 'v1' ;
169
+ const inputTags = ` ${ tag1 } , ${ tag2 } ` ;
170
+ const outputTags = `${ tag1 } ,${ tag2 } ` ;
171
+ const buildArgs = '' ;
172
+ const dockerfile = 'Dockerfile' ;
173
+ const imageFullName = createFullImageName ( registry , image ) ;
174
+
175
+ docker . login = jest . fn ( ) ;
176
+ docker . createTag = jest . fn ( ) . mockReturnValueOnce ( tag1 ) ;
177
+ mockInputs ( image , registry , inputTags , buildArgs , dockerfile ) ;
178
+ mockOutputs ( imageFullName , image , outputTags ) ;
179
+ cp . execSync = jest . fn ( ) ;
180
+
181
+ run ( ) ;
182
+
183
+ expect ( docker . createTag ) . toHaveBeenCalledTimes ( 0 ) ;
184
+ expect ( core . getInput ) . toHaveBeenCalledTimes ( 7 ) ;
185
+ expect ( core . setOutput ) . toHaveBeenCalledTimes ( 3 ) ;
186
+ expect ( core . setOutput ) . toHaveBeenCalledWith ( 'imageFullName' , imageFullName ) ;
187
+ expect ( core . setOutput ) . toHaveBeenCalledWith ( 'imageName' , image ) ;
188
+ expect ( core . setOutput ) . toHaveBeenCalledWith ( 'tags' , outputTags ) ;
189
+
190
+ expect ( cp . execSync ) . toHaveBeenCalledWith ( `docker build -f ${ dockerfile } -t ${ imageFullName } :${ tag1 } .` , cpOptions ) ;
191
+ expect ( cp . execSync ) . toHaveBeenCalledWith ( `docker tag ${ imageFullName } :${ tag1 } ${ imageFullName } :${ tag2 } ` , cpOptions ) ;
150
192
} ) ;
151
193
} ) ;
152
194
@@ -167,7 +209,7 @@ describe('Create & push Docker image with build args', () => {
167
209
168
210
run ( ) ;
169
211
170
- runAssertions ( imageFullName , image , tag , dockerfile , buildArgs ) ;
212
+ runAssertions ( imageFullName , image , [ tag ] , dockerfile , buildArgs ) ;
171
213
172
214
expect ( docker . createTag ) . toHaveBeenCalledTimes ( 1 ) ;
173
215
expect ( core . getInput ) . toHaveBeenCalledTimes ( 7 ) ;
0 commit comments