package test import ( "strings" . "gopkg.in/check.v1" "gopkg.in/src-d/go-billy.v4" "gopkg.in/src-d/go-billy.v4/util" ) // TempFileSuite is a convenient test suite to validate any implementation of // billy.TempFile type TempFileSuite struct { FS interface { billy.Basic billy.TempFile } } func (s *TempFileSuite) TestTempFile(c *C) { f, err := s.FS.TempFile("", "bar") c.Assert(err, IsNil) c.Assert(f.Close(), IsNil) c.Assert(strings.Index(f.Name(), "bar"), Not(Equals), -1) } func (s *TempFileSuite) TestTempFileWithPath(c *C) { f, err := s.FS.TempFile("foo", "bar") c.Assert(err, IsNil) c.Assert(f.Close(), IsNil) c.Assert(strings.HasPrefix(f.Name(), s.FS.Join("foo", "bar")), Equals, true) } func (s *TempFileSuite) TestTempFileFullWithPath(c *C) { f, err := s.FS.TempFile("/foo", "bar") c.Assert(err, IsNil) c.Assert(f.Close(), IsNil) c.Assert(strings.Index(f.Name(), s.FS.Join("foo", "bar")), Not(Equals), -1) } func (s *TempFileSuite) TestRemoveTempFile(c *C) { f, err := s.FS.TempFile("test-dir", "test-prefix") c.Assert(err, IsNil) fn := f.Name() c.Assert(f.Close(), IsNil) c.Assert(s.FS.Remove(fn), IsNil) } func (s *TempFileSuite) TestRenameTempFile(c *C) { f, err := s.FS.TempFile("test-dir", "test-prefix") c.Assert(err, IsNil) fn := f.Name() c.Assert(f.Close(), IsNil) c.Assert(s.FS.Rename(fn, "other-path"), IsNil) } func (s *TempFileSuite) TestTempFileMany(c *C) { for i := 0; i < 1024; i++ { var fs []billy.File for j := 0; j < 100; j++ { f, err := s.FS.TempFile("test-dir", "test-prefix") c.Assert(err, IsNil) fs = append(fs, f) } for _, f := range fs { c.Assert(f.Close(), IsNil) c.Assert(s.FS.Remove(f.Name()), IsNil) } } } func (s *TempFileSuite) TestTempFileManyWithUtil(c *C) { for i := 0; i < 1024; i++ { var fs []billy.File for j := 0; j < 100; j++ { f, err := util.TempFile(s.FS, "test-dir", "test-prefix") c.Assert(err, IsNil) fs = append(fs, f) } for _, f := range fs { c.Assert(f.Close(), IsNil) c.Assert(s.FS.Remove(f.Name()), IsNil) } } }