@@ -167,6 +167,114 @@ func TestRestart(t *testing.T) {
167
167
Value : ephemeralParameterValue ,
168
168
})
169
169
})
170
+
171
+ t .Run ("with deprecated build-options flag" , func (t * testing.T ) {
172
+ t .Parallel ()
173
+
174
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
175
+ owner := coderdtest .CreateFirstUser (t , client )
176
+ member , memberUser := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
177
+ version := coderdtest .CreateTemplateVersion (t , client , owner .OrganizationID , echoResponses )
178
+ coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
179
+ template := coderdtest .CreateTemplate (t , client , owner .OrganizationID , version .ID )
180
+ workspace := coderdtest .CreateWorkspace (t , member , template .ID )
181
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , workspace .LatestBuild .ID )
182
+
183
+ inv , root := clitest .New (t , "restart" , workspace .Name , "--build-options" )
184
+ clitest .SetupConfig (t , member , root )
185
+ doneChan := make (chan struct {})
186
+ pty := ptytest .New (t ).Attach (inv )
187
+ go func () {
188
+ defer close (doneChan )
189
+ err := inv .Run ()
190
+ assert .NoError (t , err )
191
+ }()
192
+
193
+ matches := []string {
194
+ ephemeralParameterDescription , ephemeralParameterValue ,
195
+ "Restart workspace?" , "yes" ,
196
+ "Stopping workspace" , "" ,
197
+ "Starting workspace" , "" ,
198
+ "workspace has been restarted" , "" ,
199
+ }
200
+ for i := 0 ; i < len (matches ); i += 2 {
201
+ match := matches [i ]
202
+ value := matches [i + 1 ]
203
+ pty .ExpectMatch (match )
204
+
205
+ if value != "" {
206
+ pty .WriteLine (value )
207
+ }
208
+ }
209
+ <- doneChan
210
+
211
+ // Verify if build option is set
212
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
213
+ defer cancel ()
214
+
215
+ workspace , err := client .WorkspaceByOwnerAndName (ctx , memberUser .ID .String (), workspace .Name , codersdk.WorkspaceOptions {})
216
+ require .NoError (t , err )
217
+ actualParameters , err := client .WorkspaceBuildParameters (ctx , workspace .LatestBuild .ID )
218
+ require .NoError (t , err )
219
+ require .Contains (t , actualParameters , codersdk.WorkspaceBuildParameter {
220
+ Name : ephemeralParameterName ,
221
+ Value : ephemeralParameterValue ,
222
+ })
223
+ })
224
+
225
+ t .Run ("with deprecated build-option flag" , func (t * testing.T ) {
226
+ t .Parallel ()
227
+
228
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
229
+ owner := coderdtest .CreateFirstUser (t , client )
230
+ member , memberUser := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
231
+ version := coderdtest .CreateTemplateVersion (t , client , owner .OrganizationID , echoResponses )
232
+ coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
233
+ template := coderdtest .CreateTemplate (t , client , owner .OrganizationID , version .ID )
234
+ workspace := coderdtest .CreateWorkspace (t , member , template .ID )
235
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , workspace .LatestBuild .ID )
236
+
237
+ inv , root := clitest .New (t , "restart" , workspace .Name ,
238
+ "--build-option" , fmt .Sprintf ("%s=%s" , ephemeralParameterName , ephemeralParameterValue ))
239
+ clitest .SetupConfig (t , member , root )
240
+ doneChan := make (chan struct {})
241
+ pty := ptytest .New (t ).Attach (inv )
242
+ go func () {
243
+ defer close (doneChan )
244
+ err := inv .Run ()
245
+ assert .NoError (t , err )
246
+ }()
247
+
248
+ matches := []string {
249
+ "Restart workspace?" , "yes" ,
250
+ "Stopping workspace" , "" ,
251
+ "Starting workspace" , "" ,
252
+ "workspace has been restarted" , "" ,
253
+ }
254
+ for i := 0 ; i < len (matches ); i += 2 {
255
+ match := matches [i ]
256
+ value := matches [i + 1 ]
257
+ pty .ExpectMatch (match )
258
+
259
+ if value != "" {
260
+ pty .WriteLine (value )
261
+ }
262
+ }
263
+ <- doneChan
264
+
265
+ // Verify if build option is set
266
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
267
+ defer cancel ()
268
+
269
+ workspace , err := client .WorkspaceByOwnerAndName (ctx , memberUser .ID .String (), workspace .Name , codersdk.WorkspaceOptions {})
270
+ require .NoError (t , err )
271
+ actualParameters , err := client .WorkspaceBuildParameters (ctx , workspace .LatestBuild .ID )
272
+ require .NoError (t , err )
273
+ require .Contains (t , actualParameters , codersdk.WorkspaceBuildParameter {
274
+ Name : ephemeralParameterName ,
275
+ Value : ephemeralParameterValue ,
276
+ })
277
+ })
170
278
}
171
279
172
280
func TestRestartWithParameters (t * testing.T ) {
0 commit comments