pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/tmp/tmp_test.go (about)

     1  package tmp
     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  	"pkg.re/essentialkaos/ek.v12/fsutil"
    17  )
    18  
    19  // ////////////////////////////////////////////////////////////////////////////////// //
    20  
    21  type TmpSuite struct {
    22  	TempDir string
    23  }
    24  
    25  // ////////////////////////////////////////////////////////////////////////////////// //
    26  
    27  func Test(t *testing.T) { TestingT(t) }
    28  
    29  // ////////////////////////////////////////////////////////////////////////////////// //
    30  
    31  var _ = Suite(&TmpSuite{})
    32  
    33  // ////////////////////////////////////////////////////////////////////////////////// //
    34  
    35  func (ts *TmpSuite) SetUpSuite(c *C) {
    36  	ts.TempDir = c.MkDir()
    37  }
    38  
    39  func (ts *TmpSuite) TestMk(c *C) {
    40  	t, err := NewTemp()
    41  
    42  	c.Assert(err, IsNil)
    43  	c.Assert(t, NotNil)
    44  	c.Assert(t.Dir, Equals, "/tmp")
    45  
    46  	t.Clean()
    47  }
    48  
    49  func (ts *TmpSuite) TestErrors(c *C) {
    50  	t, err := NewTemp("/")
    51  
    52  	c.Assert(err, NotNil)
    53  	c.Assert(t, IsNil)
    54  
    55  	t, err = NewTemp("/tmpz")
    56  
    57  	c.Assert(err, NotNil)
    58  	c.Assert(t, IsNil)
    59  
    60  	os.Create(ts.TempDir + "/test_")
    61  
    62  	t, err = NewTemp(ts.TempDir + "/test_")
    63  
    64  	c.Assert(err, NotNil)
    65  	c.Assert(t, IsNil)
    66  
    67  	t = &Temp{Dir: "/"}
    68  
    69  	tmpDir, err := t.MkDir("test")
    70  
    71  	c.Assert(tmpDir, Equals, "")
    72  	c.Assert(err, NotNil)
    73  
    74  	tmpFd, tmpFile, err := t.MkFile("test")
    75  
    76  	c.Assert(tmpFd, IsNil)
    77  	c.Assert(tmpFile, Equals, "")
    78  	c.Assert(err, NotNil)
    79  
    80  	var nilTemp *Temp
    81  
    82  	_, err = nilTemp.MkDir()
    83  
    84  	c.Assert(err, NotNil)
    85  
    86  	_, _, err = nilTemp.MkFile()
    87  
    88  	c.Assert(err, NotNil)
    89  }
    90  
    91  func (ts *TmpSuite) TestMkDir(c *C) {
    92  	t, err := NewTemp(ts.TempDir)
    93  
    94  	c.Assert(err, IsNil)
    95  	c.Assert(t, NotNil)
    96  	c.Assert(t.Dir, Equals, ts.TempDir)
    97  
    98  	tmpDir, err := t.MkDir("test")
    99  
   100  	c.Assert(err, IsNil)
   101  	c.Assert(tmpDir, Not(Equals), "")
   102  	c.Assert(fsutil.IsExist(tmpDir), Equals, true)
   103  	c.Assert(fsutil.IsDir(tmpDir), Equals, true)
   104  	c.Assert(fsutil.IsReadable(tmpDir), Equals, true)
   105  	c.Assert(fsutil.IsWritable(tmpDir), Equals, true)
   106  	c.Assert(fsutil.GetMode(tmpDir), Equals, os.FileMode(0750))
   107  
   108  	t.Clean()
   109  
   110  	c.Assert(fsutil.IsExist(tmpDir), Equals, false)
   111  }
   112  
   113  func (ts *TmpSuite) TestMkFile(c *C) {
   114  	t, err := NewTemp(ts.TempDir)
   115  
   116  	c.Assert(err, IsNil)
   117  	c.Assert(t, NotNil)
   118  	c.Assert(t.Dir, Equals, ts.TempDir)
   119  
   120  	tmpFd, tmpFile, err := t.MkFile("test")
   121  
   122  	c.Assert(tmpFd, NotNil)
   123  	c.Assert(err, IsNil)
   124  	c.Assert(tmpFile, Not(Equals), "")
   125  	c.Assert(fsutil.IsExist(tmpFile), Equals, true)
   126  	c.Assert(fsutil.IsRegular(tmpFile), Equals, true)
   127  	c.Assert(fsutil.IsReadable(tmpFile), Equals, true)
   128  	c.Assert(fsutil.IsWritable(tmpFile), Equals, true)
   129  	c.Assert(fsutil.GetMode(tmpFile), Equals, os.FileMode(0640))
   130  
   131  	t.Clean()
   132  
   133  	c.Assert(fsutil.IsExist(tmpFile), Equals, false)
   134  }
   135  
   136  func (ts *TmpSuite) TestMkName(c *C) {
   137  	t, err := NewTemp(ts.TempDir)
   138  
   139  	c.Assert(err, IsNil)
   140  	c.Assert(t, NotNil)
   141  	c.Assert(t.Dir, Equals, ts.TempDir)
   142  
   143  	c.Assert(t.MkName(), Not(Equals), "")
   144  	c.Assert(t.MkName("1234"), Not(Equals), "")
   145  
   146  	ln := len(ts.TempDir + "/")
   147  
   148  	c.Assert(t.MkName("1234.json")[ln+14:], Equals, "1234.json")
   149  }