Skip to content

Commit f96848c

Browse files
committed
Migrate tests to use t.Chdir() and add linter rule
Replace manual os.Getwd()/os.Chdir()/cleanup patterns with t.Chdir() in 4 test files: - cmd/root/completion_test.go - cmd/root/record_test.go - pkg/evaluation/save_test.go - pkg/skills/skills_test.go Add forbidigo linter rule to prevent future use of os.Chdir() in tests. Assisted-By: cagent
1 parent 197b0b9 commit f96848c

5 files changed

Lines changed: 19 additions & 77 deletions

File tree

.golangci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ linters:
3838
msg: "do not use os.MkdirTemp() in tests, use t.TempDir()"
3939
- pattern: os\.Setenv()
4040
msg: "do not use os.Setenv() in tests, use t.Setenv()"
41+
- pattern: os\.Chdir()
42+
msg: "do not use os.Chdir() in tests, use t.Chdir()"
4143
- pattern: fmt\.Print.*()
4244
msg: "do not use fmt.Print() or fmt.Println() in tests"
4345
depguard:

cmd/root/completion_test.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,7 @@ func TestCompleteAgentFilename(t *testing.T) {
190190
tt.setup(t, tmpDir)
191191

192192
// Change working directory
193-
origDir, err := os.Getwd()
194-
require.NoError(t, err)
195-
require.NoError(t, os.Chdir(tmpDir))
196-
t.Cleanup(func() {
197-
require.NoError(t, os.Chdir(origDir))
198-
})
193+
t.Chdir(tmpDir)
199194

200195
completions, directive := completeAgentFilename(tt.toComplete)
201196

@@ -272,12 +267,7 @@ func TestCompleteAliasIncludesYAMLFiles(t *testing.T) {
272267
writeFile(t, tmpDir, "readme.md") // not a yaml file
273268

274269
// Change working directory
275-
origDir, err := os.Getwd()
276-
require.NoError(t, err)
277-
require.NoError(t, os.Chdir(tmpDir))
278-
t.Cleanup(func() {
279-
require.NoError(t, os.Chdir(origDir))
280-
})
270+
t.Chdir(tmpDir)
281271

282272
// Test that completeAlias includes YAML files starting with "go"
283273
completions, directive := completeAlias("go")

cmd/root/record_test.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package root
22

33
import (
4-
"os"
54
"path/filepath"
65
"strings"
76
"testing"
@@ -26,11 +25,7 @@ func TestSetupRecordingProxy_EmptyPath(t *testing.T) {
2625
}
2726

2827
func TestSetupRecordingProxy_AutoGeneratesFilename(t *testing.T) {
29-
tmpDir := t.TempDir()
30-
originalWd, err := os.Getwd()
31-
require.NoError(t, err)
32-
require.NoError(t, os.Chdir(tmpDir))
33-
t.Cleanup(func() { _ = os.Chdir(originalWd) })
28+
t.Chdir(t.TempDir())
3429

3530
var runConfig config.RuntimeConfig
3631

pkg/evaluation/save_test.go

Lines changed: 13 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,37 @@
11
package evaluation
22

33
import (
4-
"os"
54
"path/filepath"
65
"testing"
76

7+
"github.com/stretchr/testify/require"
8+
89
"github.com/docker/cagent/pkg/session"
910
)
1011

1112
func TestSaveWithCustomFilename(t *testing.T) {
12-
// Create a temporary directory for tests
13-
tmpDir := t.TempDir()
14-
15-
// Change to temp directory
16-
oldWd, err := os.Getwd()
17-
if err != nil {
18-
t.Fatalf("Failed to get working directory: %v", err)
19-
}
20-
defer func() {
21-
if err := os.Chdir(oldWd); err != nil {
22-
t.Errorf("Failed to restore working directory: %v", err)
23-
}
24-
}()
25-
26-
if err := os.Chdir(tmpDir); err != nil {
27-
t.Fatalf("Failed to change to temp dir: %v", err)
28-
}
13+
// Create a temporary directory and change to it
14+
t.Chdir(t.TempDir())
2915

3016
// Create a test session
3117
sess := session.New()
3218
sess.ID = "test-session-id"
3319

3420
// Test 1: Save with custom filename
3521
evalFile, err := Save(sess, "my-custom-eval")
36-
if err != nil {
37-
t.Fatalf("Failed to save eval: %v", err)
38-
}
39-
40-
expectedPath := filepath.Join("evals", "my-custom-eval.json")
41-
if evalFile != expectedPath {
42-
t.Errorf("Expected file path %q, got %q", expectedPath, evalFile)
43-
}
44-
45-
if _, err := os.Stat(evalFile); os.IsNotExist(err) {
46-
t.Errorf("Expected file %q to exist", evalFile)
47-
}
22+
require.NoError(t, err)
23+
require.Equal(t, filepath.Join("evals", "my-custom-eval.json"), evalFile)
24+
require.FileExists(t, evalFile)
4825

4926
// Test 2: Save without filename (should use session ID)
5027
evalFile2, err := Save(sess, "")
51-
if err != nil {
52-
t.Fatalf("Failed to save eval: %v", err)
53-
}
54-
55-
expectedPath2 := filepath.Join("evals", sess.ID+".json")
56-
if evalFile2 != expectedPath2 {
57-
t.Errorf("Expected file path %q, got %q", expectedPath2, evalFile2)
58-
}
59-
60-
if _, err := os.Stat(evalFile2); os.IsNotExist(err) {
61-
t.Errorf("Expected file %q to exist", evalFile2)
62-
}
28+
require.NoError(t, err)
29+
require.Equal(t, filepath.Join("evals", sess.ID+".json"), evalFile2)
30+
require.FileExists(t, evalFile2)
6331

6432
// Test 3: Save with same filename (should add _1 suffix)
6533
evalFile3, err := Save(sess, "my-custom-eval")
66-
if err != nil {
67-
t.Fatalf("Failed to save eval: %v", err)
68-
}
69-
70-
expectedPath3 := filepath.Join("evals", "my-custom-eval_1.json")
71-
if evalFile3 != expectedPath3 {
72-
t.Errorf("Expected file path %q, got %q", expectedPath3, evalFile3)
73-
}
74-
75-
if _, err := os.Stat(evalFile3); os.IsNotExist(err) {
76-
t.Errorf("Expected file %q to exist", evalFile3)
77-
}
34+
require.NoError(t, err)
35+
require.Equal(t, filepath.Join("evals", "my-custom-eval_1.json"), evalFile3)
36+
require.FileExists(t, evalFile3)
7837
}

pkg/skills/skills_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -274,12 +274,8 @@ func TestBuildSkillsPrompt_Empty(t *testing.T) {
274274
}
275275

276276
func TestLoad_Integration(t *testing.T) {
277-
originalWd, err := os.Getwd()
278-
require.NoError(t, err)
279-
defer func() { _ = os.Chdir(originalWd) }()
280-
281277
tmpDir := t.TempDir()
282-
require.NoError(t, os.Chdir(tmpDir))
278+
t.Chdir(tmpDir)
283279

284280
claudeProjectDir := filepath.Join(tmpDir, ".claude", "skills", "test-skill")
285281
require.NoError(t, os.MkdirAll(claudeProjectDir, 0o755))

0 commit comments

Comments
 (0)