github.com/ssdev-go/moby@v17.12.1-ce-rc2+incompatible/pkg/system/path_windows_test.go (about) 1 // +build windows 2 3 package system 4 5 import ( 6 "testing" 7 8 "github.com/containerd/continuity/pathdriver" 9 ) 10 11 // TestCheckSystemDriveAndRemoveDriveLetter tests CheckSystemDriveAndRemoveDriveLetter 12 func TestCheckSystemDriveAndRemoveDriveLetter(t *testing.T) { 13 // Fails if not C drive. 14 _, err := CheckSystemDriveAndRemoveDriveLetter(`d:\`, pathdriver.LocalPathDriver) 15 if err == nil || (err != nil && err.Error() != "The specified path is not on the system drive (C:)") { 16 t.Fatalf("Expected error for d:") 17 } 18 19 // Single character is unchanged 20 var path string 21 if path, err = CheckSystemDriveAndRemoveDriveLetter("z", pathdriver.LocalPathDriver); err != nil { 22 t.Fatalf("Single character should pass") 23 } 24 if path != "z" { 25 t.Fatalf("Single character should be unchanged") 26 } 27 28 // Two characters without colon is unchanged 29 if path, err = CheckSystemDriveAndRemoveDriveLetter("AB", pathdriver.LocalPathDriver); err != nil { 30 t.Fatalf("2 characters without colon should pass") 31 } 32 if path != "AB" { 33 t.Fatalf("2 characters without colon should be unchanged") 34 } 35 36 // Abs path without drive letter 37 if path, err = CheckSystemDriveAndRemoveDriveLetter(`\l`, pathdriver.LocalPathDriver); err != nil { 38 t.Fatalf("abs path no drive letter should pass") 39 } 40 if path != `\l` { 41 t.Fatalf("abs path without drive letter should be unchanged") 42 } 43 44 // Abs path without drive letter, linux style 45 if path, err = CheckSystemDriveAndRemoveDriveLetter(`/l`, pathdriver.LocalPathDriver); err != nil { 46 t.Fatalf("abs path no drive letter linux style should pass") 47 } 48 if path != `\l` { 49 t.Fatalf("abs path without drive letter linux failed %s", path) 50 } 51 52 // Drive-colon should be stripped 53 if path, err = CheckSystemDriveAndRemoveDriveLetter(`c:\`, pathdriver.LocalPathDriver); err != nil { 54 t.Fatalf("An absolute path should pass") 55 } 56 if path != `\` { 57 t.Fatalf(`An absolute path should have been shortened to \ %s`, path) 58 } 59 60 // Verify with a linux-style path 61 if path, err = CheckSystemDriveAndRemoveDriveLetter(`c:/`, pathdriver.LocalPathDriver); err != nil { 62 t.Fatalf("An absolute path should pass") 63 } 64 if path != `\` { 65 t.Fatalf(`A linux style absolute path should have been shortened to \ %s`, path) 66 } 67 68 // Failure on c: 69 if path, err = CheckSystemDriveAndRemoveDriveLetter(`c:`, pathdriver.LocalPathDriver); err == nil { 70 t.Fatalf("c: should fail") 71 } 72 if err.Error() != `No relative path specified in "c:"` { 73 t.Fatalf(path, err) 74 } 75 76 // Failure on d: 77 if path, err = CheckSystemDriveAndRemoveDriveLetter(`d:`, pathdriver.LocalPathDriver); err == nil { 78 t.Fatalf("c: should fail") 79 } 80 if err.Error() != `No relative path specified in "d:"` { 81 t.Fatalf(path, err) 82 } 83 }