1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
//go:build !js
// +build !js
package osfs
import (
"io/ioutil"
"os"
"path/filepath"
"runtime"
"testing"
"github.com/go-git/go-billy/v5"
"github.com/go-git/go-billy/v5/test"
. "gopkg.in/check.v1"
)
func Test(t *testing.T) { TestingT(t) }
type ChrootOSSuite struct {
test.FilesystemSuite
path string
}
var _ = Suite(&ChrootOSSuite{})
func (s *ChrootOSSuite) SetUpTest(c *C) {
s.path, _ = ioutil.TempDir(os.TempDir(), "go-billy-osfs-test")
if runtime.GOOS == "plan9" {
// On Plan 9, permission mode of newly created files
// or directories are based on the permission mode of
// the containing directory (see http://man.cat-v.org/plan_9/5/open).
// Since TestOpenFileWithModes and TestStat creates files directly
// in the temporary directory, we need to make it more permissive.
c.Assert(os.Chmod(s.path, 0777), IsNil)
}
s.FilesystemSuite = test.NewFilesystemSuite(newChrootOS(s.path))
}
func (s *ChrootOSSuite) TearDownTest(c *C) {
err := os.RemoveAll(s.path)
c.Assert(err, IsNil)
}
func (s *ChrootOSSuite) TestOpenDoesNotCreateDir(c *C) {
_, err := s.FS.Open("dir/non-existent")
c.Assert(err, NotNil)
_, err = os.Stat(filepath.Join(s.path, "dir"))
c.Assert(os.IsNotExist(err), Equals, true)
}
func (s *ChrootOSSuite) TestCapabilities(c *C) {
_, ok := s.FS.(billy.Capable)
c.Assert(ok, Equals, true)
caps := billy.Capabilities(s.FS)
c.Assert(caps, Equals, billy.AllCapabilities)
}
|