diff --git a/internal/pkg/exec_test.go b/internal/pkg/exec_test.go index e6751f0f..c88ff3f4 100644 --- a/internal/pkg/exec_test.go +++ b/internal/pkg/exec_test.go @@ -147,6 +147,7 @@ func TestExec(t *testing.T) { t.Errorf("unexpected status:\n%s", string(faultStatus)) } + destroyStatus(t, base, 2) testtoolDestroy(t, base, c) }, expectsFS{ ".": {Mode: fs.ModeDir | 0700}, @@ -201,6 +202,7 @@ func TestExec(t *testing.T) { ), ignorePathname, wantNet, nil}, }) + destroyStatus(t, base, 2) testtoolDestroy(t, base, c) }, expectsFS{ ".": {Mode: fs.ModeDir | 0700}, @@ -244,6 +246,7 @@ func TestExec(t *testing.T) { ), ignorePathname, wantOffline, nil}, }) + destroyStatus(t, base, 2) testtoolDestroy(t, base, c) }, expectsFS{ ".": {Mode: fs.ModeDir | 0700}, @@ -290,6 +293,7 @@ func TestExec(t *testing.T) { ), ignorePathname, wantOffline, nil}, }) + destroyStatus(t, base, 2) testtoolDestroy(t, base, c) }, expectsFS{ ".": {Mode: fs.ModeDir | 0700}, @@ -358,6 +362,7 @@ func TestExec(t *testing.T) { ), ignorePathname, wantOffline, nil}, }) + destroyStatus(t, base, 2) testtoolDestroy(t, base, c) }, expectsFS{ ".": {Mode: fs.ModeDir | 0700}, @@ -410,6 +415,7 @@ func TestExec(t *testing.T) { ), ignorePathname, wantOffline, nil}, }) + destroyStatus(t, base, 2) testtoolDestroy(t, base, c) }, expectsFS{ ".": {Mode: fs.ModeDir | 0700}, @@ -473,6 +479,8 @@ func TestExec(t *testing.T) { "check": {Mode: 0400, Data: []byte("binfmt")}, }, nil}, }) + + destroyStatus(t, base, 2) }, expectsFS{ ".": {Mode: fs.ModeDir | 0700}, diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go index 48763b2a..0877e791 100644 --- a/internal/pkg/pkg_test.go +++ b/internal/pkg/pkg_test.go @@ -245,6 +245,30 @@ func newDestroyArtifactFunc(a pkg.Artifact) func( } } +// destroyStatus counts non-substitution status entries and destroys them. +func destroyStatus(t *testing.T, base *check.Absolute, n int) { + dents, err := os.ReadDir(base.Append("status").String()) + if err != nil { + t.Fatal(err) + } + + for _, dent := range dents { + if !dent.Type().IsRegular() { + t.Errorf("%s: %s", dent.Name(), dent.Type()) + } + if err = os.Remove(base.Append( + "status", + dent.Name(), + ).String()); err != nil { + t.Fatal(err) + } + } + + if len(dents) != n { + t.Errorf("ReadDir: %d entries, want %d", len(dents), n) + } +} + func TestIdent(t *testing.T) { t.Parallel() @@ -489,8 +513,9 @@ func checkWithCache(t *testing.T, testCases []cacheTestCase) { } } - // destroy non-deterministic status files - if err := os.RemoveAll(base.Append("status").String()); err != nil { + // destroy empty status directory + if err := syscall.Rmdir(base.Append("status").String()); err != nil { + t.Error(expectsFrom(base.Append("status").String())) t.Fatal(err) }