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  }