Skip to content

Commit ae774fa

Browse files
committed
fix: CI
1 parent 4b7b09f commit ae774fa

File tree

5 files changed

+89
-16
lines changed

5 files changed

+89
-16
lines changed

godump_integration_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@ func main() {
2929
t.Fatalf("failed to create temp file: %v", err)
3030
}
3131

32-
if _, err := tempFile.WriteString(sourceCode); err != nil {
32+
_, err = tempFile.WriteString(sourceCode)
33+
if err != nil {
3334
t.Fatalf("failed to write temp file: %v", err)
3435
}
3536
tempFile.Close()
3637

3738
// Run the program using `go run`. By capturing the output, we ensure
3839
// that the program's stdout is not a TTY.
40+
//nolint:gosec // tempFile.Name() is a controlled temporary file created by this test
3941
cmd := exec.Command("go", "run", tempFile.Name())
4042
output, err := cmd.CombinedOutput()
4143
if err != nil {
@@ -68,13 +70,15 @@ func main() {
6870
t.Fatalf("failed to create temp file: %v", err)
6971
}
7072

71-
if _, err := tempFile.WriteString(sourceCode); err != nil {
73+
_, err = tempFile.WriteString(sourceCode)
74+
if err != nil {
7275
t.Fatalf("failed to write temp file: %v", err)
7376
}
7477
tempFile.Close()
7578

7679
// Run the program using `go run`. By capturing the output, we ensure
7780
// that the program's stdout is not a TTY.
81+
//nolint:gosec // tempFile.Name() is a controlled temporary file created by this test
7882
cmd := exec.Command("go", "run", tempFile.Name())
7983

8084
cmd.Env = append(os.Environ(), "FORCE_COLOR=1")

terminal_unix.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ import (
77
"testing"
88
)
99

10+
var isTestEnv = testing.Testing
11+
1012
// isTerminal checks if the given file is a terminal.
1113
// Uses ModeCharDevice on Unix-like systems.
1214
// In test environments, it returns true unless explicitly overridden by environment variables.
1315
func isTerminal(f *os.File) bool {
14-
if isTestEnvironment() {
16+
if isTestEnv() {
1517
return true
1618
}
1719

@@ -20,9 +22,4 @@ func isTerminal(f *os.File) bool {
2022
return false
2123
}
2224
return (fileInfo.Mode() & os.ModeCharDevice) != 0
23-
}
24-
25-
// isTestEnvironment checks if the code is running in a test environment
26-
func isTestEnvironment() bool {
27-
return testing.Testing()
28-
}
25+
}

terminal_unix_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package godump
2+
3+
import (
4+
"os"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestIsTerminal_Unix(t *testing.T) {
11+
// Mock isTestEnv to bypass the test environment check
12+
originalIsTestEnv := isTestEnv
13+
isTestEnv = func() bool { return false }
14+
defer func() { isTestEnv = originalIsTestEnv }()
15+
16+
t.Run("should return false for a regular file", func(t *testing.T) {
17+
tmpFile, err := os.CreateTemp("", "test-is-terminal")
18+
assert.NoError(t, err)
19+
defer os.Remove(tmpFile.Name())
20+
defer tmpFile.Close()
21+
22+
assert.False(t, isTerminal(tmpFile))
23+
})
24+
25+
t.Run("should return false when stat fails", func(t *testing.T) {
26+
tmpFile, err := os.CreateTemp("", "test-stat-fails")
27+
assert.NoError(t, err)
28+
tmpFile.Close()
29+
os.Remove(tmpFile.Name())
30+
31+
assert.False(t, isTerminal(tmpFile))
32+
})
33+
34+
t.Run("should return true when in test environment", func(t *testing.T) {
35+
isTestEnv = func() bool { return true }
36+
defer func() {
37+
isTestEnv = originalIsTestEnv
38+
}()
39+
assert.True(t, isTerminal(os.Stdout))
40+
})
41+
}

terminal_windows.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import (
88
"testing"
99
)
1010

11+
var isTestEnv = testing.Testing
12+
1113
// isTerminal checks if the given file is a terminal.
1214
// Uses GetConsoleMode on Windows.
1315
// In test environments, it returns true unless explicitly overridden by environment variables.
1416
func isTerminal(f *os.File) bool {
15-
if isTestEnvironment() {
17+
if isTestEnv() {
1618
return true
1719
}
1820

@@ -21,9 +23,4 @@ func isTerminal(f *os.File) bool {
2123
// Fails for redirected/piped output
2224
err := syscall.GetConsoleMode(syscall.Handle(f.Fd()), &mode)
2325
return err == nil
24-
}
25-
26-
// isTestEnvironment checks if the code is running in a test environment
27-
func isTestEnvironment() bool {
28-
return testing.Testing()
29-
}
26+
}

terminal_windows_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//go:build windows
2+
3+
package godump
4+
5+
import (
6+
"os"
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
func TestIsTerminal_Windows(t *testing.T) {
13+
// Mock isTestEnv to bypass the test environment check
14+
originalIsTestEnv := isTestEnv
15+
isTestEnv = func() bool { return false }
16+
defer func() { isTestEnv = originalIsTestEnv }()
17+
18+
t.Run("should return false for a regular file", func(t *testing.T) {
19+
tmpFile, err := os.CreateTemp("", "test-is-terminal-windows")
20+
assert.NoError(t, err)
21+
defer os.Remove(tmpFile.Name())
22+
defer tmpFile.Close()
23+
24+
// On Windows, GetConsoleMode should fail for a regular file, so isTerminal returns false.
25+
assert.False(t, isTerminal(tmpFile))
26+
})
27+
28+
t.Run("should return true when in test environment", func(t *testing.T) {
29+
isTestEnv = func() bool { return true }
30+
defer func() { isTestEnv = originalIsTestEnv }()
31+
32+
assert.True(t, isTerminal(os.Stdout))
33+
})
34+
}

0 commit comments

Comments
 (0)