Skip to content

Commit b897b36

Browse files
shzhaijjayzhai
andauthored
fix incorrect identical result for windows node v22+ (#1050)
Co-authored-by: jayzhai <[email protected]>
1 parent 22583f7 commit b897b36

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

lib/util/__tests__/stat.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,16 @@ describe('util/stat', () => {
6363
stat.checkParentPathsSync(src, srcStat, dest, 'copy')
6464
})
6565
})
66+
67+
describe('should get correct identical result when stat.ino or stat.dev is 0n', () => {
68+
it('stat.areIdentical', () => {
69+
assert.ok(stat.areIdentical({ ino: 0n, dev: 0n }, { ino: 0n, dev: 0n }))
70+
assert.ok(stat.areIdentical({ ino: 1n, dev: 0n }, { ino: 1n, dev: 0n }))
71+
assert.ok(stat.areIdentical({ ino: 0n, dev: 1n }, { ino: 0n, dev: 1n }))
72+
assert.ok(stat.areIdentical({ ino: 1n, dev: 1n }, { ino: 1n, dev: 1n }))
73+
assert.ok(!stat.areIdentical({ ino: 2n, dev: 0n }, { ino: 1n, dev: 0n }))
74+
assert.ok(!stat.areIdentical({ ino: 0n, dev: 2n }, { ino: 0n, dev: 1n }))
75+
assert.ok(!stat.areIdentical({ ino: 2n, dev: 1n }, { ino: 1n, dev: 2n }))
76+
})
77+
})
6678
})

lib/util/stat.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ function checkParentPathsSync (src, srcStat, dest, funcName) {
130130
}
131131

132132
function areIdentical (srcStat, destStat) {
133-
return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev
133+
// stat.dev can be 0n on windows when node version >= 22.x.x
134+
return destStat.ino !== undefined && destStat.dev !== undefined && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev
134135
}
135136

136137
// return true if dest is a subdir of src, otherwise false.

0 commit comments

Comments
 (0)