test: replace os.Setenv with t.Setenv()

Use t.Setenv() which automatically restores the original value when
the test completes, eliminating the need for manual cleanup.

Go 1.18 modernization pattern.

Assisted-By: cagent
Signed-off-by: David Gageot <david.gageot@docker.com>
This commit is contained in:
David Gageot
2026-01-20 10:32:02 +01:00
committed by Guillaume Lours
parent 093205121c
commit bcc0401e0e
2 changed files with 26 additions and 48 deletions

View File

@@ -17,7 +17,6 @@
package compose
import (
"context"
"os"
"path/filepath"
"testing"
@@ -48,13 +47,11 @@ services:
err := os.WriteFile(composeFile, []byte(composeContent), 0o644)
require.NoError(t, err)
// Create compose service
service, err := NewComposeService(nil)
require.NoError(t, err)
// Load the project
ctx := context.Background()
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
})
@@ -87,19 +84,14 @@ services:
require.NoError(t, err)
// Set environment variable
require.NoError(t, os.Setenv("TEST_VAR", "resolved_value"))
t.Cleanup(func() {
require.NoError(t, os.Unsetenv("TEST_VAR"))
})
t.Setenv("TEST_VAR", "resolved_value")
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// Test with environment resolution (default)
t.Run("WithResolution", func(t *testing.T) {
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
})
require.NoError(t, err)
@@ -114,7 +106,7 @@ services:
// Test without environment resolution
t.Run("WithoutResolution", func(t *testing.T) {
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
ProjectOptionsFns: []cli.ProjectOptionsFn{cli.WithoutEnvironmentResolution},
})
@@ -145,10 +137,8 @@ services:
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// Load only specific services
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
Services: []string{"web", "db"},
})
@@ -177,11 +167,9 @@ services:
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// Without debug profile
t.Run("WithoutProfile", func(t *testing.T) {
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
})
require.NoError(t, err)
@@ -191,7 +179,7 @@ services:
// With debug profile
t.Run("WithProfile", func(t *testing.T) {
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
Profiles: []string{"debug"},
})
@@ -216,15 +204,13 @@ services:
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// Track events received
var events []string
listener := func(event string, metadata map[string]any) {
events = append(events, event)
}
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
LoadListeners: []api.LoadListener{listener},
})
@@ -251,11 +237,9 @@ services:
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// Without explicit project name
t.Run("InferredName", func(t *testing.T) {
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
})
require.NoError(t, err)
@@ -265,7 +249,7 @@ services:
// With explicit project name
t.Run("ExplicitName", func(t *testing.T) {
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
ProjectName: "my-custom-project",
})
@@ -288,10 +272,8 @@ services:
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// With compatibility mode
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
Compatibility: true,
})
@@ -317,10 +299,8 @@ this is not valid yaml: [[[
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// Should return an error for invalid YAML
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{composeFile},
})
@@ -332,10 +312,8 @@ func TestLoadProject_MissingComposeFile(t *testing.T) {
service, err := NewComposeService(nil)
require.NoError(t, err)
ctx := context.Background()
// Should return an error for missing file
project, err := service.LoadProject(ctx, api.ProjectLoadOptions{
project, err := service.LoadProject(t.Context(), api.ProjectLoadOptions{
ConfigPaths: []string{"/nonexistent/compose.yaml"},
})

View File

@@ -35,20 +35,20 @@ import (
// behavior.
func TestWindowsBufferSize(t *testing.T) {
orig := os.Getenv(WindowsBufferSizeEnvVar)
defer os.Setenv(WindowsBufferSizeEnvVar, orig) //nolint:errcheck
t.Run("empty value", func(t *testing.T) {
t.Setenv(WindowsBufferSizeEnvVar, "")
assert.Equal(t, defaultBufferSize, DesiredWindowsBufferSize())
})
err := os.Setenv(WindowsBufferSizeEnvVar, "")
require.NoError(t, err)
assert.Equal(t, defaultBufferSize, DesiredWindowsBufferSize())
t.Run("invalid value", func(t *testing.T) {
t.Setenv(WindowsBufferSizeEnvVar, "a")
assert.Equal(t, defaultBufferSize, DesiredWindowsBufferSize())
})
err = os.Setenv(WindowsBufferSizeEnvVar, "a")
require.NoError(t, err)
assert.Equal(t, defaultBufferSize, DesiredWindowsBufferSize())
err = os.Setenv(WindowsBufferSizeEnvVar, "10")
require.NoError(t, err)
assert.Equal(t, 10, DesiredWindowsBufferSize())
t.Run("valid value", func(t *testing.T) {
t.Setenv(WindowsBufferSizeEnvVar, "10")
assert.Equal(t, 10, DesiredWindowsBufferSize())
})
}
func TestNoEvents(t *testing.T) {
@@ -114,7 +114,7 @@ func TestGitBranchSwitch(t *testing.T) {
f.events = nil
// consume all the events in the background
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithCancel(t.Context())
done := f.consumeEventsInBackground(ctx)
for i, dir := range dirs {