pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/path/path_test.go (about) 1 package path 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2022 ESSENTIAL KAOS // 6 // Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "os" 12 "testing" 13 14 . "pkg.re/essentialkaos/check.v1" 15 ) 16 17 // ////////////////////////////////////////////////////////////////////////////////// // 18 19 func Test(t *testing.T) { TestingT(t) } 20 21 type PathUtilSuite struct{} 22 23 // ////////////////////////////////////////////////////////////////////////////////// // 24 25 var _ = Suite(&PathUtilSuite{}) 26 27 // ////////////////////////////////////////////////////////////////////////////////// // 28 29 func (s *PathUtilSuite) TestBase(c *C) { 30 c.Assert(Base("/some/test/path"), Equals, "path") 31 c.Assert(Clean("//some/test//path"), Equals, "/some/test/path") 32 c.Assert(Dir("/some/test/path"), Equals, "/some/test") 33 c.Assert(Ext("/some/test/path/file.jpg"), Equals, ".jpg") 34 c.Assert(IsAbs("/some/test/path"), Equals, true) 35 c.Assert(Join("/", "some", "test", "path"), Equals, "/some/test/path") 36 37 match, err := Match("/some/test/*", "/some/test/path") 38 39 c.Assert(err, IsNil) 40 c.Assert(match, Equals, true) 41 42 d, f := Split("/some/test/path/file.jpg") 43 44 c.Assert(d, Equals, "/some/test/path/") 45 c.Assert(f, Equals, "file.jpg") 46 } 47 48 func (s *PathUtilSuite) TestDirN(c *C) { 49 c.Assert(DirN("", 99), Equals, "") 50 c.Assert(DirN("1", 99), Equals, "1") 51 c.Assert(DirN("abcde", 1), Equals, "abcde") 52 c.Assert(DirN("/a/b/c/d", -1), Equals, "/a/b/c/d") 53 c.Assert(DirN("/a/b/c/d", 1), Equals, "/a") 54 c.Assert(DirN("a/b/c/d", 2), Equals, "a/b") 55 c.Assert(DirN("/a/b/c/d", 99), Equals, "/a/b/c/d") 56 } 57 58 func (s *PathUtilSuite) TestEvalHome(c *C) { 59 homeDir := os.Getenv("HOME") 60 61 c.Assert(Clean("~/path"), Equals, homeDir+"/path") 62 c.Assert(Clean("/path"), Equals, "/path") 63 } 64 65 func (s *PathUtilSuite) TestSafe(c *C) { 66 c.Assert(IsSafe("/home/user/test.jpg"), Equals, true) 67 c.Assert(IsSafe("/home/user"), Equals, true) 68 c.Assert(IsSafe("/opt/software-1234"), Equals, true) 69 c.Assert(IsSafe("/srv/my-supper-service"), Equals, true) 70 71 c.Assert(IsSafe(""), Equals, false) 72 c.Assert(IsSafe("/"), Equals, false) 73 c.Assert(IsSafe("/dev/tty3"), Equals, false) 74 c.Assert(IsSafe("/etc/file.conf"), Equals, false) 75 c.Assert(IsSafe("/lib/some-lib"), Equals, false) 76 c.Assert(IsSafe("/lib64/some-lib"), Equals, false) 77 c.Assert(IsSafe("/lost+found"), Equals, false) 78 c.Assert(IsSafe("/proc/19313"), Equals, false) 79 c.Assert(IsSafe("/root"), Equals, false) 80 c.Assert(IsSafe("/sbin/useradd"), Equals, false) 81 c.Assert(IsSafe("/bin/useradd"), Equals, false) 82 c.Assert(IsSafe("/selinux"), Equals, false) 83 c.Assert(IsSafe("/sys/kernel"), Equals, false) 84 c.Assert(IsSafe("/usr/bin/du"), Equals, false) 85 c.Assert(IsSafe("/usr/sbin/chroot"), Equals, false) 86 c.Assert(IsSafe("/usr/lib/some-lib"), Equals, false) 87 c.Assert(IsSafe("/usr/lib64/some-lib"), Equals, false) 88 c.Assert(IsSafe("/usr/libexec/gcc"), Equals, false) 89 c.Assert(IsSafe("/usr/include/xlocale.h"), Equals, false) 90 c.Assert(IsSafe("/var/cache/yum"), Equals, false) 91 c.Assert(IsSafe("/var/db/yum"), Equals, false) 92 c.Assert(IsSafe("/var/lib/pgsql"), Equals, false) 93 } 94 95 func (s *PathUtilSuite) TestDotfile(c *C) { 96 c.Assert(IsDotfile(""), Equals, false) 97 c.Assert(IsDotfile("/some/dir/abcd"), Equals, false) 98 c.Assert(IsDotfile("/some/dir/"), Equals, false) 99 c.Assert(IsDotfile("/"), Equals, false) 100 c.Assert(IsDotfile("/////"), Equals, false) 101 c.Assert(IsDotfile(" / "), Equals, false) 102 103 c.Assert(IsDotfile(".dotfile"), Equals, true) 104 c.Assert(IsDotfile("/.dotfile"), Equals, true) 105 c.Assert(IsDotfile("/some/dir/.abcd"), Equals, true) 106 } 107 108 func (s *PathUtilSuite) TestGlob(c *C) { 109 c.Assert(IsGlob(""), Equals, false) 110 c.Assert(IsGlob("ancd-1234"), Equals, false) 111 c.Assert(IsGlob("[1234"), Equals, false) 112 c.Assert(IsGlob("test*"), Equals, true) 113 c.Assert(IsGlob("t?st"), Equals, true) 114 c.Assert(IsGlob("t[a-z]st"), Equals, true) 115 }