committed by
Jakob Borg
parent
42ce6be9b9
commit
b7c70a9817
@@ -10,6 +10,7 @@ import (
|
||||
"errors"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -81,6 +82,111 @@ func TestMtimeFS(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMtimeFSWalk(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() { _ = os.RemoveAll(dir) }()
|
||||
|
||||
underlying := NewFilesystem(FilesystemTypeBasic, dir)
|
||||
mtimefs := NewMtimeFS(underlying, make(mapStore))
|
||||
mtimefs.chtimes = failChtimes
|
||||
|
||||
if err := ioutil.WriteFile(filepath.Join(dir, "file"), []byte("hello"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
oldStat, err := mtimefs.Lstat("file")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
newTime := time.Now().Add(-2 * time.Hour)
|
||||
|
||||
if err := mtimefs.Chtimes("file", newTime, newTime); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if newStat, err := mtimefs.Lstat("file"); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !newStat.ModTime().Equal(newTime) {
|
||||
t.Errorf("expected time %v, lstat time %v", newTime, newStat.ModTime())
|
||||
}
|
||||
|
||||
if underlyingStat, err := underlying.Lstat("file"); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !underlyingStat.ModTime().Equal(oldStat.ModTime()) {
|
||||
t.Errorf("expected time %v, lstat time %v", oldStat.ModTime(), underlyingStat.ModTime())
|
||||
}
|
||||
|
||||
found := false
|
||||
_ = mtimefs.Walk("", func(path string, info FileInfo, err error) error {
|
||||
if path == "file" {
|
||||
found = true
|
||||
if !info.ModTime().Equal(newTime) {
|
||||
t.Errorf("expected time %v, lstat time %v", newTime, info.ModTime())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
if !found {
|
||||
t.Error("did not find")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMtimeFSOpen(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() { _ = os.RemoveAll(dir) }()
|
||||
|
||||
underlying := NewFilesystem(FilesystemTypeBasic, dir)
|
||||
mtimefs := NewMtimeFS(underlying, make(mapStore))
|
||||
mtimefs.chtimes = failChtimes
|
||||
|
||||
if err := ioutil.WriteFile(filepath.Join(dir, "file"), []byte("hello"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
oldStat, err := mtimefs.Lstat("file")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
newTime := time.Now().Add(-2 * time.Hour)
|
||||
|
||||
if err := mtimefs.Chtimes("file", newTime, newTime); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if newStat, err := mtimefs.Lstat("file"); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !newStat.ModTime().Equal(newTime) {
|
||||
t.Errorf("expected time %v, lstat time %v", newTime, newStat.ModTime())
|
||||
}
|
||||
|
||||
if underlyingStat, err := underlying.Lstat("file"); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !underlyingStat.ModTime().Equal(oldStat.ModTime()) {
|
||||
t.Errorf("expected time %v, lstat time %v", oldStat.ModTime(), underlyingStat.ModTime())
|
||||
}
|
||||
|
||||
fd, err := mtimefs.Open("file")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
info, err := fd.Stat()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !info.ModTime().Equal(newTime) {
|
||||
t.Errorf("expected time %v, lstat time %v", newTime, info.ModTime())
|
||||
}
|
||||
}
|
||||
|
||||
func TestMtimeFSInsensitive(t *testing.T) {
|
||||
switch runtime.GOOS {
|
||||
case "darwin", "windows":
|
||||
|
||||
Reference in New Issue
Block a user