mirror of
https://github.com/octoleo/restic.git
synced 2024-11-26 14:56:29 +00:00
archiver: Use untyped constants for testing FileInfo
This commit is contained in:
parent
b016dc2ff0
commit
920d458a4a
@ -2022,6 +2022,14 @@ func (f fileStat) Stat() (os.FileInfo, error) {
|
|||||||
return f.fi, nil
|
return f.fi, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// used by wrapFileInfo, use untyped const in order to avoid having a version
|
||||||
|
// of wrapFileInfo for each OS
|
||||||
|
const (
|
||||||
|
mockFileInfoMode = 0400
|
||||||
|
mockFileInfoUID = 51234
|
||||||
|
mockFileInfoGID = 51235
|
||||||
|
)
|
||||||
|
|
||||||
func TestMetadataChanged(t *testing.T) {
|
func TestMetadataChanged(t *testing.T) {
|
||||||
files := TestDir{
|
files := TestDir{
|
||||||
"testfile": TestFile{
|
"testfile": TestFile{
|
||||||
@ -2061,8 +2069,8 @@ func TestMetadataChanged(t *testing.T) {
|
|||||||
t.Fatalf("metadata does not match:\n%v", cmp.Diff(want, node2))
|
t.Fatalf("metadata does not match:\n%v", cmp.Diff(want, node2))
|
||||||
}
|
}
|
||||||
|
|
||||||
// modify the mode by wrapping it in a new struct
|
// modify the mode by wrapping it in a new struct, uses the consts defined above
|
||||||
fs.OverrideLstat["testfile"] = wrapFileInfo(t, fi, 0400, 51234, 51235)
|
fs.OverrideLstat["testfile"] = wrapFileInfo(t, fi)
|
||||||
|
|
||||||
// set the override values in the 'want' node which
|
// set the override values in the 'want' node which
|
||||||
want.Mode = 0400
|
want.Mode = 0400
|
||||||
|
@ -23,18 +23,18 @@ func (fi wrappedFileInfo) Mode() os.FileMode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// wrapFileInfo returns a new os.FileInfo with the mode, owner, and group fields changed.
|
// wrapFileInfo returns a new os.FileInfo with the mode, owner, and group fields changed.
|
||||||
func wrapFileInfo(t testing.TB, fi os.FileInfo, mode os.FileMode, uid, gid uint) os.FileInfo {
|
func wrapFileInfo(t testing.TB, fi os.FileInfo) os.FileInfo {
|
||||||
// get the underlying stat_t and modify the values
|
// get the underlying stat_t and modify the values
|
||||||
stat := fi.Sys().(*syscall.Stat_t)
|
stat := fi.Sys().(*syscall.Stat_t)
|
||||||
stat.Mode = uint32(mode)
|
stat.Mode = mockFileInfoMode
|
||||||
stat.Uid = uint32(uid)
|
stat.Uid = mockFileInfoUID
|
||||||
stat.Gid = uint32(gid)
|
stat.Gid = mockFileInfoGID
|
||||||
|
|
||||||
// wrap the os.FileInfo so we can return a modified stat_t
|
// wrap the os.FileInfo so we can return a modified stat_t
|
||||||
res := wrappedFileInfo{
|
res := wrappedFileInfo{
|
||||||
FileInfo: fi,
|
FileInfo: fi,
|
||||||
sys: stat,
|
sys: stat,
|
||||||
mode: mode,
|
mode: mockFileInfoMode,
|
||||||
}
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
@ -17,11 +17,11 @@ func (fi wrappedFileInfo) Mode() os.FileMode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// wrapFileInfo returns a new os.FileInfo with the mode, owner, and group fields changed.
|
// wrapFileInfo returns a new os.FileInfo with the mode, owner, and group fields changed.
|
||||||
func wrapFileInfo(t testing.TB, fi os.FileInfo, mode os.FileMode, uid, gid uint) os.FileInfo {
|
func wrapFileInfo(t testing.TB, fi os.FileInfo) os.FileInfo {
|
||||||
// wrap the os.FileInfo and return the modified mode, uid and gid are ignored on Windows
|
// wrap the os.FileInfo and return the modified mode, uid and gid are ignored on Windows
|
||||||
res := wrappedFileInfo{
|
res := wrappedFileInfo{
|
||||||
FileInfo: fi,
|
FileInfo: fi,
|
||||||
mode: mode,
|
mode: mockFileInfoMode,
|
||||||
}
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
Loading…
Reference in New Issue
Block a user