Skip to content

Commit 1591590

Browse files
committed
test(cli): cover more command edge cases
1 parent a4e870d commit 1591590

4 files changed

Lines changed: 189 additions & 0 deletions

File tree

internal/cli/cmd/new_app_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"runtime"
77
"strings"
88
"testing"
9+
10+
"github.com/spf13/cobra"
911
)
1012

1113
func TestCreateNewApp(t *testing.T) {
@@ -149,3 +151,35 @@ func TestCreateNewAppPathIsFile(t *testing.T) {
149151
t.Fatal("expected error when app path exists as file")
150152
}
151153
}
154+
155+
func TestCreateNewAppRunE(t *testing.T) {
156+
tmp := t.TempDir()
157+
wd, _ := os.Getwd()
158+
t.Cleanup(func() { _ = os.Chdir(wd) })
159+
if err := os.Chdir(tmp); err != nil {
160+
t.Fatal(err)
161+
}
162+
163+
binDir := filepath.Join(tmp, "bin")
164+
if err := os.MkdirAll(binDir, 0o750); err != nil {
165+
t.Fatal(err)
166+
}
167+
shim := filepath.Join(binDir, "go")
168+
content := "#!/bin/sh\nexit 0\n"
169+
if runtime.GOOS == "windows" {
170+
shim = filepath.Join(binDir, "go.bat")
171+
content = "@echo off\r\nexit /b 0\r\n"
172+
}
173+
if err := os.WriteFile(shim, []byte(content), 0o755); err != nil {
174+
t.Fatal(err)
175+
}
176+
oldPath := os.Getenv("PATH")
177+
t.Cleanup(func() { _ = os.Setenv("PATH", oldPath) })
178+
if err := os.Setenv("PATH", binDir+string(os.PathListSeparator)+oldPath); err != nil {
179+
t.Fatal(err)
180+
}
181+
182+
if err := newAppCmd.RunE(&cobra.Command{}, []string{"runetest"}); err != nil {
183+
t.Fatalf("RunE failed: %v", err)
184+
}
185+
}

internal/cli/cmd/new_controller_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"path/filepath"
66
"strings"
77
"testing"
8+
9+
"github.com/spf13/cobra"
810
)
911

1012
func TestCreateNewController(t *testing.T) {
@@ -113,3 +115,71 @@ func TestCreateNewControllerAlreadyExists(t *testing.T) {
113115
t.Fatal("expected error when controller file already exists")
114116
}
115117
}
118+
119+
func TestCreateNewControllerGetwdFailure(t *testing.T) {
120+
tmp := t.TempDir()
121+
wd, _ := os.Getwd()
122+
t.Cleanup(func() { _ = os.Chdir(wd) })
123+
124+
if err := os.Chdir(tmp); err != nil {
125+
t.Fatal(err)
126+
}
127+
if err := os.RemoveAll(tmp); err != nil {
128+
t.Fatal(err)
129+
}
130+
131+
if err := createNewController("auth", ""); err == nil {
132+
t.Fatal("expected error when cwd cannot be resolved")
133+
}
134+
}
135+
136+
func TestCreateNewControllerRunE(t *testing.T) {
137+
tmp := t.TempDir()
138+
wd, _ := os.Getwd()
139+
t.Cleanup(func() { _ = os.Chdir(wd) })
140+
if err := os.Chdir(tmp); err != nil {
141+
t.Fatal(err)
142+
}
143+
144+
moduleDir := filepath.Join(tmp, "internal", "modules", "users")
145+
if err := os.MkdirAll(moduleDir, 0o750); err != nil {
146+
t.Fatal(err)
147+
}
148+
if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil {
149+
t.Fatal(err)
150+
}
151+
152+
cmd := &cobra.Command{}
153+
cmd.Flags().String("module", "", "")
154+
if err := cmd.Flags().Set("module", "users"); err != nil {
155+
t.Fatal(err)
156+
}
157+
if err := newControllerCmd.RunE(cmd, []string{"billing"}); err != nil {
158+
t.Fatalf("RunE failed: %v", err)
159+
}
160+
}
161+
162+
func TestCreateNewControllerCreateFileFailure(t *testing.T) {
163+
tmp := t.TempDir()
164+
wd, _ := os.Getwd()
165+
t.Cleanup(func() { _ = os.Chdir(wd) })
166+
if err := os.Chdir(tmp); err != nil {
167+
t.Fatal(err)
168+
}
169+
170+
moduleDir := filepath.Join(tmp, "internal", "modules", "users")
171+
if err := os.MkdirAll(moduleDir, 0o750); err != nil {
172+
t.Fatal(err)
173+
}
174+
if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil {
175+
t.Fatal(err)
176+
}
177+
if err := os.Chmod(moduleDir, 0o500); err != nil {
178+
t.Fatal(err)
179+
}
180+
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) })
181+
182+
if err := createNewController("auth", "users"); err == nil {
183+
t.Fatal("expected error when controller file cannot be created")
184+
}
185+
}

internal/cli/cmd/new_module_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"runtime"
77
"strings"
88
"testing"
9+
10+
"github.com/spf13/cobra"
911
)
1012

1113
func TestCreateNewModule(t *testing.T) {
@@ -80,3 +82,16 @@ func TestCreateNewModuleMkdirFail(t *testing.T) {
8082
t.Fatal("expected error when destination directory cannot be created")
8183
}
8284
}
85+
86+
func TestCreateNewModuleRunE(t *testing.T) {
87+
tmp := t.TempDir()
88+
wd, _ := os.Getwd()
89+
t.Cleanup(func() { _ = os.Chdir(wd) })
90+
if err := os.Chdir(tmp); err != nil {
91+
t.Fatal(err)
92+
}
93+
94+
if err := newModuleCmd.RunE(&cobra.Command{}, []string{"billing"}); err != nil {
95+
t.Fatalf("RunE failed: %v", err)
96+
}
97+
}

internal/cli/cmd/new_provider_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"path/filepath"
88
"strings"
99
"testing"
10+
11+
"github.com/spf13/cobra"
1012
)
1113

1214
func captureStdout(t *testing.T, fn func() error) (string, error) {
@@ -136,3 +138,71 @@ func TestCreateNewProviderAlreadyExists(t *testing.T) {
136138
t.Fatal("expected error when provider file already exists")
137139
}
138140
}
141+
142+
func TestCreateNewProviderGetwdFailure(t *testing.T) {
143+
tmp := t.TempDir()
144+
wd, _ := os.Getwd()
145+
t.Cleanup(func() { _ = os.Chdir(wd) })
146+
147+
if err := os.Chdir(tmp); err != nil {
148+
t.Fatal(err)
149+
}
150+
if err := os.RemoveAll(tmp); err != nil {
151+
t.Fatal(err)
152+
}
153+
154+
if err := createNewProvider("auth", ""); err == nil {
155+
t.Fatal("expected error when cwd cannot be resolved")
156+
}
157+
}
158+
159+
func TestCreateNewProviderRunE(t *testing.T) {
160+
tmp := t.TempDir()
161+
wd, _ := os.Getwd()
162+
t.Cleanup(func() { _ = os.Chdir(wd) })
163+
if err := os.Chdir(tmp); err != nil {
164+
t.Fatal(err)
165+
}
166+
167+
moduleDir := filepath.Join(tmp, "internal", "modules", "users")
168+
if err := os.MkdirAll(moduleDir, 0o750); err != nil {
169+
t.Fatal(err)
170+
}
171+
if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil {
172+
t.Fatal(err)
173+
}
174+
175+
cmd := &cobra.Command{}
176+
cmd.Flags().String("module", "", "")
177+
if err := cmd.Flags().Set("module", "users"); err != nil {
178+
t.Fatal(err)
179+
}
180+
if err := newProviderCmd.RunE(cmd, []string{"billing"}); err != nil {
181+
t.Fatalf("RunE failed: %v", err)
182+
}
183+
}
184+
185+
func TestCreateNewProviderCreateFileFailure(t *testing.T) {
186+
tmp := t.TempDir()
187+
wd, _ := os.Getwd()
188+
t.Cleanup(func() { _ = os.Chdir(wd) })
189+
if err := os.Chdir(tmp); err != nil {
190+
t.Fatal(err)
191+
}
192+
193+
moduleDir := filepath.Join(tmp, "internal", "modules", "users")
194+
if err := os.MkdirAll(moduleDir, 0o750); err != nil {
195+
t.Fatal(err)
196+
}
197+
if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil {
198+
t.Fatal(err)
199+
}
200+
if err := os.Chmod(moduleDir, 0o500); err != nil {
201+
t.Fatal(err)
202+
}
203+
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) })
204+
205+
if err := createNewProvider("auth", "users"); err == nil {
206+
t.Fatal("expected error when provider file cannot be created")
207+
}
208+
}

0 commit comments

Comments
 (0)