summaryrefslogtreecommitdiffstats
path: root/pkg/commands/oscommands/os_windows_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/commands/oscommands/os_windows_test.go')
-rw-r--r--pkg/commands/oscommands/os_windows_test.go78
1 files changed, 78 insertions, 0 deletions
diff --git a/pkg/commands/oscommands/os_windows_test.go b/pkg/commands/oscommands/os_windows_test.go
new file mode 100644
index 000000000..cf9c1e68a
--- /dev/null
+++ b/pkg/commands/oscommands/os_windows_test.go
@@ -0,0 +1,78 @@
+//go:build windows
+// +build windows
+
+package oscommands
+
+import (
+ "testing"
+
+ "github.com/go-errors/errors"
+ "github.com/stretchr/testify/assert"
+)
+
+// handling this in a separate file because str.ToArgv has different behaviour if we're on windows
+
+func TestOSCommandOpenFileWindows(t *testing.T) {
+ type scenario struct {
+ filename string
+ runner *FakeCmdObjRunner
+ test func(error)
+ }
+
+ scenarios := []scenario{
+ {
+ filename: "test",
+ runner: NewFakeRunner(t).
+ ExpectArgs([]string{"cmd", "/c", "start", "", "test"}, "", errors.New("error")),
+ test: func(err error) {
+ assert.Error(t, err)
+ },
+ },
+ {
+ filename: "test",
+ runner: NewFakeRunner(t).
+ ExpectArgs([]string{"cmd", "/c", "start", "", "test"}, "", nil),
+ test: func(err error) {
+ assert.NoError(t, err)
+ },
+ },
+ {
+ filename: "filename with spaces",
+ runner: NewFakeRunner(t).
+ ExpectArgs([]string{"cmd", "/c", "start", "", "filename with spaces"}, "", nil),
+ test: func(err error) {
+ assert.NoError(t, err)
+ },
+ },
+ {
+ filename: "let's_test_with_single_quote",
+ runner: NewFakeRunner(t).
+ ExpectArgs([]string{"cmd", "/c", "start", "", "let's_test_with_single_quote"}, "", nil),
+ test: func(err error) {
+ assert.NoError(t, err)
+ },
+ },
+ {
+ filename: "$USER.txt",
+ runner: NewFakeRunner(t).
+ ExpectArgs([]string{"cmd", "/c", "start", "", "$USER.txt"}, "", nil),
+ test: func(err error) {
+ assert.NoError(t, err)
+ },
+ },
+ }
+
+ for _, s := range scenarios {
+ oSCmd := NewDummyOSCommandWithRunner(s.runner)
+ platform := &Platform{
+ OS: "windows",
+ Shell: "cmd",
+ ShellArg: "/c",
+ }
+ oSCmd.Platform = platform
+ oSCmd.Cmd.platform = platform
+ oSCmd.UserConfig.OS.OpenCommand = `start "" {{filename}}`
+
+ s.test(oSCmd.OpenFile(s.filename))
+ }
+}