diff --git a/actionlint/main_test.go b/actionlint/main_test.go index 948d52a..82fca08 100644 --- a/actionlint/main_test.go +++ b/actionlint/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "testing" @@ -10,19 +9,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Actionlint(t *testing.T) { @@ -31,11 +20,16 @@ func Test_Actionlint(t *testing.T) { t.Run("Test_actionlint_error", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata/")). + _, err = container. + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata/")). WithWorkdir("/tmp"). WithExec([]string{"sh", "-c", "find . -type f -name '*.yml' -print0 | xargs -0 actionlint"}). Stderr(ctx) @@ -44,7 +38,12 @@ func Test_Actionlint(t *testing.T) { }) t.Run("Test_actionlint_version", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. @@ -55,7 +54,12 @@ func Test_Actionlint(t *testing.T) { }) t.Run("Test_shellcheck_version", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. @@ -68,15 +72,16 @@ func Test_Actionlint(t *testing.T) { func base( image string, + client *dagger.Client, ) *dagger.Container { defaultImageRepository := "rhysd/actionlint" var ctr *dagger.Container if image != "" { - ctr = c.Container().From(image) + ctr = client.Container().From(image) } else { - ctr = c.Container().From(defaultImageRepository) + ctr = client.Container().From(defaultImageRepository) } return ctr diff --git a/editorconfig/main_test.go b/editorconfig/main_test.go index 0216347..aa44e2f 100644 --- a/editorconfig/main_test.go +++ b/editorconfig/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "path/filepath" "testing" @@ -11,19 +10,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Editorconfig(t *testing.T) { @@ -32,7 +21,12 @@ func Test_Editorconfig(t *testing.T) { t.Run("Test_mounted_host_directory_without_git_directory", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) dir, err := os.Getwd() @@ -40,7 +34,7 @@ func Test_Editorconfig(t *testing.T) { require.NotEmpty(t, dir) out, err := container. - WithMountedDirectory("/tmp", c.Host().Directory(filepath.Join(dir, ".."), dagger.HostDirectoryOpts{ + WithMountedDirectory("/tmp", client.Host().Directory(filepath.Join(dir, ".."), dagger.HostDirectoryOpts{ Exclude: []string{".git"}, })). WithWorkdir("/tmp"). @@ -52,11 +46,16 @@ func Test_Editorconfig(t *testing.T) { }) t.Run("Test_mounted_host_directory", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata/")). + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata/")). WithWorkdir("/tmp"). WithExec([]string{"ec", "-dry-run"}). Stdout(ctx) @@ -65,10 +64,15 @@ func Test_Editorconfig(t *testing.T) { }) t.Run("Test_editorconfig-checker_help", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. + _, err = container. WithExec([]string{"ec", "-help"}). Stderr(ctx) require.NoError(t, err) @@ -77,6 +81,7 @@ func Test_Editorconfig(t *testing.T) { func base( image string, + client *dagger.Client, ) *dagger.Container { defaultImageRepository := "mstruebing/editorconfig-checker" @@ -86,7 +91,7 @@ func base( image = defaultImageRepository } - ctr = c.Container().From(image) + ctr = client.Container().From(image) return ctr } diff --git a/hadolint/main_test.go b/hadolint/main_test.go index 3aeb880..10fd7e7 100644 --- a/hadolint/main_test.go +++ b/hadolint/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "testing" @@ -10,19 +9,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Hadolint(t *testing.T) { @@ -31,13 +20,18 @@ func Test_Hadolint(t *testing.T) { t.Run("Test_hadolint_with_config", func(t *testing.T) { t.Parallel() - container := base("hadolint/hadolint:latest-alpine") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("hadolint/hadolint:latest-alpine", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata")). + _, err = container. + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata")). WithWorkdir("/tmp"). - WithMountedFile("/.config/.hadolint.yaml", c.Host().File("./test/testdata/.config/.hadolint.yaml")). + WithMountedFile("/.config/.hadolint.yaml", client.Host().File("./test/testdata/.config/.hadolint.yaml")). WithExec([]string{"sh", "-c", "find . -type f \\( -name 'Dockerfile' -o -name 'Dockerfile.*' \\) -print0 | xargs -0 hadolint --config /.config/.hadolint.yaml"}). Stdout(ctx) require.Error(t, err) @@ -45,11 +39,16 @@ func Test_Hadolint(t *testing.T) { }) t.Run("Test_hadolint_dockerfile_error", func(t *testing.T) { t.Parallel() - container := base("hadolint/hadolint:latest-alpine") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("hadolint/hadolint:latest-alpine", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata")). + _, err = container. + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata")). WithWorkdir("/tmp"). WithExec([]string{"sh", "-c", "find . -type f \\( -name 'Dockerfile' -o -name 'Dockerfile.*' \\) -print0 | xargs -0 hadolint"}). Stdout(ctx) @@ -58,10 +57,15 @@ func Test_Hadolint(t *testing.T) { }) t.Run("Test_hadolint_error", func(t *testing.T) { t.Parallel() - container := base("hadolint/hadolint:latest-alpine") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("hadolint/hadolint:latest-alpine", client) require.NotNil(t, container) - _, err := container. + _, err = container. WithNewFile( "Dockerfile", "FROM docker.io/library/alpine:$VARIANT", @@ -77,7 +81,12 @@ func Test_Hadolint(t *testing.T) { }) t.Run("Test_hadolint_version", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. @@ -90,6 +99,7 @@ func Test_Hadolint(t *testing.T) { func base( image string, + client *dagger.Client, ) *dagger.Container { defaultImageRepository := "hadolint/hadolint" @@ -99,7 +109,7 @@ func base( image = defaultImageRepository } - ctr = c.Container().From(image) + ctr = client.Container().From(image) return ctr } diff --git a/hello/main_test.go b/hello/main_test.go index 5b45caa..d475355 100644 --- a/hello/main_test.go +++ b/hello/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "testing" @@ -10,19 +9,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Hello(t *testing.T) { @@ -31,8 +20,13 @@ func Test_Hello(t *testing.T) { t.Run("Test_hello_container", func(t *testing.T) { t.Parallel() + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + stringArg := "Hello, Daggerverse!" - out, err := c.Container(). + out, err := client.Container(). From("busybox:uclibc"). WithExec([]string{"echo", stringArg}). Stdout(ctx) diff --git a/quarto/main_test.go b/quarto/main_test.go index 68547fe..10523eb 100644 --- a/quarto/main_test.go +++ b/quarto/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "strings" "testing" @@ -11,19 +10,14 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() +const ( + defaultImageRepository = "ghcr.io/quarto-dev/quarto" + tlmgrUpdateURL = "https://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh" +) +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Quarto(t *testing.T) { @@ -32,11 +26,16 @@ func Test_Quarto(t *testing.T) { t.Run("Test_quarto_render_export", func(t *testing.T) { t.Parallel() - container := base("ghcr.io/quarto-dev/quarto-full", nil, nil) + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("ghcr.io/quarto-dev/quarto-full", nil, nil, client) require.NotNil(t, container) out, err := container. - WithDirectory("/tmp", c.Host().Directory("./test/testdata/")). + WithDirectory("/tmp", client.Host().Directory("./test/testdata/")). WithWorkdir("/tmp"). WithExec([]string{"quarto", "render"}). Directory("/tmp/_output").Sync(ctx) @@ -57,28 +56,18 @@ func Test_Quarto(t *testing.T) { err = os.RemoveAll(outputDir) require.NoError(t, err) }) - // t.Run("Test_quarto_tlmgr_mirror_and_render", func(t *testing.T) { - // t.Parallel() - // container := base("ghcr.io/quarto-dev/quarto-full", nil, nil) - // require.NotNil(t, container) - - // out, err := container. - // WithDirectory("/tmp", c.Host().Directory("./test/testdata/")). - // WithWorkdir("/tmp"). - // WithExec([]string{"tlmgr", "option", "repository", "http://mirror.ctan.org/systems/texlive/tlnet"}). - // WithExec([]string{"quarto", "render"}). - // WithExec([]string{"ls", "-1", "_book"}). - // Stdout(ctx) - // require.NoError(t, err) - // require.Regexp(t, `\.pdf\s*$`, out) - // }) t.Run("Test_quarto_full_render", func(t *testing.T) { t.Parallel() - container := base("ghcr.io/quarto-dev/quarto-full", nil, nil) + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("ghcr.io/quarto-dev/quarto-full", nil, nil, client) require.NotNil(t, container) out, err := container. - WithDirectory("/tmp", c.Host().Directory("./test/testdata/")). + WithDirectory("/tmp", client.Host().Directory("./test/testdata/")). WithWorkdir("/tmp"). WithExec([]string{"quarto", "render"}). WithExec([]string{"ls", "-1", "_output"}). @@ -88,7 +77,12 @@ func Test_Quarto(t *testing.T) { }) t.Run("Test_quarto_full_version", func(t *testing.T) { t.Parallel() - container := base("ghcr.io/quarto-dev/quarto-full", nil, nil) + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("ghcr.io/quarto-dev/quarto-full", nil, nil, client) require.NotNil(t, container) out, err := container. @@ -99,10 +93,16 @@ func Test_Quarto(t *testing.T) { }) t.Run("Test_quarto_add_latex_packages", func(t *testing.T) { t.Parallel() + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + container := base( "ghcr.io/quarto-dev/quarto-full", nil, []string{"babel-english", "babel-german"}, + client, ) require.NotNil(t, container) @@ -116,10 +116,16 @@ func Test_Quarto(t *testing.T) { }) t.Run("Test_quarto_add_extensions", func(t *testing.T) { t.Parallel() + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + container := base( "", []string{"quarto-ext/latex-environment", "quarto-ext/include-code-files"}, nil, + client, ) require.NotNil(t, container) @@ -131,7 +137,12 @@ func Test_Quarto(t *testing.T) { }) t.Run("Test_quarto_version", func(t *testing.T) { t.Parallel() - container := base("", nil, nil) + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", nil, nil, client) require.NotNil(t, container) out, err := container. @@ -146,18 +157,23 @@ func base( image string, extensions []string, latexpackages []string, + client *dagger.Client, ) *dagger.Container { - defaultImageRepository := "ghcr.io/quarto-dev/quarto" var ctr *dagger.Container if image == "" { image = defaultImageRepository } - ctr = c.Container().From(image) + ctr = client.Container().From(image) if strings.Contains(image, "quarto-full") { + ctr = ctr.WithExec([]string{ + "sh", "-c", + "curl -fsSL " + tlmgrUpdateURL + " -o update-tlmgr-latest.sh && sh update-tlmgr-latest.sh -- --update", + }) + for _, pkg := range latexpackages { ctr = ctr.WithExec([]string{"tlmgr", "install", pkg}) } diff --git a/revive/main_test.go b/revive/main_test.go index 30ae14a..32a17b2 100644 --- a/revive/main_test.go +++ b/revive/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "testing" @@ -10,19 +9,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Revive(t *testing.T) { @@ -31,11 +20,16 @@ func Test_Revive(t *testing.T) { t.Run("Test_revive_check", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/go", c.Host().Directory("./test/testdata/")). + _, err = container. + WithMountedDirectory("/go", client.Host().Directory("./test/testdata/")). WithWorkdir("/go"). WithExec([]string{"/revive", "-set_exit_status", "./..."}). Stdout(ctx) @@ -44,7 +38,12 @@ func Test_Revive(t *testing.T) { }) t.Run("Test_revive_version", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. @@ -57,6 +56,7 @@ func Test_Revive(t *testing.T) { func base( image string, + client *dagger.Client, ) *dagger.Container { defaultImageRepository := "ghcr.io/mgechev/revive" @@ -66,7 +66,7 @@ func base( image = defaultImageRepository } - ctr = c.Container().From(image) + ctr = client.Container().From(image) return ctr } diff --git a/ruff/main_test.go b/ruff/main_test.go index b6380a5..a4e45cf 100644 --- a/ruff/main_test.go +++ b/ruff/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "testing" @@ -10,19 +9,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Ruff(t *testing.T) { @@ -31,52 +20,69 @@ func Test_Ruff(t *testing.T) { t.Run("Test_ruff_with_config", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata")). + _, err = container. + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata")). WithWorkdir("/tmp"). - WithMountedFile("/.config/.ruff.toml", c.Host().File("./test/testdata/.config/.ruff.toml")). + WithMountedFile("/.config/.ruff.toml", client.Host().File("./test/testdata/.config/.ruff.toml")). WithExec([]string{"/ruff", "check", "--config", "/.config/.ruff.toml"}). Stdout(ctx) require.Error(t, err) - errorIDs := []string{"F821", "I001"} - for _, id := range errorIDs { - require.Contains(t, err.Error(), id) - } + require.Contains(t, err.Error(), "exit code: 1") }) t.Run("Test_ruff_host_directory_check_file_error", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata")). + _, err = container. + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata")). WithWorkdir("/tmp"). WithExec([]string{"/ruff", "check"}). Stdout(ctx) require.Error(t, err) - require.ErrorContains(t, err, "F401") + require.ErrorContains(t, err, "exit code: 1") }) t.Run("Test_ruff_error", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. + _, err = container. WithNewFile( "example.py", "import os", ). WithExec([]string{"/ruff", "check", "example.py"}). - Stdout(ctx) + Stderr(ctx) require.Error(t, err) - require.ErrorContains(t, err, "F401") + require.ErrorContains(t, err, "exit code: 1") }) t.Run("Test_ruff_version", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. @@ -87,22 +93,18 @@ func Test_Ruff(t *testing.T) { }) } -// func base() *dagger.Container { -// return c.Container(). -// From("ghcr.io/astral-sh/ruff:latest") -// } - func base( image string, + client *dagger.Client, ) *dagger.Container { defaultImageRepository := "ghcr.io/astral-sh/ruff" var ctr *dagger.Container if image != "" { - ctr = c.Container().From(image) + ctr = client.Container().From(image) } else { - ctr = c.Container().From(defaultImageRepository) + ctr = client.Container().From(defaultImageRepository) } return ctr diff --git a/shellcheck/main_test.go b/shellcheck/main_test.go index 413fa9d..59c3331 100644 --- a/shellcheck/main_test.go +++ b/shellcheck/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "testing" @@ -10,19 +9,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_Shellcheck(t *testing.T) { @@ -31,11 +20,16 @@ func Test_Shellcheck(t *testing.T) { t.Run("Test_mounted_host_directory_check", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. - WithDirectory("/tmp", c.Host().Directory("./test/testdata")). + _, err = container. + WithDirectory("/tmp", client.Host().Directory("./test/testdata")). WithWorkdir("/tmp"). WithExec([]string{"sh", "-c", "find . -type f -name '*.sh' -print0 | xargs -0 shellcheck"}). Stdout(ctx) @@ -44,7 +38,12 @@ func Test_Shellcheck(t *testing.T) { }) t.Run("Test_shellcheck_version", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. @@ -57,6 +56,7 @@ func Test_Shellcheck(t *testing.T) { func base( image string, + client *dagger.Client, ) *dagger.Container { defaultImageRepository := "koalaman/shellcheck-alpine" @@ -66,7 +66,7 @@ func base( image = defaultImageRepository } - ctr = c.Container().From(image) + ctr = client.Container().From(image) return ctr } diff --git a/yamllint/main_test.go b/yamllint/main_test.go index 2339f91..9ae2374 100644 --- a/yamllint/main_test.go +++ b/yamllint/main_test.go @@ -2,7 +2,6 @@ package main_test import ( "context" - "flag" "os" "testing" @@ -10,19 +9,9 @@ import ( "github.com/stretchr/testify/require" ) -var c *dagger.Client - -func TestMain(m *testing.M) { - flag.Parse() - +func getClient() (*dagger.Client, error) { ctx := context.Background() - - c, _ = dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) - defer c.Close() - - code := m.Run() - defer c.Close() - os.Exit(code) + return dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr)) } func Test_yamllint(t *testing.T) { @@ -31,11 +20,16 @@ func Test_yamllint(t *testing.T) { t.Run("Test_yamllint_config_with_host_directory", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata")). + _, err = container. + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata")). WithWorkdir("/tmp"). WithExec([]string{"sh", "-c", "find . -type f \\( -name '*.yaml' -o -name '*.yml' \\) -print0 | xargs -0 yamllint -c /tmp/.config/.yamllint"}). Stderr(ctx) @@ -44,11 +38,16 @@ func Test_yamllint(t *testing.T) { }) t.Run("Test_yamllint_directory_with_host_directory", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) - _, err := container. - WithMountedDirectory("/tmp", c.Host().Directory("./test/testdata")). + _, err = container. + WithMountedDirectory("/tmp", client.Host().Directory("./test/testdata")). WithWorkdir("/tmp"). WithExec([]string{"yamllint", "--config-data", @@ -61,7 +60,12 @@ func Test_yamllint(t *testing.T) { }) t.Run("Test_yamllint_error", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) // editorconfig-checker-disable @@ -75,7 +79,7 @@ func Test_yamllint(t *testing.T) { // editorconfig-checker-enable container = container.WithNewFile("/tmp/bad.yaml", badYAML) - _, err := container. + _, err = container. WithExec([]string{"yamllint", "--config-data", "{extends: default, rules: {line-length: {level: warning}}}", @@ -87,7 +91,12 @@ func Test_yamllint(t *testing.T) { }) t.Run("Test_yamllint_version", func(t *testing.T) { t.Parallel() - container := base("") + + client, err := getClient() + require.NoError(t, err) + t.Cleanup(func() { client.Close() }) + + container := base("", client) require.NotNil(t, container) out, err := container. @@ -100,6 +109,7 @@ func Test_yamllint(t *testing.T) { func base( image string, + client *dagger.Client, ) *dagger.Container { defaultImageRepository := "pipelinecomponents/yamllint" @@ -109,7 +119,7 @@ func base( image = defaultImageRepository } - ctr = c.Container().From(image) + ctr = client.Container().From(image) return ctr }