Add fusetesting.GetTimes.

This makes it easier to write integration tests for atime, ctime, and
mtime on both darwin and linux.
geesefs-0-30-9
Aaron Jacobs 2016-01-11 10:27:55 +11:00
commit 608feace05
3 changed files with 21 additions and 0 deletions

View File

@ -18,6 +18,7 @@ import (
"fmt"
"os"
"reflect"
"syscall"
"time"
"github.com/jacobsa/oglematchers"
@ -95,6 +96,12 @@ func birthtimeIsWithin(
return nil
}
// Extract time information from the supplied file info. Panic on platforms
// where this is not possible.
func GetTimes(fi os.FileInfo) (atime, ctime, mtime time.Time) {
return getTimes(fi.Sys().(*syscall.Stat_t))
}
// Match os.FileInfo values that specify a number of links equal to the given
// number. On platforms where there is no nlink field available, match all
// os.FileInfo values.

View File

@ -36,3 +36,10 @@ func extractNlink(sys interface{}) (nlink uint64, ok bool) {
ok = true
return
}
func getTimes(stat *syscall.Stat_t) (atime, ctime, mtime time.Time) {
atime = time.Unix(stat.Atimespec.Unix())
ctime = time.Unix(stat.Ctimespec.Unix())
mtime = time.Unix(stat.Mtimespec.Unix())
return
}

View File

@ -34,3 +34,10 @@ func extractNlink(sys interface{}) (nlink uint64, ok bool) {
ok = true
return
}
func getTimes(stat *syscall.Stat_t) (atime, ctime, mtime time.Time) {
atime = time.Unix(stat.Atim.Unix())
ctime = time.Unix(stat.Ctim.Unix())
mtime = time.Unix(stat.Mtim.Unix())
return
}