github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/builder/dockerfile/internals_windows_test.go (about) 1 // +build windows 2 3 package dockerfile // import "github.com/demonoid81/moby/builder/dockerfile" 4 5 import ( 6 "fmt" 7 "testing" 8 9 "gotest.tools/v3/assert" 10 is "gotest.tools/v3/assert/cmp" 11 ) 12 13 func TestNormalizeDest(t *testing.T) { 14 tests := []struct{ current, requested, expected, etext string }{ 15 {``, `D:\`, ``, `Windows does not support destinations not on the system drive (C:)`}, 16 {``, `e:/`, ``, `Windows does not support destinations not on the system drive (C:)`}, 17 {`invalid`, `./c1`, ``, `Current WorkingDir invalid is not platform consistent`}, 18 {`C:`, ``, ``, `Current WorkingDir C: is not platform consistent`}, 19 {`C`, ``, ``, `Current WorkingDir C is not platform consistent`}, 20 {`D:\`, `.`, ``, "Windows does not support relative paths when WORKDIR is not the system drive"}, 21 {``, `D`, `D`, ``}, 22 {``, `./a1`, `.\a1`, ``}, 23 {``, `.\b1`, `.\b1`, ``}, 24 {``, `/`, `\`, ``}, 25 {``, `\`, `\`, ``}, 26 {``, `c:/`, `\`, ``}, 27 {``, `c:\`, `\`, ``}, 28 {``, `.`, `.`, ``}, 29 {`C:\wdd`, `./a1`, `\wdd\a1`, ``}, 30 {`C:\wde`, `.\b1`, `\wde\b1`, ``}, 31 {`C:\wdf`, `/`, `\`, ``}, 32 {`C:\wdg`, `\`, `\`, ``}, 33 {`C:\wdh`, `c:/`, `\`, ``}, 34 {`C:\wdi`, `c:\`, `\`, ``}, 35 {`C:\wdj`, `.`, `\wdj`, ``}, 36 {`C:\wdk`, `foo/bar`, `\wdk\foo\bar`, ``}, 37 {`C:\wdl`, `foo\bar`, `\wdl\foo\bar`, ``}, 38 {`C:\wdm`, `foo/bar/`, `\wdm\foo\bar\`, ``}, 39 {`C:\wdn`, `foo\bar/`, `\wdn\foo\bar\`, ``}, 40 } 41 for _, testcase := range tests { 42 msg := fmt.Sprintf("Input: %s, %s", testcase.current, testcase.requested) 43 actual, err := normalizeDest(testcase.current, testcase.requested, "windows") 44 if testcase.etext == "" { 45 if !assert.Check(t, err, msg) { 46 continue 47 } 48 assert.Check(t, is.Equal(testcase.expected, actual), msg) 49 } else { 50 assert.Check(t, is.ErrorContains(err, testcase.etext)) 51 } 52 } 53 }