fix(platform): support Windows storage and native filesystem boundaries

This commit is contained in:
eezd committed 2026-10-27 14:47:25 +08:00
1 parent 3726423338
commit e239fff253
24 files changed
+355 -51

No files matched your search

+8 -10
View File
@@ -6,15 +6,15 @@ import (
"errors"
"os"
"path/filepath"
"rawmark/internal/testutil"
"runtime"
"sync"
"testing"
"time"
)
func TestTrashPurgeFailurePreservesMetadata(t *testing.T) {
if os.Geteuid() == 0 {
t.Skip("目录写权限测试需以普通用户运行;root 可绕过文件权限")
}
for _, operation := range []string{"single", "all", "expired"} {
for _, blocked := range []string{"payload", "parent"} {
t.Run(operation+"/"+blocked, func(t *testing.T) {
@@ -47,11 +47,11 @@ func TestTrashPurgeFailurePreservesMetadata(t *testing.T) {
locked := filepath.Join(v.trash, item.ID, "folder", "locked")
if blocked == "parent" {
locked = v.trash
if runtime.GOOS == "windows" {
locked = filepath.Join(v.trash, item.ID)
}
}
if err := os.Chmod(locked, 0500); err != nil {
t.Fatal(err)
}
t.Cleanup(func() { os.Chmod(locked, 0755) })
allowRemove := testutil.DenyRemove(t, locked)
purge := func() error {
if operation == "single" {
return v.Purge(item.ID)
@@ -80,9 +80,7 @@ func TestTrashPurgeFailurePreservesMetadata(t *testing.T) {
if err != nil || len(items) != 1 || items[0].ID != item.ID {
t.Fatalf("删除失败的条目必须仍可列出: %+v %v", items, err)
}
if err := os.Chmod(locked, 0755); err != nil {
t.Fatal(err)
}
allowRemove()
if err := purge(); err != nil {
t.Fatalf("修复权限后应可继续清理: %v", err)
}