forked from mirror/afero
test CopyOnWriteFs with OsFs
This commit is contained in:
parent
220647edb9
commit
969a70f798
|
@ -5,8 +5,11 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var tempDirs []string
|
||||||
|
|
||||||
func TestUnionCreateExisting(t *testing.T) {
|
func TestUnionCreateExisting(t *testing.T) {
|
||||||
base := &MemMapFs{}
|
base := &MemMapFs{}
|
||||||
roBase := &ReadOnlyFs{source: base}
|
roBase := &ReadOnlyFs{source: base}
|
||||||
|
@ -82,6 +85,110 @@ func TestUnionMergeReaddir(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestExistingDirectoryCollisionReaddir(t *testing.T) {
|
||||||
|
base := &MemMapFs{}
|
||||||
|
roBase := &ReadOnlyFs{source: base}
|
||||||
|
overlay := &MemMapFs{}
|
||||||
|
|
||||||
|
ufs := &CopyOnWriteFs{base: roBase, layer: overlay}
|
||||||
|
|
||||||
|
base.MkdirAll("/home/test", 0777)
|
||||||
|
fh, _ := base.Create("/home/test/file.txt")
|
||||||
|
fh.WriteString("This is a test")
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
overlay.MkdirAll("home/test", 0777)
|
||||||
|
fh, _ = overlay.Create("/home/test/file2.txt")
|
||||||
|
fh.WriteString("This is a test")
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
fh, _ = ufs.Create("/home/test/file3.txt")
|
||||||
|
fh.WriteString("This is a test")
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
fh, _ = ufs.Open("/home/test")
|
||||||
|
files, err := fh.Readdirnames(-1)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Readdirnames failed")
|
||||||
|
}
|
||||||
|
if len(files) != 3 {
|
||||||
|
t.Errorf("Got wrong number of files in union: %v", files)
|
||||||
|
}
|
||||||
|
|
||||||
|
fh, _ = overlay.Open("/home/test")
|
||||||
|
files, err = fh.Readdirnames(-1)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Readdirnames failed")
|
||||||
|
}
|
||||||
|
if len(files) != 2 {
|
||||||
|
t.Errorf("Got wrong number of files in overlay: %v", files)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTempOsBaseFs(t *testing.T) Fs {
|
||||||
|
name, err := TempDir(NewOsFs(), "", "")
|
||||||
|
if err != nil {
|
||||||
|
t.Error("error creating tempDir", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("created tempdir", name)
|
||||||
|
tempDirs = append(tempDirs, name)
|
||||||
|
|
||||||
|
return NewBasePathFs(NewOsFs(), name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CleanupTempDirs() {
|
||||||
|
osfs := NewOsFs()
|
||||||
|
for _, x := range tempDirs {
|
||||||
|
err := osfs.RemoveAll(x)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error removing tempDir", x, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tempDirs = []string{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCopyOnWriteFsWithOsFs(t *testing.T) {
|
||||||
|
defer CleanupTempDirs()
|
||||||
|
base := NewTempOsBaseFs(t)
|
||||||
|
roBase := &ReadOnlyFs{source: base}
|
||||||
|
overlay := NewTempOsBaseFs(t)
|
||||||
|
|
||||||
|
ufs := &CopyOnWriteFs{base: roBase, layer: overlay}
|
||||||
|
|
||||||
|
base.MkdirAll("/home/test", 0777)
|
||||||
|
fh, _ := base.Create("/home/test/file.txt")
|
||||||
|
fh.WriteString("This is a test")
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
overlay.MkdirAll("home/test", 0777)
|
||||||
|
fh, _ = overlay.Create("/home/test/file2.txt")
|
||||||
|
fh.WriteString("This is a test")
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
fh, _ = ufs.Create("/home/test/file3.txt")
|
||||||
|
fh.WriteString("This is a test")
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
fh, _ = ufs.Open("/home/test")
|
||||||
|
files, err := fh.Readdirnames(-1)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Readdirnames failed")
|
||||||
|
}
|
||||||
|
if len(files) != 3 {
|
||||||
|
t.Errorf("Got wrong number of files in union: %v", files)
|
||||||
|
}
|
||||||
|
|
||||||
|
fh, _ = overlay.Open("/home/test")
|
||||||
|
files, err = fh.Readdirnames(-1)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Readdirnames failed")
|
||||||
|
}
|
||||||
|
if len(files) != 2 {
|
||||||
|
t.Errorf("Got wrong number of files in overlay: %v", files)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestUnionCacheWrite(t *testing.T) {
|
func TestUnionCacheWrite(t *testing.T) {
|
||||||
base := &MemMapFs{}
|
base := &MemMapFs{}
|
||||||
layer := &MemMapFs{}
|
layer := &MemMapFs{}
|
||||||
|
|
Loading…
Reference in New Issue