Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 5 additions & 16 deletions internal/antest/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ package antest

import (
"os"
"runtime"
"testing"

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

func prepareBadDoc(t testing.TB, kind string, invalidFormat bool) (string, func()) {
t.Helper()
folder := t.TempDir()

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

switch kind {
case "yaml", "yml":
f, err := os.CreateTemp(workaroundTempDir(t)(), "*.yaml")
f, err := os.CreateTemp(folder, "*.yaml")
require.NoError(t, err)
file = f.Name()
f.Close()

if invalidFormat {
data = []byte(`--
Expand All @@ -76,9 +77,10 @@ info:
}

case "json":
f, err := os.CreateTemp(workaroundTempDir(t)(), "*.json")
f, err := os.CreateTemp(folder, "*.json")
require.NoError(t, err)
file = f.Name()
f.Close()

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

return file, func() {}
}

func workaroundTempDir(t testing.TB) func() string {
// Workaround for go testing bug on Windows: https://github.com/golang/go/issues/71544
// On windows, t.TempDir() doesn't properly release file handles yet,
// se we just leave it unchecked (no cleanup would take place).
if runtime.GOOS == "windows" {
return func() string {
return ""
}
}

return t.TempDir
}
6 changes: 2 additions & 4 deletions internal/debug/debug.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,9 @@ import (
"runtime"
)

var (
output = os.Stdout
)
var output = os.Stdout //nolint:gochecknoglobals // this is on purpose to be overridable during tests

// GetLogger provides a prefix debug logger
// GetLogger provides a prefix debug logger.
func GetLogger(prefix string, debug bool) func(string, ...any) {
if debug {
logger := log.New(output, prefix+":", log.LstdFlags)
Expand Down
38 changes: 21 additions & 17 deletions internal/debug/debug_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,52 +5,56 @@ package debug

import (
"os"
"runtime"
"testing"

"github.com/go-openapi/testify/v2/assert"
"github.com/go-openapi/testify/v2/require"
)

func TestDebug(t *testing.T) {
tmpFile, err := os.CreateTemp(workaroundTempDir(t)(), "debug-test")
folder := t.TempDir()

tmpFile, err := os.CreateTemp(folder, "debug-test")
require.NoError(t, err)
tmpFileClosed := false
defer func() {
if tmpFileClosed {
return
}
_ = tmpFile.Close()
}()

output = tmpFile
tmpName := tmpFile.Name()
testLogger := GetLogger("test", true)

testLogger("A debug: %s", "a string")
tmpFile.Close()
tmpFileClosed = true

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

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

tmpEmptyFile, err := os.CreateTemp(workaroundTempDir(t)(), "debug-test")
tmpEmptyFile, err := os.CreateTemp(folder, "debug-empty-test")
require.NoError(t, err)
tmpEmptyFileClosed := false
defer func() {
if tmpEmptyFileClosed {
return
}
_ = tmpEmptyFile.Close()
}()
tmpEmpty := tmpEmptyFile.Name()
testLogger = GetLogger("test", false)

testLogger("A debug: %s", "a string")
tmpFile.Close()
tmpEmptyFile.Close()
tmpEmptyFileClosed = true

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

assert.Empty(t, flushed)
}

func workaroundTempDir(t testing.TB) func() string {
// Workaround for go testing bug on Windows: https://github.com/golang/go/issues/71544
// On windows, t.TempDir() doesn't properly release file handles yet,
// se we just leave it unchecked (no cleanup would take place).
if runtime.GOOS == "windows" {
return func() string {
return ""
}
}

return t.TempDir
}