Skip to content

Commit ddb00c1

Browse files
authored
Refactor test environment variables to use t.Setenv() and t.Chdir() (#3820)
1 parent 5463e38 commit ddb00c1

15 files changed

Lines changed: 49 additions & 312 deletions

.github/workflows/super-linter.lock.yml

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cli/add_command_table_test.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ func TestListWorkflowsWithMetadata(t *testing.T) {
1414
tempDir := t.TempDir()
1515

1616
// Override packages directory for testing
17-
oldHome := os.Getenv("HOME")
18-
os.Setenv("HOME", tempDir)
19-
defer os.Setenv("HOME", oldHome)
17+
t.Setenv("HOME", tempDir)
2018

2119
// Create a mock package structure
2220
packagePath := filepath.Join(tempDir, ".aw", "packages", "test-owner", "test-repo")
@@ -130,9 +128,7 @@ func TestHandleRepoOnlySpecTableDisplay(t *testing.T) {
130128
tempDir := t.TempDir()
131129

132130
// Override packages directory for testing
133-
oldHome := os.Getenv("HOME")
134-
os.Setenv("HOME", tempDir)
135-
defer os.Setenv("HOME", oldHome)
131+
t.Setenv("HOME", tempDir)
136132

137133
// Create a mock package structure
138134
packagePath := filepath.Join(tempDir, ".aw", "packages", "test-owner", "test-repo")

pkg/cli/add_wildcard_test.go

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,7 @@ func TestDiscoverWorkflowsInPackage(t *testing.T) {
104104
tempDir := t.TempDir()
105105

106106
// Override packages directory for testing
107-
oldHome := os.Getenv("HOME")
108-
os.Setenv("HOME", tempDir)
109-
defer os.Setenv("HOME", oldHome)
107+
t.Setenv("HOME", tempDir)
110108

111109
// Create a mock package structure (use .aw/packages, not .gh-aw/packages)
112110
packagePath := filepath.Join(tempDir, ".aw", "packages", "test-owner", "test-repo")
@@ -179,9 +177,7 @@ func TestDiscoverWorkflowsInPackage_NotFound(t *testing.T) {
179177
tempDir := t.TempDir()
180178

181179
// Override packages directory for testing
182-
oldHome := os.Getenv("HOME")
183-
os.Setenv("HOME", tempDir)
184-
defer os.Setenv("HOME", oldHome)
180+
t.Setenv("HOME", tempDir)
185181

186182
// Try to discover workflows in a non-existent package
187183
_, err := discoverWorkflowsInPackage("nonexistent/repo", "", false)
@@ -200,9 +196,7 @@ func TestDiscoverWorkflowsInPackage_EmptyPackage(t *testing.T) {
200196
tempDir := t.TempDir()
201197

202198
// Override packages directory for testing
203-
oldHome := os.Getenv("HOME")
204-
os.Setenv("HOME", tempDir)
205-
defer os.Setenv("HOME", oldHome)
199+
t.Setenv("HOME", tempDir)
206200

207201
// Create an empty package directory (use .aw/packages, not .gh-aw/packages)
208202
packagePath := filepath.Join(tempDir, ".aw", "packages", "empty-owner", "empty-repo")
@@ -227,9 +221,7 @@ func TestExpandWildcardWorkflows(t *testing.T) {
227221
tempDir := t.TempDir()
228222

229223
// Override packages directory for testing
230-
oldHome := os.Getenv("HOME")
231-
os.Setenv("HOME", tempDir)
232-
defer os.Setenv("HOME", oldHome)
224+
t.Setenv("HOME", tempDir)
233225

234226
// Create a mock package with workflows
235227
packagePath := filepath.Join(tempDir, ".aw", "packages", "test-org", "test-repo")
@@ -371,9 +363,7 @@ func TestExpandWildcardWorkflows_ErrorHandling(t *testing.T) {
371363
tempDir := t.TempDir()
372364

373365
// Override packages directory for testing
374-
oldHome := os.Getenv("HOME")
375-
os.Setenv("HOME", tempDir)
376-
defer os.Setenv("HOME", oldHome)
366+
t.Setenv("HOME", tempDir)
377367

378368
tests := []struct {
379369
name string
@@ -425,16 +415,10 @@ func TestAddWorkflowWithTracking_WildcardDuplicateHandling(t *testing.T) {
425415
tempDir := t.TempDir()
426416

427417
// Override HOME for package discovery
428-
oldHome := os.Getenv("HOME")
429-
os.Setenv("HOME", tempDir)
430-
defer os.Setenv("HOME", oldHome)
418+
t.Setenv("HOME", tempDir)
431419

432420
// Change to the temp directory
433-
oldWd, _ := os.Getwd()
434-
defer os.Chdir(oldWd)
435-
if err := os.Chdir(tempDir); err != nil {
436-
t.Fatalf("Failed to change to temp directory: %v", err)
437-
}
421+
t.Chdir(tempDir)
438422

439423
// Initialize a git repository
440424
if err := os.MkdirAll(filepath.Join(tempDir, ".git"), 0755); err != nil {

pkg/cli/add_workflow_not_found_test.go

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ func TestDisplayAvailableWorkflows(t *testing.T) {
1414
tempDir := t.TempDir()
1515

1616
// Override packages directory for testing
17-
oldHome := os.Getenv("HOME")
18-
os.Setenv("HOME", tempDir)
19-
defer os.Setenv("HOME", oldHome)
17+
t.Setenv("HOME", tempDir)
2018

2119
// Create a mock package structure
2220
packagePath := filepath.Join(tempDir, ".aw", "packages", "test-owner", "test-repo")
@@ -89,9 +87,7 @@ func TestDisplayAvailableWorkflowsWithVersion(t *testing.T) {
8987
tempDir := t.TempDir()
9088

9189
// Override packages directory for testing
92-
oldHome := os.Getenv("HOME")
93-
os.Setenv("HOME", tempDir)
94-
defer os.Setenv("HOME", oldHome)
90+
t.Setenv("HOME", tempDir)
9591

9692
// Create a mock package structure
9793
packagePath := filepath.Join(tempDir, ".aw", "packages", "test-owner", "test-repo")
@@ -143,9 +139,7 @@ func TestDisplayAvailableWorkflowsNoWorkflows(t *testing.T) {
143139
tempDir := t.TempDir()
144140

145141
// Override packages directory for testing
146-
oldHome := os.Getenv("HOME")
147-
os.Setenv("HOME", tempDir)
148-
defer os.Setenv("HOME", oldHome)
142+
t.Setenv("HOME", tempDir)
149143

150144
// Create an empty package structure
151145
packagePath := filepath.Join(tempDir, ".aw", "packages", "test-owner", "test-repo")
@@ -184,9 +178,7 @@ func TestDisplayAvailableWorkflowsPackageNotFound(t *testing.T) {
184178
tempDir := t.TempDir()
185179

186180
// Override packages directory for testing
187-
oldHome := os.Getenv("HOME")
188-
os.Setenv("HOME", tempDir)
189-
defer os.Setenv("HOME", oldHome)
181+
t.Setenv("HOME", tempDir)
190182

191183
// Create packages directory but don't create the specific package
192184
packagesDir := filepath.Join(tempDir, ".aw", "packages")

pkg/cli/ci_test.go

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package cli
22

33
import (
4-
"os"
54
"testing"
65
)
76

@@ -67,26 +66,13 @@ func TestIsRunningInCI(t *testing.T) {
6766
t.Run(tt.name, func(t *testing.T) {
6867
// Clear all CI-related env vars first
6968
ciVars := []string{"CI", "CONTINUOUS_INTEGRATION", "GITHUB_ACTIONS"}
70-
originalVars := make(map[string]string)
7169
for _, v := range ciVars {
72-
originalVars[v] = os.Getenv(v)
73-
os.Unsetenv(v)
70+
t.Setenv(v, "")
7471
}
7572

76-
// Restore original env vars at the end
77-
defer func() {
78-
for k, v := range originalVars {
79-
if v != "" {
80-
os.Setenv(k, v)
81-
} else {
82-
os.Unsetenv(k)
83-
}
84-
}
85-
}()
86-
8773
// Set test env vars
8874
for k, v := range tt.envVars {
89-
os.Setenv(k, v)
75+
t.Setenv(k, v)
9076
}
9177

9278
// Run test

pkg/cli/codespace_test.go

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

33
import (
4-
"os"
54
"strings"
65
"testing"
76
)
@@ -46,21 +45,9 @@ func TestIsRunningInCodespace(t *testing.T) {
4645

4746
for _, tt := range tests {
4847
t.Run(tt.name, func(t *testing.T) {
49-
// Save original value
50-
originalValue := os.Getenv("CODESPACES")
51-
defer func() {
52-
if originalValue != "" {
53-
os.Setenv("CODESPACES", originalValue)
54-
} else {
55-
os.Unsetenv("CODESPACES")
56-
}
57-
}()
58-
5948
// Set test value
6049
if tt.envValue != "" {
61-
os.Setenv("CODESPACES", tt.envValue)
62-
} else {
63-
os.Unsetenv("CODESPACES")
50+
t.Setenv("CODESPACES", tt.envValue)
6451
}
6552

6653
got := isRunningInCodespace()

pkg/cli/exec_test.go

Lines changed: 5 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package cli
22

33
import (
4-
"os"
54
"strings"
65
"testing"
76
)
@@ -48,19 +47,8 @@ func TestGhExecOrFallback(t *testing.T) {
4847
for _, tt := range tests {
4948
t.Run(tt.name, func(t *testing.T) {
5049
// Set or unset GH_TOKEN based on test case
51-
originalToken := os.Getenv("GH_TOKEN")
52-
defer func() {
53-
if originalToken != "" {
54-
os.Setenv("GH_TOKEN", originalToken)
55-
} else {
56-
os.Unsetenv("GH_TOKEN")
57-
}
58-
}()
59-
6050
if tt.ghToken != "" {
61-
os.Setenv("GH_TOKEN", tt.ghToken)
62-
} else {
63-
os.Unsetenv("GH_TOKEN")
51+
t.Setenv("GH_TOKEN", tt.ghToken)
6452
}
6553

6654
stdout, _, err := ghExecOrFallback(tt.fallbackCmd, tt.fallbackArgs, tt.fallbackEnv)
@@ -96,17 +84,8 @@ func TestGhExecOrFallbackWithGHToken(t *testing.T) {
9684
// Note: We can't easily test actual gh.Exec without a real token,
9785
// so we test that the function attempts to use gh CLI
9886

99-
originalToken := os.Getenv("GH_TOKEN")
100-
defer func() {
101-
if originalToken != "" {
102-
os.Setenv("GH_TOKEN", originalToken)
103-
} else {
104-
os.Unsetenv("GH_TOKEN")
105-
}
106-
}()
107-
10887
// Set a dummy token
109-
os.Setenv("GH_TOKEN", "dummy_token_for_test")
88+
t.Setenv("GH_TOKEN", "dummy_token_for_test")
11089

11190
// This will likely fail since we don't have a valid token,
11291
// but we're testing that it attempts gh.Exec path
@@ -126,16 +105,7 @@ func TestGhExecOrFallbackWithGHToken(t *testing.T) {
126105

127106
func TestGhExecOrFallbackIntegration(t *testing.T) {
128107
// Integration test: verify the function works end-to-end without GH_TOKEN
129-
originalToken := os.Getenv("GH_TOKEN")
130-
defer func() {
131-
if originalToken != "" {
132-
os.Setenv("GH_TOKEN", originalToken)
133-
} else {
134-
os.Unsetenv("GH_TOKEN")
135-
}
136-
}()
137-
138-
os.Unsetenv("GH_TOKEN")
108+
// (GH_TOKEN is not set by default in this test)
139109

140110
// Use a simple command that we know will work
141111
stdout, _, err := ghExecOrFallback(
@@ -188,20 +158,9 @@ func TestExtractRepoSlug(t *testing.T) {
188158

189159
for _, tt := range tests {
190160
t.Run(tt.name, func(t *testing.T) {
191-
// Save and restore env
192-
originalHost := os.Getenv("GITHUB_SERVER_URL")
193-
defer func() {
194-
if originalHost != "" {
195-
os.Setenv("GITHUB_SERVER_URL", originalHost)
196-
} else {
197-
os.Unsetenv("GITHUB_SERVER_URL")
198-
}
199-
}()
200-
161+
// Set environment
201162
if tt.githubHost != "" {
202-
os.Setenv("GITHUB_SERVER_URL", tt.githubHost)
203-
} else {
204-
os.Unsetenv("GITHUB_SERVER_URL")
163+
t.Setenv("GITHUB_SERVER_URL", tt.githubHost)
205164
}
206165

207166
slug := extractRepoSlug(tt.repoURL)

pkg/cli/github_test.go

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package cli
22

33
import (
4-
"os"
54
"testing"
65
)
76

@@ -52,33 +51,9 @@ func TestGetGitHubHost(t *testing.T) {
5251

5352
for _, tt := range tests {
5453
t.Run(tt.name, func(t *testing.T) {
55-
// Save original env vars
56-
originalServerURL := os.Getenv("GITHUB_SERVER_URL")
57-
originalGHHost := os.Getenv("GH_HOST")
58-
defer func() {
59-
if originalServerURL != "" {
60-
os.Setenv("GITHUB_SERVER_URL", originalServerURL)
61-
} else {
62-
os.Unsetenv("GITHUB_SERVER_URL")
63-
}
64-
if originalGHHost != "" {
65-
os.Setenv("GH_HOST", originalGHHost)
66-
} else {
67-
os.Unsetenv("GH_HOST")
68-
}
69-
}()
70-
71-
// Set test env vars
72-
if tt.serverURL != "" {
73-
os.Setenv("GITHUB_SERVER_URL", tt.serverURL)
74-
} else {
75-
os.Unsetenv("GITHUB_SERVER_URL")
76-
}
77-
if tt.ghHost != "" {
78-
os.Setenv("GH_HOST", tt.ghHost)
79-
} else {
80-
os.Unsetenv("GH_HOST")
81-
}
54+
// Set test env vars (always set to ensure clean state)
55+
t.Setenv("GITHUB_SERVER_URL", tt.serverURL)
56+
t.Setenv("GH_HOST", tt.ghHost)
8257

8358
// Test
8459
host := getGitHubHost()

0 commit comments

Comments
 (0)