github.com/alecthomas/kong@v0.9.1-0.20240410131203-2ab5733f1179/mapper_windows_test.go (about) 1 //go:build windows 2 // +build windows 3 4 package kong_test 5 6 import ( 7 "os" 8 "testing" 9 10 "github.com/alecthomas/assert/v2" 11 ) 12 13 func TestWindowsPathMapper(t *testing.T) { 14 var cli struct { 15 Path string `short:"p" type:"path"` 16 Files []string `short:"f" type:"path"` 17 } 18 wd, err := os.Getwd() 19 assert.NoError(t, err, "Getwd failed") 20 p := mustNew(t, &cli) 21 22 _, err = p.Parse([]string{`-p`, `c:\an\absolute\path`, `-f`, `c:\second\absolute\path\`, `-f`, `relative\path\file`}) 23 assert.NoError(t, err) 24 assert.Equal(t, `c:\an\absolute\path`, cli.Path) 25 assert.Equal(t, []string{`c:\second\absolute\path\`, wd + `\relative\path\file`}, cli.Files) 26 } 27 28 func TestWindowsFileMapper(t *testing.T) { 29 type CLI struct { 30 File *os.File `arg:""` 31 } 32 var cli CLI 33 p := mustNew(t, &cli) 34 _, err := p.Parse([]string{"testdata\\file.txt"}) 35 assert.NoError(t, err) 36 assert.NotZero(t, cli.File, "File should not be nil") 37 _ = cli.File.Close() 38 _, err = p.Parse([]string{"testdata\\missing.txt"}) 39 assert.Error(t, err) 40 assert.Contains(t, err.Error(), "missing.txt:") 41 assert.IsError(t, err, os.ErrNotExist) 42 _, err = p.Parse([]string{"-"}) 43 assert.NoError(t, err) 44 assert.Equal(t, os.Stdin, cli.File) 45 }