Skip to content

Commit 36be17c

Browse files
engalarclaude
authored andcommitted
fix: make docker and diaglog tests cross-platform
- docker: skip chmod permission tests on Windows (os.Chmod unsupported) - docker/diaglog: use USERPROFILE on Windows, HOME on Unix for home dir override in tests (os.UserHomeDir reads USERPROFILE on Windows) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 1b64755 commit 36be17c

3 files changed

Lines changed: 35 additions & 20 deletions

File tree

cmd/mxcli/docker/build_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"archive/zip"
77
"os"
88
"path/filepath"
9+
"runtime"
910
"strings"
1011
"testing"
1112

@@ -18,6 +19,9 @@ func newTestZipWriter(f *os.File) *zip.Writer {
1819
}
1920

2021
func TestPatchStartPermissions_Applied(t *testing.T) {
22+
if runtime.GOOS == "windows" {
23+
t.Skip("chmod not supported on Windows")
24+
}
2125
dir := t.TempDir()
2226
binDir := filepath.Join(dir, "bin")
2327
os.MkdirAll(binDir, 0755)
@@ -35,6 +39,9 @@ func TestPatchStartPermissions_Applied(t *testing.T) {
3539
}
3640

3741
func TestPatchStartPermissions_Skipped_AlreadyExecutable(t *testing.T) {
42+
if runtime.GOOS == "windows" {
43+
t.Skip("chmod not supported on Windows")
44+
}
3845
dir := t.TempDir()
3946
binDir := filepath.Join(dir, "bin")
4047
os.MkdirAll(binDir, 0755)

cmd/mxcli/docker/download_test.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ import (
99
"testing"
1010
)
1111

12+
func setTestHomeDir(t *testing.T, dir string) {
13+
t.Helper()
14+
if runtime.GOOS == "windows" {
15+
t.Setenv("USERPROFILE", dir)
16+
} else {
17+
t.Setenv("HOME", dir)
18+
}
19+
}
20+
1221
func TestMxBuildCDNURL_ARM64(t *testing.T) {
1322
url := MxBuildCDNURL("11.6.3", "arm64")
1423
expected := "https://cdn.mendix.com/runtime/arm64-mxbuild-11.6.3.tar.gz"
@@ -48,9 +57,7 @@ func TestCachedMxBuildPath_NotCached(t *testing.T) {
4857
func TestCachedMxBuildPath_Cached(t *testing.T) {
4958
// Create a fake cached mxbuild
5059
dir := t.TempDir()
51-
origHome := os.Getenv("HOME")
52-
t.Setenv("HOME", dir)
53-
defer os.Setenv("HOME", origHome)
60+
setTestHomeDir(t, dir)
5461

5562
version := "99.99.99"
5663
modelerDir := filepath.Join(dir, ".mxcli", "mxbuild", version, "modeler")
@@ -67,9 +74,7 @@ func TestCachedMxBuildPath_Cached(t *testing.T) {
6774

6875
func TestAnyCachedMxBuildPath_Empty(t *testing.T) {
6976
dir := t.TempDir()
70-
origHome := os.Getenv("HOME")
71-
t.Setenv("HOME", dir)
72-
defer os.Setenv("HOME", origHome)
77+
setTestHomeDir(t, dir)
7378

7479
path := AnyCachedMxBuildPath()
7580
if path != "" {
@@ -79,9 +84,7 @@ func TestAnyCachedMxBuildPath_Empty(t *testing.T) {
7984

8085
func TestAnyCachedMxBuildPath_Found(t *testing.T) {
8186
dir := t.TempDir()
82-
origHome := os.Getenv("HOME")
83-
t.Setenv("HOME", dir)
84-
defer os.Setenv("HOME", origHome)
87+
setTestHomeDir(t, dir)
8588

8689
modelerDir := filepath.Join(dir, ".mxcli", "mxbuild", "11.6.3", "modeler")
8790
os.MkdirAll(modelerDir, 0755)
@@ -123,9 +126,7 @@ func TestCachedRuntimePath_NotCached(t *testing.T) {
123126

124127
func TestCachedRuntimePath_Cached(t *testing.T) {
125128
dir := t.TempDir()
126-
origHome := os.Getenv("HOME")
127-
t.Setenv("HOME", dir)
128-
defer os.Setenv("HOME", origHome)
129+
setTestHomeDir(t, dir)
129130

130131
version := "99.99.99"
131132
launcherDir := filepath.Join(dir, ".mxcli", "runtime", version, "runtime", "launcher")
@@ -141,9 +142,7 @@ func TestCachedRuntimePath_Cached(t *testing.T) {
141142

142143
func TestResolveMxBuild_FindsCachedVersion(t *testing.T) {
143144
dir := t.TempDir()
144-
origHome := os.Getenv("HOME")
145-
t.Setenv("HOME", dir)
146-
defer os.Setenv("HOME", origHome)
145+
setTestHomeDir(t, dir)
147146

148147
// Set up a fake cached mxbuild
149148
modelerDir := filepath.Join(dir, ".mxcli", "mxbuild", "11.6.3", "modeler")

mdl/diaglog/diaglog_test.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package diaglog
55
import (
66
"os"
77
"path/filepath"
8+
"runtime"
89
"strings"
910
"testing"
1011
"time"
@@ -22,12 +23,20 @@ func TestNilLoggerIsSafe(t *testing.T) {
2223
l.Close()
2324
}
2425

26+
func setHomeDir(t *testing.T, dir string) {
27+
t.Helper()
28+
// Windows uses USERPROFILE, Unix uses HOME. os.UserHomeDir() checks both.
29+
if runtime.GOOS == "windows" {
30+
t.Setenv("USERPROFILE", dir)
31+
} else {
32+
t.Setenv("HOME", dir)
33+
}
34+
}
35+
2536
func TestInitAndClose(t *testing.T) {
2637
// Use a temp dir for logs
2738
tmpDir := t.TempDir()
28-
origHome := os.Getenv("HOME")
29-
t.Setenv("HOME", tmpDir)
30-
defer os.Setenv("HOME", origHome)
39+
setHomeDir(t, tmpDir)
3140

3241
l := Init("test-version", "test")
3342
if l == nil {
@@ -53,7 +62,7 @@ func TestInitAndClose(t *testing.T) {
5362

5463
func TestCommandLogging(t *testing.T) {
5564
tmpDir := t.TempDir()
56-
t.Setenv("HOME", tmpDir)
65+
setHomeDir(t, tmpDir)
5766

5867
l := Init("test", "batch")
5968
if l == nil {
@@ -89,7 +98,7 @@ func TestCommandLogging(t *testing.T) {
8998

9099
func TestDisabledViaEnv(t *testing.T) {
91100
tmpDir := t.TempDir()
92-
t.Setenv("HOME", tmpDir)
101+
setHomeDir(t, tmpDir)
93102
t.Setenv("MXCLI_LOG", "0")
94103

95104
l := Init("test", "batch")

0 commit comments

Comments
 (0)