Skip to content

Commit 5229610

Browse files
committed
test: removed special case for handling testing dirs on windows
golang/go#71544 is still officially open. However a fix has been committed to go codebase. This issue is not really blocking: the problem lies on windows not reliaby cleaning up the temporary directory. Signed-off-by: Frédéric BIDON <fredbi@yahoo.com>
1 parent 7285c2a commit 5229610

File tree

3 files changed

+28
-37
lines changed

3 files changed

+28
-37
lines changed

internal/antest/helpers_test.go

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package antest
55

66
import (
77
"os"
8-
"runtime"
98
"testing"
109

1110
"github.com/go-openapi/testify/v2/require"
@@ -50,6 +49,7 @@ func TestLoadSpecErrorCases(t *testing.T) {
5049

5150
func prepareBadDoc(t testing.TB, kind string, invalidFormat bool) (string, func()) {
5251
t.Helper()
52+
folder := t.TempDir()
5353

5454
var (
5555
file string
@@ -58,9 +58,10 @@ func prepareBadDoc(t testing.TB, kind string, invalidFormat bool) (string, func(
5858

5959
switch kind {
6060
case "yaml", "yml":
61-
f, err := os.CreateTemp(workaroundTempDir(t)(), "*.yaml")
61+
f, err := os.CreateTemp(folder, "*.yaml")
6262
require.NoError(t, err)
6363
file = f.Name()
64+
f.Close()
6465

6566
if invalidFormat {
6667
data = []byte(`--
@@ -76,9 +77,10 @@ info:
7677
}
7778

7879
case "json":
79-
f, err := os.CreateTemp(workaroundTempDir(t)(), "*.json")
80+
f, err := os.CreateTemp(folder, "*.json")
8081
require.NoError(t, err)
8182
file = f.Name()
83+
f.Close()
8284

8385
if invalidFormat {
8486
data = []byte(`{
@@ -104,16 +106,3 @@ info:
104106

105107
return file, func() {}
106108
}
107-
108-
func workaroundTempDir(t testing.TB) func() string {
109-
// Workaround for go testing bug on Windows: https://github.com/golang/go/issues/71544
110-
// On windows, t.TempDir() doesn't properly release file handles yet,
111-
// se we just leave it unchecked (no cleanup would take place).
112-
if runtime.GOOS == "windows" {
113-
return func() string {
114-
return ""
115-
}
116-
}
117-
118-
return t.TempDir
119-
}

internal/debug/debug.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@ import (
1111
"runtime"
1212
)
1313

14-
var (
15-
output = os.Stdout
16-
)
14+
var output = os.Stdout //nolint:gochecknoglobals // this is on purpose to be overridable during tests
1715

18-
// GetLogger provides a prefix debug logger
16+
// GetLogger provides a prefix debug logger.
1917
func GetLogger(prefix string, debug bool) func(string, ...any) {
2018
if debug {
2119
logger := log.New(output, prefix+":", log.LstdFlags)

internal/debug/debug_test.go

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,52 +5,56 @@ package debug
55

66
import (
77
"os"
8-
"runtime"
98
"testing"
109

1110
"github.com/go-openapi/testify/v2/assert"
1211
"github.com/go-openapi/testify/v2/require"
1312
)
1413

1514
func TestDebug(t *testing.T) {
16-
tmpFile, err := os.CreateTemp(workaroundTempDir(t)(), "debug-test")
15+
folder := t.TempDir()
16+
17+
tmpFile, err := os.CreateTemp(folder, "debug-test")
1718
require.NoError(t, err)
19+
tmpFileClosed := false
20+
defer func() {
21+
if tmpFileClosed {
22+
return
23+
}
24+
_ = tmpFile.Close()
25+
}()
1826

1927
output = tmpFile
2028
tmpName := tmpFile.Name()
2129
testLogger := GetLogger("test", true)
2230

2331
testLogger("A debug: %s", "a string")
2432
tmpFile.Close()
33+
tmpFileClosed = true
2534

2635
flushed, err := os.ReadFile(tmpName)
2736
require.NoError(t, err)
2837

2938
assert.Contains(t, string(flushed), "A debug: a string")
3039

31-
tmpEmptyFile, err := os.CreateTemp(workaroundTempDir(t)(), "debug-test")
40+
tmpEmptyFile, err := os.CreateTemp(folder, "debug-empty-test")
3241
require.NoError(t, err)
42+
tmpEmptyFileClosed := false
43+
defer func() {
44+
if tmpEmptyFileClosed {
45+
return
46+
}
47+
_ = tmpEmptyFile.Close()
48+
}()
3349
tmpEmpty := tmpEmptyFile.Name()
3450
testLogger = GetLogger("test", false)
3551

3652
testLogger("A debug: %s", "a string")
37-
tmpFile.Close()
53+
tmpEmptyFile.Close()
54+
tmpEmptyFileClosed = true
3855

3956
flushed, err = os.ReadFile(tmpEmpty)
4057
require.NoError(t, err)
4158

4259
assert.Empty(t, flushed)
4360
}
44-
45-
func workaroundTempDir(t testing.TB) func() string {
46-
// Workaround for go testing bug on Windows: https://github.com/golang/go/issues/71544
47-
// On windows, t.TempDir() doesn't properly release file handles yet,
48-
// se we just leave it unchecked (no cleanup would take place).
49-
if runtime.GOOS == "windows" {
50-
return func() string {
51-
return ""
52-
}
53-
}
54-
55-
return t.TempDir
56-
}

0 commit comments

Comments
 (0)