mirror of
https://github.com/docker/compose.git
synced 2026-02-09 01:59:22 +08:00
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:
committed by
Guillaume Lours
parent
093205121c
commit
bcc0401e0e
@@ -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"},
|
||||
})
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user