tmpfile handling changes

This commit is contained in:
Jack Wright 2024-12-01 20:05:39 -08:00
parent 470ca0a628
commit 93a41331ec

View file

@ -16,9 +16,11 @@ package cobra
import ( import (
"bytes" "bytes"
"errors"
"fmt" "fmt"
"log" "log"
"os" "os"
"path/filepath"
"testing" "testing"
) )
@ -40,12 +42,12 @@ func TestGenNushellCompletion(t *testing.T) {
} }
func TestGenNushellCompletionFile(t *testing.T) { func TestGenNushellCompletionFile(t *testing.T) {
err := os.Mkdir("./tmp", 0o755) tmpFile, err := os.CreateTemp("", "cobra-test")
if err != nil { if err != nil {
log.Fatal(err.Error()) log.Fatal(err.Error())
} }
defer os.RemoveAll("./tmp") defer os.RemoveAll(tmpFile.Name())
rootCmd := &Command{Use: "root", Args: NoArgs, Run: emptyRun} rootCmd := &Command{Use: "root", Args: NoArgs, Run: emptyRun}
child := &Command{ child := &Command{
@ -55,18 +57,18 @@ func TestGenNushellCompletionFile(t *testing.T) {
} }
rootCmd.AddCommand(child) rootCmd.AddCommand(child)
assertNoErr(t, rootCmd.GenNushellCompletionFile("./tmp/test", true)) assertNoErr(t, rootCmd.GenNushellCompletionFile(tmpFile.Name(), true))
} }
func TestFailGenNushellCompletionFile(t *testing.T) { func TestFailGenNushellCompletionFile(t *testing.T) {
err := os.Mkdir("./tmp", 0o755) tmpDir, err := os.MkdirTemp("", "cobra-test")
if err != nil { if err != nil {
log.Fatal(err.Error()) t.Fatal(err.Error())
} }
defer os.RemoveAll("./tmp") defer os.RemoveAll(tmpDir)
f, _ := os.OpenFile("./tmp/test", os.O_CREATE, 0o400) f, _ := os.OpenFile(filepath.Join(tmpDir, "test"), os.O_CREATE, 0400)
defer f.Close() defer f.Close()
rootCmd := &Command{Use: "root", Args: NoArgs, Run: emptyRun} rootCmd := &Command{Use: "root", Args: NoArgs, Run: emptyRun}
@ -77,19 +79,9 @@ func TestFailGenNushellCompletionFile(t *testing.T) {
} }
rootCmd.AddCommand(child) rootCmd.AddCommand(child)
got := rootCmd.GenNushellCompletionFile("./tmp/test", true) got := rootCmd.GenFishCompletionFile(f.Name(), false)
if got == nil { if !errors.Is(got, os.ErrPermission) {
t.Error("should raise permission denied error") t.Errorf("got: %s, want: %s", got.Error(), os.ErrPermission.Error())
}
if os.Getenv("MSYSTEM") == "MINGW64" {
if got.Error() != "open ./tmp/test: Access is denied." {
t.Errorf("got: %s, want: %s", got.Error(), "open ./tmp/test: Access is denied.")
}
} else {
if got.Error() != "open ./tmp/test: permission denied" {
t.Errorf("got: %s, want: %s", got.Error(), "open ./tmp/test: permission denied")
}
} }
} }