fix: Remove use of require in require.Eventually in tests (#3110)

* fix: Remove use of `require` in `require.Eventually` in tests

Because require uses `t.FailNow()` and `require.Eventually` runs the
function in a goroutine, which is not allowed.

* feat: Add ruleguard for require.Eventually

Co-authored-by: Cian Johnston <cian@coder.com>
This commit is contained in:
Mathias Fredriksson
2022-07-22 20:02:49 +03:00
committed by GitHub
co-authored by Cian Johnston
parent 3bb760576b
commit 51dd1fde3b
10 changed files with 74 additions and 46 deletions
+1 -2
View File
@@ -153,8 +153,7 @@ func TestAuthorizeAllEndpoints(t *testing.T) {
// so we wait for it to occur.
require.Eventually(t, func() bool {
provisionerds, err := client.ProvisionerDaemons(ctx)
require.NoError(t, err)
return len(provisionerds) > 0
return assert.NoError(t, err) && len(provisionerds) > 0
}, time.Second*10, time.Second)
provisionerds, err := client.ProvisionerDaemons(ctx)
+15 -6
View File
@@ -353,7 +353,8 @@ func CreateWorkspaceBuild(
t *testing.T,
client *codersdk.Client,
workspace codersdk.Workspace,
transition database.WorkspaceTransition) codersdk.WorkspaceBuild {
transition database.WorkspaceTransition,
) codersdk.WorkspaceBuild {
req := codersdk.CreateWorkspaceBuildRequest{
Transition: codersdk.WorkspaceTransition(transition),
}
@@ -397,36 +398,44 @@ func UpdateTemplateVersion(t *testing.T, client *codersdk.Client, organizationID
// AwaitTemplateImportJob awaits for an import job to reach completed status.
func AwaitTemplateVersionJob(t *testing.T, client *codersdk.Client, version uuid.UUID) codersdk.TemplateVersion {
t.Helper()
t.Logf("waiting for template version job %s", version)
var templateVersion codersdk.TemplateVersion
require.Eventually(t, func() bool {
var err error
templateVersion, err = client.TemplateVersion(context.Background(), version)
require.NoError(t, err)
return templateVersion.Job.CompletedAt != nil
return assert.NoError(t, err) && templateVersion.Job.CompletedAt != nil
}, 5*time.Second, 25*time.Millisecond)
return templateVersion
}
// AwaitWorkspaceBuildJob waits for a workspace provision job to reach completed status.
func AwaitWorkspaceBuildJob(t *testing.T, client *codersdk.Client, build uuid.UUID) codersdk.WorkspaceBuild {
t.Helper()
t.Logf("waiting for workspace build job %s", build)
var workspaceBuild codersdk.WorkspaceBuild
require.Eventually(t, func() bool {
var err error
workspaceBuild, err = client.WorkspaceBuild(context.Background(), build)
require.NoError(t, err)
return workspaceBuild.Job.CompletedAt != nil
return assert.NoError(t, err) && workspaceBuild.Job.CompletedAt != nil
}, 5*time.Second, 25*time.Millisecond)
return workspaceBuild
}
// AwaitWorkspaceAgents waits for all resources with agents to be connected.
func AwaitWorkspaceAgents(t *testing.T, client *codersdk.Client, build uuid.UUID) []codersdk.WorkspaceResource {
t.Helper()
t.Logf("waiting for workspace agents (build %s)", build)
var resources []codersdk.WorkspaceResource
require.Eventually(t, func() bool {
var err error
resources, err = client.WorkspaceResourcesByBuild(context.Background(), build)
require.NoError(t, err)
if !assert.NoError(t, err) {
return false
}
for _, resource := range resources {
for _, agent := range resource.Agents {
if agent.Status != codersdk.WorkspaceAgentConnected {
+3 -1
View File
@@ -78,7 +78,9 @@ func TestTunnel(t *testing.T) {
require.Eventually(t, func() bool {
res, err := fTunServer.requestHTTP()
require.NoError(t, err)
if !assert.NoError(t, err) {
return false
}
defer res.Body.Close()
_, _ = io.Copy(io.Discard, res.Body)
+2 -2
View File
@@ -7,6 +7,7 @@ import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/coderd/coderdtest"
@@ -39,8 +40,7 @@ func TestProvisionerDaemons(t *testing.T) {
require.Eventually(t, func() bool {
var err error
version, err = client.TemplateVersion(context.Background(), version.ID)
require.NoError(t, err)
return version.Job.Error != ""
return assert.NoError(t, err) && version.Job.Error != ""
}, 5*time.Second, 25*time.Millisecond)
})
}
+20 -10
View File
@@ -115,7 +115,9 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
require.Eventually(t, func() bool {
var err error
version, err = client.TemplateVersion(context.Background(), version.ID)
require.NoError(t, err)
if !assert.NoError(t, err) {
return false
}
t.Logf("Status: %s", version.Job.Status)
return version.Job.Status == codersdk.ProvisionerJobRunning
}, 5*time.Second, 25*time.Millisecond)
@@ -148,7 +150,9 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
require.Eventually(t, func() bool {
var err error
version, err = client.TemplateVersion(context.Background(), version.ID)
require.NoError(t, err)
if !assert.NoError(t, err) {
return false
}
t.Logf("Status: %s", version.Job.Status)
return version.Job.Status == codersdk.ProvisionerJobRunning
}, 5*time.Second, 25*time.Millisecond)
@@ -536,9 +540,7 @@ func TestTemplateVersionDryRun(t *testing.T) {
// Wait for the job to complete
require.Eventually(t, func() bool {
job, err := client.TemplateVersionDryRun(ctx, version.ID, job.ID)
assert.NoError(t, err)
return job.Status == codersdk.ProvisionerJobSucceeded
return assert.NoError(t, err) && job.Status == codersdk.ProvisionerJobSucceeded
}, 5*time.Second, 25*time.Millisecond)
<-logsDone
@@ -588,7 +590,8 @@ func TestTemplateVersionDryRun(t *testing.T) {
{
Type: &proto.Provision_Response_Log{
Log: &proto.Log{},
}},
},
},
{
Type: &proto.Provision_Response_Complete{
Complete: &proto.Provision_Complete{},
@@ -609,7 +612,9 @@ func TestTemplateVersionDryRun(t *testing.T) {
require.Eventually(t, func() bool {
job, err := client.TemplateVersionDryRun(context.Background(), version.ID, job.ID)
assert.NoError(t, err)
if !assert.NoError(t, err) {
return false
}
t.Logf("Status: %s", job.Status)
return job.Status == codersdk.ProvisionerJobPending
@@ -620,7 +625,9 @@ func TestTemplateVersionDryRun(t *testing.T) {
require.Eventually(t, func() bool {
job, err := client.TemplateVersionDryRun(context.Background(), version.ID, job.ID)
assert.NoError(t, err)
if !assert.NoError(t, err) {
return false
}
t.Logf("Status: %s", job.Status)
return job.Status == codersdk.ProvisionerJobCanceling
@@ -642,7 +649,9 @@ func TestTemplateVersionDryRun(t *testing.T) {
require.Eventually(t, func() bool {
job, err := client.TemplateVersionDryRun(context.Background(), version.ID, job.ID)
assert.NoError(t, err)
if !assert.NoError(t, err) {
return false
}
t.Logf("Status: %s", job.Status)
return job.Status == codersdk.ProvisionerJobSucceeded
@@ -666,7 +675,8 @@ func TestTemplateVersionDryRun(t *testing.T) {
{
Type: &proto.Provision_Response_Log{
Log: &proto.Log{},
}},
},
},
{
Type: &proto.Provision_Response_Complete{
Complete: &proto.Provision_Complete{},
+1 -2
View File
@@ -221,8 +221,7 @@ func TestPatchCancelWorkspaceBuild(t *testing.T) {
require.Eventually(t, func() bool {
var err error
build, err = client.WorkspaceBuild(context.Background(), workspace.LatestBuild.ID)
require.NoError(t, err)
return build.Job.Status == codersdk.ProvisionerJobRunning
return assert.NoError(t, err) && build.Job.Status == codersdk.ProvisionerJobRunning
}, 5*time.Second, 25*time.Millisecond)
err := client.CancelWorkspaceBuild(context.Background(), build.ID)
require.NoError(t, err)