(t *testing.T)
| 212 | } |
| 213 | |
| 214 | func newProvisionerJob(t *testing.T) provisionerJobTest { |
| 215 | job := &codersdk.ProvisionerJob{ |
| 216 | Status: codersdk.ProvisionerJobPending, |
| 217 | CreatedAt: dbtime.Now(), |
| 218 | } |
| 219 | jobLock := sync.Mutex{} |
| 220 | logs := make(chan codersdk.ProvisionerJobLog, 1) |
| 221 | cmd := &serpent.Command{ |
| 222 | Handler: func(inv *serpent.Invocation) error { |
| 223 | return cliui.ProvisionerJob(inv.Context(), inv.Stdout, cliui.ProvisionerJobOptions{ |
| 224 | FetchInterval: time.Millisecond, |
| 225 | Fetch: func() (codersdk.ProvisionerJob, error) { |
| 226 | jobLock.Lock() |
| 227 | defer jobLock.Unlock() |
| 228 | return *job, nil |
| 229 | }, |
| 230 | Cancel: func() error { |
| 231 | return nil |
| 232 | }, |
| 233 | Logs: func() (<-chan codersdk.ProvisionerJobLog, io.Closer, error) { |
| 234 | return logs, closeFunc(func() error { |
| 235 | return nil |
| 236 | }), nil |
| 237 | }, |
| 238 | }) |
| 239 | }, |
| 240 | } |
| 241 | inv := cmd.Invoke() |
| 242 | |
| 243 | ptty := ptytest.New(t) |
| 244 | ptty.Attach(inv) |
| 245 | done := make(chan struct{}) |
| 246 | go func() { |
| 247 | defer close(done) |
| 248 | err := inv.WithContext(context.Background()).Run() |
| 249 | if err != nil { |
| 250 | assert.ErrorIs(t, err, cliui.ErrCanceled) |
| 251 | } |
| 252 | }() |
| 253 | t.Cleanup(func() { |
| 254 | <-done |
| 255 | }) |
| 256 | return provisionerJobTest{ |
| 257 | Next: make(chan struct{}), |
| 258 | Job: job, |
| 259 | JobMutex: &jobLock, |
| 260 | Logs: logs, |
| 261 | PTY: ptty, |
| 262 | } |
| 263 | } |
| 264 | |
| 265 | type closeFunc func() error |
| 266 |
no test coverage detected