package aghtest import ( "io/ioutil" "os" "runtime" "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) // PrepareTestDir returns the full path to temporary created directory and // registers the appropriate cleanup for *t. func PrepareTestDir(t *testing.T) (dir string) { t.Helper() wd, err := os.Getwd() require.Nil(t, err) dir, err = ioutil.TempDir(wd, "agh-test") require.Nil(t, err) require.NotEmpty(t, dir) t.Cleanup(func() { // TODO(e.burkov): Replace with t.TempDir methods after updating // go version to 1.15. start := time.Now() for { err := os.RemoveAll(dir) if err == nil { break } if runtime.GOOS != "windows" || time.Since(start) >= 500*time.Millisecond { break } time.Sleep(5 * time.Millisecond) } assert.Nil(t, err) }) return dir }