mirror of
https://github.com/restic/restic.git
synced 2024-12-26 17:57:50 +00:00
Create separate disEntry.equals for Windows.
Windows does not have UID/GID the same way as unix, so we don't attempt to compare them.
This commit is contained in:
parent
d5dab39a4a
commit
a3570af500
3 changed files with 70 additions and 33 deletions
|
@ -6,7 +6,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"syscall"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
. "github.com/restic/restic/test"
|
. "github.com/restic/restic/test"
|
||||||
|
@ -70,38 +69,6 @@ func sameModTime(fi1, fi2 os.FileInfo) bool {
|
||||||
return fi1.ModTime() == fi2.ModTime()
|
return fi1.ModTime() == fi2.ModTime()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *dirEntry) equals(other *dirEntry) bool {
|
|
||||||
if e.path != other.path {
|
|
||||||
fmt.Fprintf(os.Stderr, "%v: path does not match (%v != %v)\n", e.path, e.path, other.path)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
if e.fi.Mode() != other.fi.Mode() {
|
|
||||||
fmt.Fprintf(os.Stderr, "%v: mode does not match (%v != %v)\n", e.path, e.fi.Mode(), other.fi.Mode())
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
if !sameModTime(e.fi, other.fi) {
|
|
||||||
fmt.Fprintf(os.Stderr, "%v: ModTime does not match (%v != %v)\n", e.path, e.fi.ModTime(), other.fi.ModTime())
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
stat, _ := e.fi.Sys().(*syscall.Stat_t)
|
|
||||||
stat2, _ := other.fi.Sys().(*syscall.Stat_t)
|
|
||||||
|
|
||||||
if stat.Uid != stat2.Uid {
|
|
||||||
fmt.Fprintf(os.Stderr, "%v: UID does not match (%v != %v)\n", e.path, stat.Uid, stat2.Uid)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
if stat.Gid != stat2.Gid {
|
|
||||||
fmt.Fprintf(os.Stderr, "%v: GID does not match (%v != %v)\n", e.path, stat.Gid, stat2.Gid)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// directoriesEqualContents checks if both directories contain exactly the same
|
// directoriesEqualContents checks if both directories contain exactly the same
|
||||||
// contents.
|
// contents.
|
||||||
func directoriesEqualContents(dir1, dir2 string) bool {
|
func directoriesEqualContents(dir1, dir2 string) bool {
|
||||||
|
@ -237,6 +204,8 @@ func withTestEnvironment(t testing.TB, f func(*testEnvironment, GlobalOptions))
|
||||||
}
|
}
|
||||||
|
|
||||||
OK(t, os.MkdirAll(env.testdata, 0700))
|
OK(t, os.MkdirAll(env.testdata, 0700))
|
||||||
|
OK(t, os.MkdirAll(env.cache, 0700))
|
||||||
|
OK(t, os.MkdirAll(env.repo, 0700))
|
||||||
|
|
||||||
f(&env, configureRestic(t, env.cache, env.repo))
|
f(&env, configureRestic(t, env.cache, env.repo))
|
||||||
|
|
||||||
|
|
41
cmd/restic/integration_helpers_unix_test.go
Normal file
41
cmd/restic/integration_helpers_unix_test.go
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
//+build !windows
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e *dirEntry) equals(other *dirEntry) bool {
|
||||||
|
if e.path != other.path {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: path does not match (%v != %v)\n", e.path, e.path, other.path)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if e.fi.Mode() != other.fi.Mode() {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: mode does not match (%v != %v)\n", e.path, e.fi.Mode(), other.fi.Mode())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if !sameModTime(e.fi, other.fi) {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: ModTime does not match (%v != %v)\n", e.path, e.fi.ModTime(), other.fi.ModTime())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
stat, _ := e.fi.Sys().(*syscall.Stat_t)
|
||||||
|
stat2, _ := other.fi.Sys().(*syscall.Stat_t)
|
||||||
|
|
||||||
|
if stat.Uid != stat2.Uid {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: UID does not match (%v != %v)\n", e.path, stat.Uid, stat2.Uid)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if stat.Gid != stat2.Gid {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: GID does not match (%v != %v)\n", e.path, stat.Gid, stat2.Gid)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
27
cmd/restic/integration_helpers_windows_test.go
Normal file
27
cmd/restic/integration_helpers_windows_test.go
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
//+build windows
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e *dirEntry) equals(other *dirEntry) bool {
|
||||||
|
if e.path != other.path {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: path does not match (%v != %v)\n", e.path, e.path, other.path)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if e.fi.Mode() != other.fi.Mode() {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: mode does not match (%v != %v)\n", e.path, e.fi.Mode(), other.fi.Mode())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if !sameModTime(e.fi, other.fi) {
|
||||||
|
fmt.Fprintf(os.Stderr, "%v: ModTime does not match (%v != %v)\n", e.path, e.fi.ModTime(), other.fi.ModTime())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
Loading…
Reference in a new issue