2
2
mirror of https://github.com/octoleo/restic.git synced 2024-12-23 19:38:57 +00:00

restorer: windows test fixes

This commit is contained in:
Michael Eischer 2024-06-13 22:52:31 +02:00
parent ca41c8fd11
commit 9572b7224f
4 changed files with 37 additions and 3 deletions

View File

@ -6,18 +6,30 @@ package restic
import (
"os"
"path/filepath"
"runtime"
"strings"
"testing"
rtest "github.com/restic/restic/internal/test"
)
func setAndVerifyXattr(t *testing.T, file string, attrs []ExtendedAttribute) {
if runtime.GOOS == "windows" {
// windows seems to convert the xattr name to upper case
for i := range attrs {
attrs[i].Name = strings.ToUpper(attrs[i].Name)
}
}
node := Node{
Type: "file",
ExtendedAttributes: attrs,
}
rtest.OK(t, node.restoreExtendedAttributes(file))
nodeActual := Node{}
nodeActual := Node{
Type: "file",
}
rtest.OK(t, nodeActual.fillExtendedAttributes(file, false))
rtest.Assert(t, nodeActual.sameExtendedAttributes(node), "xattr mismatch got %v expected %v", nodeActual.ExtendedAttributes, node.ExtendedAttributes)

View File

@ -0,0 +1,10 @@
//go:build !windows
// +build !windows
package restorer
import "syscall"
func notEmptyDirError() error {
return syscall.ENOTEMPTY
}

View File

@ -4,7 +4,7 @@ import (
"fmt"
"os"
"path/filepath"
"syscall"
"runtime"
"testing"
"github.com/restic/restic/internal/errors"
@ -72,7 +72,7 @@ func TestCreateFile(t *testing.T) {
rtest.OK(t, os.Mkdir(path, 0o700))
rtest.OK(t, os.WriteFile(filepath.Join(path, "file"), []byte("data"), 0o400))
},
err: syscall.ENOTEMPTY,
err: notEmptyDirError(),
},
{
name: "hardlinks",
@ -81,6 +81,11 @@ func TestCreateFile(t *testing.T) {
rtest.OK(t, os.Link(path, path+"h"))
},
check: func(t testing.TB, path string) {
if runtime.GOOS == "windows" {
// hardlinks are not supported on windows
return
}
data, err := os.ReadFile(path + "h")
rtest.OK(t, err)
rtest.Equals(t, "test-test-test-data", string(data), "unexpected content change")

View File

@ -0,0 +1,7 @@
package restorer
import "syscall"
func notEmptyDirError() error {
return syscall.ERROR_DIR_NOT_EMPTY
}