Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd665263

Browse files
authored
fix: Improve coverage by uploading PostgreSQL tests (#532)
This also adds a test for workspace creation via the CLI.
1 parent6573b65 commitd665263

File tree

4 files changed

+120
-25
lines changed

4 files changed

+120
-25
lines changed

‎.github/workflows/coder.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,14 @@ jobs:
270270
GIT_COMMIT_MESSAGE:${{ github.event.head_commit.message }}
271271
run:go run scripts/datadog-cireport/main.go gotests.xml
272272

273+
-uses:codecov/codecov-action@v2
274+
if:github.actor != 'dependabot[bot]'
275+
with:
276+
token:${{ secrets.CODECOV_TOKEN }}
277+
files:./gotests.coverage
278+
flags:unittest-go-${{ matrix.os }}
279+
fail_ci_if_error:true
280+
273281
deploy:
274282
name:"deploy"
275283
runs-on:ubuntu-latest

‎cli/workspacecreate_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package cli_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/coder/coder/cli/clitest"
7+
"github.com/coder/coder/coderd/coderdtest"
8+
"github.com/coder/coder/pty/ptytest"
9+
"github.com/stretchr/testify/require"
10+
)
11+
12+
funcTestWorkspaceCreate(t*testing.T) {
13+
t.Parallel()
14+
t.Run("Create",func(t*testing.T) {
15+
t.Parallel()
16+
client:=coderdtest.New(t,nil)
17+
user:=coderdtest.CreateFirstUser(t,client)
18+
coderdtest.NewProvisionerDaemon(t,client)
19+
version:=coderdtest.CreateProjectVersion(t,client,user.OrganizationID,nil)
20+
coderdtest.AwaitProjectVersionJob(t,client,version.ID)
21+
project:=coderdtest.CreateProject(t,client,user.OrganizationID,version.ID)
22+
cmd,root:=clitest.New(t,"workspaces","create","my-workspace","--project",project.Name)
23+
clitest.SetupConfig(t,client,root)
24+
doneChan:=make(chanstruct{})
25+
pty:=ptytest.New(t)
26+
cmd.SetIn(pty.Input())
27+
cmd.SetOut(pty.Output())
28+
gofunc() {
29+
deferclose(doneChan)
30+
err:=cmd.Execute()
31+
require.NoError(t,err)
32+
}()
33+
matches:= []string{
34+
"Create workspace","yes",
35+
}
36+
fori:=0;i<len(matches);i+=2 {
37+
match:=matches[i]
38+
value:=matches[i+1]
39+
pty.ExpectMatch(match)
40+
pty.WriteLine(value)
41+
}
42+
<-doneChan
43+
})
44+
}

‎codecov.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ ignore:
2929
-database/databasefake
3030
# These are generated or don't require tests.
3131
-cmd
32+
-coderd/tunnel
3233
-database/dump
3334
-database/postgres
3435
-peerbroker/proto

‎coderd/projectversions_test.go

Lines changed: 67 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,76 @@ func TestProjectVersion(t *testing.T) {
2929

3030
funcTestPatchCancelProjectVersion(t*testing.T) {
3131
t.Parallel()
32-
client:=coderdtest.New(t,nil)
33-
user:=coderdtest.CreateFirstUser(t,client)
34-
coderdtest.NewProvisionerDaemon(t,client)
35-
version:=coderdtest.CreateProjectVersion(t,client,user.OrganizationID,&echo.Responses{
36-
Parse:echo.ParseComplete,
37-
Provision: []*proto.Provision_Response{{
38-
Type:&proto.Provision_Response_Log{
39-
Log:&proto.Log{},
40-
},
41-
}},
32+
t.Run("AlreadyCompleted",func(t*testing.T) {
33+
t.Parallel()
34+
client:=coderdtest.New(t,nil)
35+
user:=coderdtest.CreateFirstUser(t,client)
36+
coderdtest.NewProvisionerDaemon(t,client)
37+
version:=coderdtest.CreateProjectVersion(t,client,user.OrganizationID,nil)
38+
coderdtest.AwaitProjectVersionJob(t,client,version.ID)
39+
err:=client.CancelProjectVersion(context.Background(),version.ID)
40+
varapiErr*codersdk.Error
41+
require.ErrorAs(t,err,&apiErr)
42+
require.Equal(t,http.StatusPreconditionFailed,apiErr.StatusCode())
4243
})
43-
require.Eventually(t,func()bool {
44-
varerrerror
45-
version,err=client.ProjectVersion(context.Background(),version.ID)
44+
t.Run("AlreadyCanceled",func(t*testing.T) {
45+
t.Parallel()
46+
client:=coderdtest.New(t,nil)
47+
user:=coderdtest.CreateFirstUser(t,client)
48+
coderdtest.NewProvisionerDaemon(t,client)
49+
version:=coderdtest.CreateProjectVersion(t,client,user.OrganizationID,&echo.Responses{
50+
Parse:echo.ParseComplete,
51+
Provision: []*proto.Provision_Response{{
52+
Type:&proto.Provision_Response_Log{
53+
Log:&proto.Log{},
54+
},
55+
}},
56+
})
57+
require.Eventually(t,func()bool {
58+
varerrerror
59+
version,err=client.ProjectVersion(context.Background(),version.ID)
60+
require.NoError(t,err)
61+
t.Logf("Status: %s",version.Job.Status)
62+
returnversion.Job.Status==codersdk.ProvisionerJobRunning
63+
},5*time.Second,25*time.Millisecond)
64+
err:=client.CancelProjectVersion(context.Background(),version.ID)
4665
require.NoError(t,err)
47-
t.Logf("Status: %s",version.Job.Status)
48-
returnversion.Job.Status==codersdk.ProvisionerJobRunning
49-
},5*time.Second,25*time.Millisecond)
50-
err:=client.CancelProjectVersion(context.Background(),version.ID)
51-
require.NoError(t,err)
52-
require.Eventually(t,func()bool {
53-
varerrerror
54-
version,err=client.ProjectVersion(context.Background(),version.ID)
66+
err=client.CancelProjectVersion(context.Background(),version.ID)
67+
varapiErr*codersdk.Error
68+
require.ErrorAs(t,err,&apiErr)
69+
require.Equal(t,http.StatusPreconditionFailed,apiErr.StatusCode())
70+
})
71+
t.Run("Success",func(t*testing.T) {
72+
t.Parallel()
73+
client:=coderdtest.New(t,nil)
74+
user:=coderdtest.CreateFirstUser(t,client)
75+
coderdtest.NewProvisionerDaemon(t,client)
76+
version:=coderdtest.CreateProjectVersion(t,client,user.OrganizationID,&echo.Responses{
77+
Parse:echo.ParseComplete,
78+
Provision: []*proto.Provision_Response{{
79+
Type:&proto.Provision_Response_Log{
80+
Log:&proto.Log{},
81+
},
82+
}},
83+
})
84+
require.Eventually(t,func()bool {
85+
varerrerror
86+
version,err=client.ProjectVersion(context.Background(),version.ID)
87+
require.NoError(t,err)
88+
t.Logf("Status: %s",version.Job.Status)
89+
returnversion.Job.Status==codersdk.ProvisionerJobRunning
90+
},5*time.Second,25*time.Millisecond)
91+
err:=client.CancelProjectVersion(context.Background(),version.ID)
5592
require.NoError(t,err)
56-
// The echo provisioner doesn't respond to a shutdown request,
57-
// so the job cancel will time out and fail.
58-
returnversion.Job.Status==codersdk.ProvisionerJobFailed
59-
},5*time.Second,25*time.Millisecond)
93+
require.Eventually(t,func()bool {
94+
varerrerror
95+
version,err=client.ProjectVersion(context.Background(),version.ID)
96+
require.NoError(t,err)
97+
// The echo provisioner doesn't respond to a shutdown request,
98+
// so the job cancel will time out and fail.
99+
returnversion.Job.Status==codersdk.ProvisionerJobFailed
100+
},5*time.Second,25*time.Millisecond)
101+
})
60102
}
61103

62104
funcTestProjectVersionSchema(t*testing.T) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp