feat: support explicit instance data deletion

This commit is contained in:
QiuSW
2026-07-27 23:16:11 +08:00
parent e400172d04
commit cab7e6ac7b
12 changed files with 670 additions and 28 deletions
@@ -0,0 +1,32 @@
//go:build windows
package files
import (
"context"
"errors"
"os"
"syscall"
"testing"
)
func TestInstanceDataRemoverRejectsWindowsReparsePoint(t *testing.T) {
called := false
remover := newInstanceDataRemover(func(string) (os.FileInfo, error) {
return fakeFileInfo{
mode: os.ModeDir,
sys: &syscall.Win32FileAttributeData{FileAttributes: syscall.FILE_ATTRIBUTE_REPARSE_POINT},
}, nil
}, func(string) error {
called = true
return nil
})
err := remover.RemoveInstanceData(context.Background(), `C:\profiles\junction`)
if !errors.Is(err, ErrUnsafeInstanceDataDirectory) {
t.Fatalf("RemoveInstanceData() error = %v, want unsafe directory", err)
}
if called {
t.Fatal("reparse point reached removal")
}
}