github.com/roboticscm/goman@v0.0.0-20210203095141-87c07b4a0a55/src/os/os_windows_test.go (about) 1 package os_test 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "syscall" 8 "testing" 9 ) 10 11 func init() { 12 tmpdir, err := ioutil.TempDir("", "symtest") 13 if err != nil { 14 panic("failed to create temp directory: " + err.Error()) 15 } 16 defer os.RemoveAll(tmpdir) 17 18 err = os.Symlink("target", filepath.Join(tmpdir, "symlink")) 19 if err == nil { 20 return 21 } 22 23 err = err.(*os.LinkError).Err 24 switch err { 25 case syscall.EWINDOWS, syscall.ERROR_PRIVILEGE_NOT_HELD: 26 supportsSymlinks = false 27 } 28 } 29 30 func TestSameWindowsFile(t *testing.T) { 31 temp, err := ioutil.TempDir("", "TestSameWindowsFile") 32 if err != nil { 33 t.Fatal(err) 34 } 35 defer os.RemoveAll(temp) 36 37 wd, err := os.Getwd() 38 if err != nil { 39 t.Fatal(err) 40 } 41 err = os.Chdir(temp) 42 if err != nil { 43 t.Fatal(err) 44 } 45 defer os.Chdir(wd) 46 47 f, err := os.Create("a") 48 if err != nil { 49 t.Fatal(err) 50 } 51 f.Close() 52 53 ia1, err := os.Stat("a") 54 if err != nil { 55 t.Fatal(err) 56 } 57 58 path, err := filepath.Abs("a") 59 if err != nil { 60 t.Fatal(err) 61 } 62 ia2, err := os.Stat(path) 63 if err != nil { 64 t.Fatal(err) 65 } 66 if !os.SameFile(ia1, ia2) { 67 t.Errorf("files should be same") 68 } 69 70 p := filepath.VolumeName(path) + filepath.Base(path) 71 if err != nil { 72 t.Fatal(err) 73 } 74 ia3, err := os.Stat(p) 75 if err != nil { 76 t.Fatal(err) 77 } 78 if !os.SameFile(ia1, ia3) { 79 t.Errorf("files should be same") 80 } 81 }