AdGuardHome/internal/aghtest/os_windows.go
Ainar Garipov c08bf86b71 Pull request: all: update go and backend tools
Updates #2275.

Squashed commit of the following:

commit f24c26cd2b49fac00a581936da4ccb13ca341bc9
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Mar 10 21:33:15 2021 +0300

    aghtest: imp docs

commit 46f5b06f9743e800b489e8c30af07d24bfdcf989
Merge: bfb852cb 55d4c7ee
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Mar 10 21:32:32 2021 +0300

    Merge branch 'master' into 2275-upd

commit bfb852cbc74ec219a41e985f2dcb090d58299aee
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Mar 10 19:06:32 2021 +0300

    scripts: rem unsupported platform

commit c1645e247f18d384a980c60d3a94b9363f83f174
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Mar 10 18:47:57 2021 +0300

    all: rollback more

commit 989811b5e38498234dc11baf5dd153c76b9dada4
Merge: 976bdfbd 2d704242
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Mar 10 18:30:42 2021 +0300

    Merge branch 'master' into 2275-upd

commit 976bdfbdd44983f4cd657a486b94ff63f5885fd5
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Mar 10 18:28:23 2021 +0300

    aghtest: fix os_windows

commit 9e85080eefe882d72c939969f7008e3c46467c0c
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Wed Mar 10 18:15:37 2021 +0300

    all: rewrite windows workaround, imp code, docs

commit 35a0b1d8656640a962fe9ae019c3d665f42707ce
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Thu Jan 21 20:38:17 2021 +0300

    all: update go and backend tools
2021-03-11 12:17:54 +03:00

64 lines
1.3 KiB
Go

// +build windows
package aghtest
import (
"io/ioutil"
"os"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
const (
maxRetryDur = 500 * time.Millisecond
retryDur = 5 * time.Millisecond
)
func prepareTestDir(t *testing.T) (dir string) {
// Windows, including the version of Windows Server that Github Actions
// uses, apparently likes to overly eagerly inspect new directories with
// its Windows Defender. Disabling it might require additional
// workarounds, and until we've figured it out, just retry the deletion
// until the error goes away.
//
// The code is largely inspired by the one that has been introduced into
// the go command itself. We should probably make a proposal to use the
// same mechanism in t.TempDir.
//
// See https://go-review.googlesource.com/c/go/+/172337.
//
// See https://github.com/golang/go/issues/44919.
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() {
start := time.Now()
for {
err := os.RemoveAll(dir)
if err == nil {
break
}
if time.Since(start) >= maxRetryDur {
break
}
time.Sleep(retryDur)
}
assert.Nil(t, err)
})
return dir
}