Skip to content

Commit 9e0e271

Browse files
authored
Merge branch 'main' into mafredri/provisionerd-cache-path
2 parents ed35965 + 173ab29 commit 9e0e271

35 files changed

+703
-232
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ trim_trailing_whitespace = true
77
insert_final_newline = true
88
indent_style = tab
99

10-
[*.{md,json,yaml,tf,tfvars}]
10+
[*.{md,json,yaml,yml,tf,tfvars}]
1111
indent_style = space
1212
indent_size = 2
1313

.github/codecov.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,7 @@ ignore:
3434
- scripts
3535
- site/.storybook
3636
- rules.go
37+
# Packages used for writing tests.
38+
- cli/clitest
39+
- coderd/coderdtest
40+
- pty/ptytest

.github/workflows/coder.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ jobs:
148148

149149
gen:
150150
name: "style/gen"
151-
timeout-minutes: 5
151+
timeout-minutes: 8
152152
runs-on: ubuntu-latest
153153
needs: changes
154154
if: needs.changes.outputs.docs-only == 'false'
@@ -297,7 +297,7 @@ jobs:
297297
# systems.
298298
if [ "${{ matrix.os }}" == "ubuntu-latest" ]; then
299299
echo ::set-output name=cover::true
300-
export COVERAGE_FLAGS='-covermode=atomic -coverprofile="gotests.coverage" -coverpkg=./...,github.com/coder/coder/codersdk'
300+
export COVERAGE_FLAGS='-covermode=atomic -coverprofile="gotests.coverage" -coverpkg=./...'
301301
else
302302
echo ::set-output name=cover::false
303303
fi

.vscode/settings.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@
117117
"go.coverOnSave": true,
118118
// The codersdk is used by coderd another other packages extensively.
119119
// To reduce redundancy in tests, it's covered by other packages.
120-
"go.testFlags": ["-short", "-coverpkg=./.,github.com/coder/coder/codersdk"],
120+
// Since package coverage pairing can't be defined, all packages cover
121+
// all other packages.
122+
"go.testFlags": ["-short", "-coverpkg=./..."],
121123
"go.coverageDecorator": {
122124
"type": "gutter",
123125
"coveredHighlightColor": "rgba(64,128,128,0.5)",

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ test: test-clean
176176
test-postgres: test-clean test-postgres-docker
177177
DB=ci DB_FROM=$(shell go run scripts/migrate-ci/main.go) gotestsum --junitfile="gotests.xml" --packages="./..." -- \
178178
-covermode=atomic -coverprofile="gotests.coverage" -timeout=20m \
179-
-coverpkg=./...,github.com/coder/coder/codersdk \
179+
-coverpkg=./... \
180180
-count=1 -race -failfast
181181
.PHONY: test-postgres
182182

cli/clitest/clitest.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ func New(t *testing.T, args ...string) (*cobra.Command, config.Root) {
2525
dir := t.TempDir()
2626
root := config.Root(dir)
2727
cmd.SetArgs(append([]string{"--global-config", dir}, args...))
28+
29+
// We could consider using writers
30+
// that log via t.Log here instead.
31+
cmd.SetOut(io.Discard)
32+
cmd.SetErr(io.Discard)
33+
2834
return cmd, root
2935
}
3036

cli/cliui/prompt_test.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,6 @@ func newPrompt(ptty *ptytest.PTY, opts cliui.PromptOptions, cmdOpt func(cmd *cob
165165
}
166166

167167
func TestPasswordTerminalState(t *testing.T) {
168-
// TODO: fix this test so that it runs reliably
169-
t.Skip()
170-
171168
if os.Getenv("TEST_SUBPROCESS") == "1" {
172169
passwordHelper()
173170
return
@@ -185,27 +182,28 @@ func TestPasswordTerminalState(t *testing.T) {
185182
// connect the child process's stdio to the PTY directly, not via a pipe
186183
cmd.Stdin = ptty.Input().Reader
187184
cmd.Stdout = ptty.Output().Writer
188-
cmd.Stderr = os.Stderr
185+
cmd.Stderr = ptty.Output().Writer
189186
err := cmd.Start()
190187
require.NoError(t, err)
191188
process := cmd.Process
192189
defer process.Kill()
193190

194191
ptty.ExpectMatch("Password: ")
195-
time.Sleep(100 * time.Millisecond) // wait for child process to turn off echo and start reading input
196192

197-
echo, err := ptyWithFlags.EchoEnabled()
198-
require.NoError(t, err)
199-
require.False(t, echo, "echo is on while reading password")
193+
require.Eventually(t, func() bool {
194+
echo, err := ptyWithFlags.EchoEnabled()
195+
return err == nil && !echo
196+
}, 5*time.Second, 50*time.Millisecond, "echo is on while reading password")
200197

201198
err = process.Signal(os.Interrupt)
202199
require.NoError(t, err)
203200
_, err = process.Wait()
204201
require.NoError(t, err)
205202

206-
echo, err = ptyWithFlags.EchoEnabled()
207-
require.NoError(t, err)
208-
require.True(t, echo, "echo is off after reading password")
203+
require.Eventually(t, func() bool {
204+
echo, err := ptyWithFlags.EchoEnabled()
205+
return err == nil && echo
206+
}, 5*time.Second, 50*time.Millisecond, "echo is off after reading password")
209207
}
210208

211209
// nolint:unused

cli/configssh_test.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,19 +109,19 @@ func TestConfigSSH(t *testing.T) {
109109
agentCloser := agent.New(agentClient.ListenWorkspaceAgent, &agent.Options{
110110
Logger: slogtest.Make(t, nil),
111111
})
112-
t.Cleanup(func() {
112+
defer func() {
113113
_ = agentCloser.Close()
114-
})
114+
}()
115115
resources := coderdtest.AwaitWorkspaceAgents(t, client, workspace.LatestBuild.ID)
116116
agentConn, err := client.DialWorkspaceAgent(context.Background(), resources[0].Agents[0].ID, nil)
117117
require.NoError(t, err)
118118
defer agentConn.Close()
119119

120120
listener, err := net.Listen("tcp", "127.0.0.1:0")
121121
require.NoError(t, err)
122-
t.Cleanup(func() {
122+
defer func() {
123123
_ = listener.Close()
124-
})
124+
}()
125125
go func() {
126126
for {
127127
conn, err := listener.Accept()
@@ -134,9 +134,6 @@ func TestConfigSSH(t *testing.T) {
134134
go io.Copy(ssh, conn)
135135
}
136136
}()
137-
t.Cleanup(func() {
138-
_ = listener.Close()
139-
})
140137

141138
sshConfigFile, _ := sshConfigFileNames(t)
142139

@@ -173,9 +170,10 @@ func TestConfigSSH(t *testing.T) {
173170
home := filepath.Dir(filepath.Dir(sshConfigFile))
174171
// #nosec
175172
sshCmd := exec.Command("ssh", "-F", sshConfigFile, "coder."+workspace.Name, "echo", "test")
173+
pty = ptytest.New(t)
176174
// Set HOME because coder config is included from ~/.ssh/coder.
177175
sshCmd.Env = append(sshCmd.Env, fmt.Sprintf("HOME=%s", home))
178-
sshCmd.Stderr = os.Stderr
176+
sshCmd.Stderr = pty.Output()
179177
data, err := sshCmd.Output()
180178
require.NoError(t, err)
181179
require.Equal(t, "test", strings.TrimSpace(string(data)))

cli/list.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@ import (
1515
)
1616

1717
func list() *cobra.Command {
18-
var (
19-
columns []string
20-
)
18+
var columns []string
2119
cmd := &cobra.Command{
2220
Annotations: workspaceCommand,
2321
Use: "list",
2422
Short: "List all workspaces",
2523
Aliases: []string{"ls"},
24+
Args: cobra.ExactArgs(0),
2625
RunE: func(cmd *cobra.Command, args []string) error {
2726
client, err := createClient(cmd)
2827
if err != nil {

cli/logout_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,19 +152,19 @@ func TestLogout(t *testing.T) {
152152
err = os.Chmod(string(config), 0500)
153153
require.NoError(t, err)
154154
}
155-
t.Cleanup(func() {
155+
defer func() {
156156
if runtime.GOOS == "windows" {
157157
// Closing the opened files for cleanup.
158158
err = urlFile.Close()
159-
require.NoError(t, err)
159+
assert.NoError(t, err)
160160
err = sessionFile.Close()
161-
require.NoError(t, err)
161+
assert.NoError(t, err)
162162
} else {
163163
// Setting the permissions back for cleanup.
164-
err = os.Chmod(string(config), 0700)
165-
require.NoError(t, err)
164+
err = os.Chmod(string(config), 0o700)
165+
assert.NoError(t, err)
166166
}
167-
})
167+
}()
168168

169169
logoutChan := make(chan struct{})
170170
logout, _ := clitest.New(t, "logout", "--global-config", string(config))

cli/portforward_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"fmt"
77
"io"
88
"net"
9-
"os"
109
"path/filepath"
1110
"runtime"
1211
"strings"
@@ -158,7 +157,7 @@ func TestPortForward(t *testing.T) {
158157
cmd, root := clitest.New(t, "port-forward", workspace.Name, flag)
159158
clitest.SetupConfig(t, client, root)
160159
buf := newThreadSafeBuffer()
161-
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
160+
cmd.SetOut(buf)
162161
ctx, cancel := context.WithCancel(context.Background())
163162
defer cancel()
164163
errC := make(chan error)
@@ -204,7 +203,7 @@ func TestPortForward(t *testing.T) {
204203
cmd, root := clitest.New(t, "port-forward", workspace.Name, flag1, flag2)
205204
clitest.SetupConfig(t, client, root)
206205
buf := newThreadSafeBuffer()
207-
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
206+
cmd.SetOut(buf)
208207
ctx, cancel := context.WithCancel(context.Background())
209208
defer cancel()
210209
errC := make(chan error)
@@ -257,7 +256,7 @@ func TestPortForward(t *testing.T) {
257256
cmd, root := clitest.New(t, "port-forward", workspace.Name, flag)
258257
clitest.SetupConfig(t, client, root)
259258
buf := newThreadSafeBuffer()
260-
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
259+
cmd.SetOut(buf)
261260
ctx, cancel := context.WithCancel(context.Background())
262261
defer cancel()
263262
errC := make(chan error)
@@ -317,7 +316,7 @@ func TestPortForward(t *testing.T) {
317316
cmd, root := clitest.New(t, append([]string{"port-forward", workspace.Name}, flags...)...)
318317
clitest.SetupConfig(t, client, root)
319318
buf := newThreadSafeBuffer()
320-
cmd.SetOut(io.MultiWriter(buf, os.Stderr))
319+
cmd.SetOut(buf)
321320
ctx, cancel := context.WithCancel(context.Background())
322321
defer cancel()
323322
errC := make(chan error)

cli/resetpassword_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,12 @@ func TestResetPassword(t *testing.T) {
3838
defer closeFunc()
3939
ctx, cancelFunc := context.WithCancel(context.Background())
4040
serverDone := make(chan struct{})
41-
serverCmd, cfg := clitest.New(t, "server", "--address", ":0", "--postgres-url", connectionURL)
41+
serverCmd, cfg := clitest.New(t,
42+
"server",
43+
"--address", ":0",
44+
"--postgres-url", connectionURL,
45+
"--cache-dir", t.TempDir(),
46+
)
4247
go func() {
4348
defer close(serverDone)
4449
err = serverCmd.ExecuteContext(ctx)

0 commit comments

Comments
 (0)