summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/spf13/afero/memmap_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/spf13/afero/memmap_test.go')
-rw-r--r--vendor/github.com/spf13/afero/memmap_test.go451
1 files changed, 0 insertions, 451 deletions
diff --git a/vendor/github.com/spf13/afero/memmap_test.go b/vendor/github.com/spf13/afero/memmap_test.go
deleted file mode 100644
index 47414ab14..000000000
--- a/vendor/github.com/spf13/afero/memmap_test.go
+++ /dev/null
@@ -1,451 +0,0 @@
-package afero
-
-import (
- "fmt"
- "io"
- "os"
- "path/filepath"
- "runtime"
- "testing"
- "time"
-)
-
-func TestNormalizePath(t *testing.T) {
- type test struct {
- input string
- expected string
- }
-
- data := []test{
- {".", FilePathSeparator},
- {"./", FilePathSeparator},
- {"..", FilePathSeparator},
- {"../", FilePathSeparator},
- {"./..", FilePathSeparator},
- {"./../", FilePathSeparator},
- }
-
- for i, d := range data {
- cpath := normalizePath(d.input)
- if d.expected != cpath {
- t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, cpath)
- }
- }
-}
-
-func TestPathErrors(t *testing.T) {
- path := filepath.Join(".", "some", "path")
- path2 := filepath.Join(".", "different", "path")
- fs := NewMemMapFs()
- perm := os.FileMode(0755)
-
- // relevant functions:
- // func (m *MemMapFs) Chmod(name string, mode os.FileMode) error
- // func (m *MemMapFs) Chtimes(name string, atime time.Time, mtime time.Time) error
- // func (m *MemMapFs) Create(name string) (File, error)
- // func (m *MemMapFs) Mkdir(name string, perm os.FileMode) error
- // func (m *MemMapFs) MkdirAll(path string, perm os.FileMode) error
- // func (m *MemMapFs) Open(name string) (File, error)
- // func (m *MemMapFs) OpenFile(name string, flag int, perm os.FileMode) (File, error)
- // func (m *MemMapFs) Remove(name string) error
- // func (m *MemMapFs) Rename(oldname, newname string) error
- // func (m *MemMapFs) Stat(name string) (os.FileInfo, error)
-
- err := fs.Chmod(path, perm)
- checkPathError(t, err, "Chmod")
-
- err = fs.Chtimes(path, time.Now(), time.Now())
- checkPathError(t, err, "Chtimes")
-
- // fs.Create doesn't return an error
-
- err = fs.Mkdir(path2, perm)
- if err != nil {
- t.Error(err)
- }
- err = fs.Mkdir(path2, perm)
- checkPathError(t, err, "Mkdir")
-
- err = fs.MkdirAll(path2, perm)
- if err != nil {
- t.Error("MkdirAll:", err)
- }
-
- _, err = fs.Open(path)
- checkPathError(t, err, "Open")
-
- _, err = fs.OpenFile(path, os.O_RDWR, perm)
- checkPathError(t, err, "OpenFile")
-
- err = fs.Remove(path)
- checkPathError(t, err, "Remove")
-
- err = fs.RemoveAll(path)
- if err != nil {
- t.Error("RemoveAll:", err)
- }
-
- err = fs.Rename(path, path2)
- checkPathError(t, err, "Rename")
-
- _, err = fs.Stat(path)
- checkPathError(t, err, "Stat")
-}
-
-func checkPathError(t *testing.T, err error, op string) {
- pathErr, ok := err.(*os.PathError)
- if !ok {
- t.Error(op+":", err, "is not a os.PathError")
- return
- }
- _, ok = pathErr.Err.(*os.PathError)
- if ok {
- t.Error(op+":", err, "contains another os.PathError")
- }
-}
-
-// Ensure Permissions are set on OpenFile/Mkdir/MkdirAll
-func TestPermSet(t *testing.T) {
- const fileName = "/myFileTest"
- const dirPath = "/myDirTest"
- const dirPathAll = "/my/path/to/dir"
-
- const fileMode = os.FileMode(0765)
- // directories will also have the directory bit set
- const dirMode = fileMode | os.ModeDir
-
- fs := NewMemMapFs()
-
- // Test Openfile
- f, err := fs.OpenFile(fileName, os.O_CREATE, fileMode)
- if err != nil {
- t.Errorf("OpenFile Create failed: %s", err)
- return
- }
- f.Close()
-
- s, err := fs.Stat(fileName)
- if err != nil {
- t.Errorf("Stat failed: %s", err)
- return
- }
- if s.Mode().String() != fileMode.String() {
- t.Errorf("Permissions Incorrect: %s != %s", s.Mode().String(), fileMode.String())
- return
- }
-
- // Test Mkdir
- err = fs.Mkdir(dirPath, dirMode)
- if err != nil {
- t.Errorf("MkDir Create failed: %s", err)
- return
- }
- s, err = fs.Stat(dirPath)
- if err != nil {
- t.Errorf("Stat failed: %s", err)
- return
- }
- // sets File
- if s.Mode().String() != dirMode.String() {
- t.Errorf("Permissions Incorrect: %s != %s", s.Mode().String(), dirMode.String())
- return
- }
-
- // Test MkdirAll
- err = fs.MkdirAll(dirPathAll, dirMode)
- if err != nil {
- t.Errorf("MkDir Create failed: %s", err)
- return
- }
- s, err = fs.Stat(dirPathAll)
- if err != nil {
- t.Errorf("Stat failed: %s", err)
- return
- }
- if s.Mode().String() != dirMode.String() {
- t.Errorf("Permissions Incorrect: %s != %s", s.Mode().String(), dirMode.String())
- return
- }
-}
-
-// Fails if multiple file objects use the same file.at counter in MemMapFs
-func TestMultipleOpenFiles(t *testing.T) {
- defer removeAllTestFiles(t)
- const fileName = "afero-demo2.txt"
-
- var data = make([][]byte, len(Fss))
-
- for i, fs := range Fss {
- dir := testDir(fs)
- path := filepath.Join(dir, fileName)
- fh1, err := fs.Create(path)
- if err != nil {
- t.Error("fs.Create failed: " + err.Error())
- }
- _, err = fh1.Write([]byte("test"))
- if err != nil {
- t.Error("fh.Write failed: " + err.Error())
- }
- _, err = fh1.Seek(0, os.SEEK_SET)
- if err != nil {
- t.Error(err)
- }
-
- fh2, err := fs.OpenFile(path, os.O_RDWR, 0777)
- if err != nil {
- t.Error("fs.OpenFile failed: " + err.Error())
- }
- _, err = fh2.Seek(0, os.SEEK_END)
- if err != nil {
- t.Error(err)
- }
- _, err = fh2.Write([]byte("data"))
- if err != nil {
- t.Error(err)
- }
- err = fh2.Close()
- if err != nil {
- t.Error(err)
- }
-
- _, err = fh1.Write([]byte("data"))
- if err != nil {
- t.Error(err)
- }
- err = fh1.Close()
- if err != nil {
- t.Error(err)
- }
- // the file now should contain "datadata"
- data[i], err = ReadFile(fs, path)
- if err != nil {
- t.Error(err)
- }
- }
-
- for i, fs := range Fss {
- if i == 0 {
- continue
- }
- if string(data[0]) != string(data[i]) {
- t.Errorf("%s and %s don't behave the same\n"+
- "%s: \"%s\"\n%s: \"%s\"\n",
- Fss[0].Name(), fs.Name(), Fss[0].Name(), data[0], fs.Name(), data[i])
- }
- }
-}
-
-// Test if file.Write() fails when opened as read only
-func TestReadOnly(t *testing.T) {
- defer removeAllTestFiles(t)
- const fileName = "afero-demo.txt"
-
- for _, fs := range Fss {
- dir := testDir(fs)
- path := filepath.Join(dir, fileName)
-
- f, err := fs.Create(path)
- if err != nil {
- t.Error(fs.Name()+":", "fs.Create failed: "+err.Error())
- }
- _, err = f.Write([]byte("test"))
- if err != nil {
- t.Error(fs.Name()+":", "Write failed: "+err.Error())
- }
- f.Close()
-
- f, err = fs.Open(path)
- if err != nil {
- t.Error("fs.Open failed: " + err.Error())
- }
- _, err = f.Write([]byte("data"))
- if err == nil {
- t.Error(fs.Name()+":", "No write error")
- }
- f.Close()
-
- f, err = fs.OpenFile(path, os.O_RDONLY, 0644)
- if err != nil {
- t.Error("fs.Open failed: " + err.Error())
- }
- _, err = f.Write([]byte("data"))
- if err == nil {
- t.Error(fs.Name()+":", "No write error")
- }
- f.Close()
- }
-}
-
-func TestWriteCloseTime(t *testing.T) {
- defer removeAllTestFiles(t)
- const fileName = "afero-demo.txt"
-
- for _, fs := range Fss {
- dir := testDir(fs)
- path := filepath.Join(dir, fileName)
-
- f, err := fs.Create(path)
- if err != nil {
- t.Error(fs.Name()+":", "fs.Create failed: "+err.Error())
- }
- f.Close()
-
- f, err = fs.Create(path)
- if err != nil {
- t.Error(fs.Name()+":", "fs.Create failed: "+err.Error())
- }
- fi, err := f.Stat()
- if err != nil {
- t.Error(fs.Name()+":", "Stat failed: "+err.Error())
- }
- timeBefore := fi.ModTime()
-
- // sorry for the delay, but we have to make sure time advances,
- // also on non Un*x systems...
- switch runtime.GOOS {
- case "windows":
- time.Sleep(2 * time.Second)
- case "darwin":
- time.Sleep(1 * time.Second)
- default: // depending on the FS, this may work with < 1 second, on my old ext3 it does not
- time.Sleep(1 * time.Second)
- }
-
- _, err = f.Write([]byte("test"))
- if err != nil {
- t.Error(fs.Name()+":", "Write failed: "+err.Error())
- }
- f.Close()
- fi, err = fs.Stat(path)
- if err != nil {
- t.Error(fs.Name()+":", "fs.Stat failed: "+err.Error())
- }
- if fi.ModTime().Equal(timeBefore) {
- t.Error(fs.Name()+":", "ModTime was not set on Close()")
- }
- }
-}
-
-// This test should be run with the race detector on:
-// go test -race -v -timeout 10s -run TestRacingDeleteAndClose
-func TestRacingDeleteAndClose(t *testing.T) {
- fs := NewMemMapFs()
- pathname := "testfile"
- f, err := fs.Create(pathname)
- if err != nil {
- t.Fatal(err)
- }
-
- in := make(chan bool)
-
- go func() {
- <-in
- f.Close()
- }()
- go func() {
- <-in
- fs.Remove(pathname)
- }()
- close(in)
-}
-
-// This test should be run with the race detector on:
-// go test -run TestMemFsDataRace -race
-func TestMemFsDataRace(t *testing.T) {
- const dir = "test_dir"
- fs := NewMemMapFs()
-
- if err := fs.MkdirAll(dir, 0777); err != nil {
- t.Fatal(err)
- }
-
- const n = 1000
- done := make(chan struct{})
-
- go func() {
- defer close(done)
- for i := 0; i < n; i++ {
- fname := filepath.Join(dir, fmt.Sprintf("%d.txt", i))
- if err := WriteFile(fs, fname, []byte(""), 0777); err != nil {
- panic(err)
- }
- if err := fs.Remove(fname); err != nil {
- panic(err)
- }
- }
- }()
-
-loop:
- for {
- select {
- case <-done:
- break loop
- default:
- _, err := ReadDir(fs, dir)
- if err != nil {
- t.Fatal(err)
- }
- }
- }
-}
-
-func TestMemFsDirMode(t *testing.T) {
- fs := NewMemMapFs()
- err := fs.Mkdir("/testDir1", 0644)
- if err != nil {
- t.Error(err)
- }
- err = fs.MkdirAll("/sub/testDir2", 0644)
- if err != nil {
- t.Error(err)
- }
- info, err := fs.Stat("/testDir1")
- if err != nil {
- t.Error(err)
- }
- if !info.IsDir() {
- t.Error("should be a directory")
- }
- if !info.Mode().IsDir() {
- t.Error("FileMode is not directory")
- }
- info, err = fs.Stat("/sub/testDir2")
- if err != nil {
- t.Error(err)
- }
- if !info.IsDir() {
- t.Error("should be a directory")
- }
- if !info.Mode().IsDir() {
- t.Error("FileMode is not directory")
- }
-}
-
-func TestMemFsUnexpectedEOF(t *testing.T) {
- t.Parallel()
-
- fs := NewMemMapFs()
-
- if err := WriteFile(fs, "file.txt", []byte("abc"), 0777); err != nil {
- t.Fatal(err)
- }
-
- f, err := fs.Open("file.txt")
- if err != nil {
- t.Fatal(err)
- }
- defer f.Close()
-
- // Seek beyond the end.
- _, err = f.Seek(512, 0)
- if err != nil {
- t.Fatal(err)
- }
-
- buff := make([]byte, 256)
- _, err = io.ReadAtLeast(f, buff, 256)
-
- if err != io.ErrUnexpectedEOF {
- t.Fatal("Expected ErrUnexpectedEOF")
- }
-}