github.com/hattya/nazuna@v0.7.1-0.20240331055452-55e14c275c1c/util_windows_test.go (about) 1 // 2 // nazuna :: util_windows_test.go 3 // 4 // Copyright (c) 2014-2022 Akinori Hattori <hattya@gmail.com> 5 // 6 // SPDX-License-Identifier: MIT 7 // 8 9 package nazuna_test 10 11 import ( 12 "os" 13 "testing" 14 15 "github.com/hattya/nazuna" 16 ) 17 18 func TestCreateLink(t *testing.T) { 19 sandbox(t) 20 21 // hardlink 22 if err := nazuna.CreateLink("src\x00", "dst"); err == nil { 23 t.Error("expected error") 24 } 25 if err := nazuna.CreateLink("src", "dst\x00"); err == nil { 26 t.Error("expected error") 27 } 28 if err := nazuna.CreateLink("src", "dst"); err == nil { 29 t.Error("expected error") 30 } 31 if p := "src\x00"; nazuna.IsLink(p) { 32 t.Errorf("IsLink(%q) = true, expected false", p) 33 } 34 if p := "src"; nazuna.IsLink(p) { 35 t.Errorf("IsLink(%q) = true, expected false", p) 36 } 37 if p, o := "src", "dst"; nazuna.LinksTo(p, o) { 38 t.Errorf("LinksTo(%q, %q) = true, expected false", p, o) 39 } 40 41 if err := touch("src"); err != nil { 42 t.Fatal(err) 43 } 44 if p := "src\x00"; nazuna.IsLink(p) { 45 t.Errorf("IsLink(%q) = true, expected false", p) 46 } 47 if err := nazuna.CreateLink("src", "dst"); err != nil { 48 t.Error(err) 49 } 50 if p := "src"; !nazuna.IsLink(p) { 51 t.Errorf("IsLink(%q) = false, expected true", p) 52 } 53 if p := "dst"; !nazuna.IsLink(p) { 54 t.Errorf("IsLink(%q) = false, expected true", p) 55 } 56 if p, o := "dst", "src"; !nazuna.LinksTo(p, o) { 57 t.Errorf("LinksTo(%q, %q) = false, expected true", p, o) 58 } 59 if p, o := "dst", "_"; nazuna.LinksTo(p, o) { 60 t.Errorf("LinksTo(%q, %q) = true, expected false", p, o) 61 } 62 if err := nazuna.Unlink("dst"); err != nil { 63 t.Error(err) 64 } 65 if err := nazuna.Unlink("src"); err == nil { 66 t.Error("expected error") 67 } 68 69 // junction 70 if err := mkdir("srcdir"); err != nil { 71 t.Fatal(err) 72 } 73 if err := touch("dstdir"); err != nil { 74 t.Fatal(err) 75 } 76 if err := nazuna.CreateLink("srcdir", "dstdir"); err == nil { 77 t.Error("expected error") 78 } 79 if p, o := "dstdir", "srcdir"; nazuna.LinksTo(p, o) { 80 t.Errorf("LinksTo(%q, %q) = true, expected false", p, o) 81 } 82 if err := os.Remove("dstdir"); err != nil { 83 t.Fatal(err) 84 } 85 86 if err := nazuna.CreateLink("srcdir", "dstdir"); err != nil { 87 t.Error(err) 88 } 89 if p := "srcdir"; nazuna.IsLink(p) { 90 t.Errorf("IsLink(%q) = true, expected false", p) 91 } 92 if p := "dstdir"; !nazuna.IsLink(p) { 93 t.Errorf("IsLink(%q) = false, expected true", p) 94 } 95 if p, o := "dstdir", "srcdir"; !nazuna.LinksTo(p, o) { 96 t.Errorf("LinksTo(%q, %q) = false, expected true", p, o) 97 } 98 if err := nazuna.Unlink("dstdir"); err != nil { 99 t.Error(err) 100 } 101 if err := nazuna.Unlink("srcdir"); err == nil { 102 t.Error("expected error") 103 } 104 }