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  }