diff options
Diffstat (limited to 'pkg/container/host_environment_test.go')
-rw-r--r-- | pkg/container/host_environment_test.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pkg/container/host_environment_test.go b/pkg/container/host_environment_test.go new file mode 100644 index 0000000..2614a2f --- /dev/null +++ b/pkg/container/host_environment_test.go @@ -0,0 +1,71 @@ +package container + +import ( + "archive/tar" + "context" + "io" + "os" + "path" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" +) + +// Type assert HostEnvironment implements ExecutionsEnvironment +var _ ExecutionsEnvironment = &HostEnvironment{} + +func TestCopyDir(t *testing.T) { + dir, err := os.MkdirTemp("", "test-host-env-*") + assert.NoError(t, err) + defer os.RemoveAll(dir) + ctx := context.Background() + e := &HostEnvironment{ + Path: filepath.Join(dir, "path"), + TmpDir: filepath.Join(dir, "tmp"), + ToolCache: filepath.Join(dir, "tool_cache"), + ActPath: filepath.Join(dir, "act_path"), + StdOut: os.Stdout, + Workdir: path.Join("testdata", "scratch"), + } + _ = os.MkdirAll(e.Path, 0700) + _ = os.MkdirAll(e.TmpDir, 0700) + _ = os.MkdirAll(e.ToolCache, 0700) + _ = os.MkdirAll(e.ActPath, 0700) + err = e.CopyDir(e.Workdir, e.Path, true)(ctx) + assert.NoError(t, err) +} + +func TestGetContainerArchive(t *testing.T) { + dir, err := os.MkdirTemp("", "test-host-env-*") + assert.NoError(t, err) + defer os.RemoveAll(dir) + ctx := context.Background() + e := &HostEnvironment{ + Path: filepath.Join(dir, "path"), + TmpDir: filepath.Join(dir, "tmp"), + ToolCache: filepath.Join(dir, "tool_cache"), + ActPath: filepath.Join(dir, "act_path"), + StdOut: os.Stdout, + Workdir: path.Join("testdata", "scratch"), + } + _ = os.MkdirAll(e.Path, 0700) + _ = os.MkdirAll(e.TmpDir, 0700) + _ = os.MkdirAll(e.ToolCache, 0700) + _ = os.MkdirAll(e.ActPath, 0700) + expectedContent := []byte("sdde/7sh") + err = os.WriteFile(filepath.Join(e.Path, "action.yml"), expectedContent, 0600) + assert.NoError(t, err) + archive, err := e.GetContainerArchive(ctx, e.Path) + assert.NoError(t, err) + defer archive.Close() + reader := tar.NewReader(archive) + h, err := reader.Next() + assert.NoError(t, err) + assert.Equal(t, "action.yml", h.Name) + content, err := io.ReadAll(reader) + assert.NoError(t, err) + assert.Equal(t, expectedContent, content) + _, err = reader.Next() + assert.ErrorIs(t, err, io.EOF) +} |