Skip to content

Commit 4b0056c

Browse files
test: rewrite test
1 parent a306e48 commit 4b0056c

File tree

1 file changed

+41
-20
lines changed

1 file changed

+41
-20
lines changed

agent/agentscripts/agentscripts_test.go

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package agentscripts_test
22

33
import (
4+
"cmp"
45
"context"
56
"path/filepath"
67
"runtime"
8+
"slices"
79
"testing"
810
"time"
911

@@ -18,6 +20,7 @@ import (
1820
"github.com/coder/coder/v2/agent/agentscripts"
1921
"github.com/coder/coder/v2/agent/agentssh"
2022
"github.com/coder/coder/v2/agent/agenttest"
23+
"github.com/coder/coder/v2/agent/proto"
2124
"github.com/coder/coder/v2/codersdk"
2225
"github.com/coder/coder/v2/codersdk/agentsdk"
2326
"github.com/coder/coder/v2/testutil"
@@ -119,11 +122,13 @@ func TestTimeout(t *testing.T) {
119122
func TestScriptReportsTiming(t *testing.T) {
120123
t.Parallel()
121124

122-
tests := []struct {
125+
type test struct {
123126
displayName string
124127
script string
125128
exitCode int32
126-
}{
129+
}
130+
131+
tests := []test{
127132
{
128133
displayName: "exit-0",
129134
script: "exit 0",
@@ -136,29 +141,45 @@ func TestScriptReportsTiming(t *testing.T) {
136141
},
137142
}
138143

144+
ctx := testutil.Context(t, testutil.WaitShort)
145+
fLogger := newFakeScriptLogger()
146+
runner := setup(t, func(uuid2 uuid.UUID) agentscripts.ScriptLogger {
147+
return fLogger
148+
})
149+
defer runner.Close()
150+
aAPI := agenttest.NewFakeAgentAPI(t, slogtest.Make(t, nil), nil, nil)
151+
152+
scripts := []codersdk.WorkspaceAgentScript{}
139153
for _, tt := range tests {
140-
ctx := testutil.Context(t, testutil.WaitShort)
141-
fLogger := newFakeScriptLogger()
142-
runner := setup(t, func(uuid2 uuid.UUID) agentscripts.ScriptLogger {
143-
return fLogger
144-
})
145-
defer runner.Close()
146-
aAPI := agenttest.NewFakeAgentAPI(t, slogtest.Make(t, nil), nil, nil)
147-
err := runner.Init([]codersdk.WorkspaceAgentScript{{
154+
scripts = append(scripts, codersdk.WorkspaceAgentScript{
148155
DisplayName: tt.displayName,
149156
LogSourceID: uuid.New(),
150157
Script: tt.script,
151-
}}, aAPI.ScriptCompleted)
152-
require.NoError(t, err)
153-
require.NoError(t, runner.Execute(context.Background(), func(script codersdk.WorkspaceAgentScript) bool {
154-
return true
155-
}))
156-
_ = testutil.RequireRecvCtx(ctx, t, fLogger.logs)
158+
})
159+
}
160+
161+
err := runner.Init(scripts, aAPI.ScriptCompleted)
162+
require.NoError(t, err)
163+
require.NoError(t, runner.Execute(context.Background(), func(script codersdk.WorkspaceAgentScript) bool {
164+
return true
165+
}))
166+
_ = testutil.RequireRecvCtx(ctx, t, fLogger.logs)
167+
168+
timing := aAPI.GetTiming()
169+
require.Equal(t, len(timing), len(tests))
170+
171+
// Sort the tests and timing by display name to ensure
172+
// consistent order.
173+
slices.SortFunc(timing, func(a, b *proto.Timing) int {
174+
return cmp.Compare(a.DisplayName, b.DisplayName)
175+
})
176+
slices.SortFunc(tests, func(a, b test) int {
177+
return cmp.Compare(a.displayName, b.displayName)
178+
})
157179

158-
require.Equal(t, len(aAPI.GetTiming()), 1)
159-
timing := aAPI.GetTiming()[0]
160-
require.Equal(t, timing.DisplayName, tt.displayName)
161-
require.Equal(t, timing.ExitCode, tt.exitCode)
180+
for i, tt := range tests {
181+
require.Equal(t, timing[i].DisplayName, tt.displayName)
182+
require.Equal(t, timing[i].ExitCode, tt.exitCode)
162183
}
163184
}
164185

0 commit comments

Comments
 (0)