MCPcopy Index your code
hub / github.com/coder/coder / TestStart_FailedStartCleansUp

Function TestStart_FailedStartCleansUp

cli/start_test.go:594–644  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

592}
593
594func TestStart_FailedStartCleansUp(t *testing.T) {
595 t.Parallel()
596 ctx := testutil.Context(t, testutil.WaitLong)
597
598 store, ps := dbtestutil.NewDB(t)
599 client := coderdtest.New(t, &coderdtest.Options{
600 Database: store,
601 Pubsub: ps,
602 IncludeProvisionerDaemon: true,
603 })
604 owner := coderdtest.CreateFirstUser(t, client)
605 memberClient, member := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
606
607 version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
608 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
609 template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
610 workspace := coderdtest.CreateWorkspace(t, memberClient, template.ID)
611 coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
612
613 // Insert a failed start build directly into the database so that
614 // the workspace's latest build is a failed "start" transition.
615 dbfake.WorkspaceBuild(t, store, database.WorkspaceTable{
616 ID: workspace.ID,
617 OwnerID: member.ID,
618 OrganizationID: owner.OrganizationID,
619 TemplateID: template.ID,
620 }).
621 Seed(database.WorkspaceBuild{
622 TemplateVersionID: version.ID,
623 Transition: database.WorkspaceTransitionStart,
624 BuildNumber: workspace.LatestBuild.BuildNumber + 1,
625 }).
626 Failed().
627 Do()
628
629 inv, root := clitest.New(t, "start", workspace.Name)
630 clitest.SetupConfig(t, memberClient, root)
631 pty := ptytest.New(t).Attach(inv)
632 doneChan := make(chan struct{})
633 go func() {
634 defer close(doneChan)
635 err := inv.Run()
636 assert.NoError(t, err)
637 }()
638
639 // The CLI should detect the failed start and clean up first.
640 pty.ExpectMatch("Cleaning up before retrying")
641 pty.ExpectMatch("workspace has been started")
642
643 _ = testutil.TryReceive(ctx, t, doneChan)
644}

Callers

nothing calls this directly

Calls 15

ContextFunction · 0.92
NewDBFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
WorkspaceBuildFunction · 0.92
NewFunction · 0.92

Tested by

no test coverage detected