fix(skills): open reparse points in Windows file ID query and stabilize tunneled test
Add FILE_FLAG_OPEN_REPARSE_POINT to the Windows CreateFile call in skillPathFileIdentityImpl so symlinks are opened as reparse points rather than followed to their target. Staged symlinks carry relative targets computed for the final destination, which may not resolve from the staging directory; following them caused CreateFile to fail, yielding an empty file ID that rejected publication and broke canonical skill layout migration on Windows. Make skillPathSameFileIdentity a seam variable so the tunneled replacement test can deterministically simulate the identity change on Unix. On tmpfs (used by Linux CI runners), os.SameFile can return true for a recreated file due to inode reuse, making the test flaky. On Windows the swap is a no-op because skillPathIdentityProven compares file IDs from GetFileInformationByHandle and ignores skillPathSameFileIdentity.
This commit is contained in:
1 parent
e45608bb13
commit
344104268a
6 files changed
+22
-7
No files matched your search
@@ -17,7 +17,7 @@ func skillPathFileIncarnationImpl(info os.FileInfo) string {
|
||||
stat.Ctimespec.Sec, stat.Ctimespec.Nsec, stat.Birthtimespec.Sec, stat.Birthtimespec.Nsec)
|
||||
}
|
||||
|
||||
func skillPathSameFileIdentity(left, right os.FileInfo) bool {
|
||||
func skillPathSameFileIdentityImpl(left, right os.FileInfo) bool {
|
||||
return os.SameFile(left, right)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user