chmod test fails on WSL
SinisterRectus opened this issue · 0 comments
SinisterRectus commented
Tested on Windows 10 64-bit WSL2 Ubuntu 18.04.1 LTS.
sinister@DESKTOP-SB6R31A:/mnt/c/Users/Sinister/Desktop/luvit$ ./luvi . -- tests/test-fs-chmod.lua
1..1
# Starting Test: fs chmod
/mnt/c/Users/Sinister/Desktop/luvit/tests/libs/tap.lua:81: /mnt/c/Users/Sinister/Desktop/luvit/tests/test-fs-chmod.lua:82: assertion failed!
stack traceback:
[C]: in function 'error'
/mnt/c/Users/Sinister/Desktop/luvit/tests/libs/tap.lua:81: in function </mnt/c/Users/Sinister/Desktop/luvit/tests/libs/tap.lua:64>
[C]: in function 'xpcall'
/mnt/c/Users/Sinister/Desktop/luvit/tests/libs/tap.lua:64: in function 'run'
/mnt/c/Users/Sinister/Desktop/luvit/tests/libs/tap.lua:165: in function </mnt/c/Users/Sinister/Desktop/luvit/tests/libs/tap.lua:142>
/mnt/c/Users/Sinister/Desktop/luvit/tests/test-fs-chmod.lua:19: in function 'fn'
[string "bundle:deps/require.lua"]:310: in function 'require'
/mnt/c/Users/Sinister/Desktop/luvit/main.lua:128: in function 'main'
/mnt/c/Users/Sinister/Desktop/luvit/init.lua:49: in function </mnt/c/Users/Sinister/Desktop/luvit/init.lua:47>
[C]: in function 'xpcall'
/mnt/c/Users/Sinister/Desktop/luvit/init.lua:47: in function 'fn'
[string "bundle:deps/require.lua"]:310: in function <[string "bundle:deps/require.lua"]:266>
not ok 1 fs chmod
#1 failed test
This does not fail on Windows itself or on native Ubuntu 16.04. I haven't tested it on native Ubuntu 18.04.
The relevant code is:
if is_windows then
assert(maskMode(maskMode(fs.fstatSync(fd).mode), mode_sync))
else
assert(mode_sync == maskMode(fs.fstatSync(fd).mode))
end
On Windows:
is_windows true
mode_sync 438
fs.fstatSync(fd).mode 33206
maskMode(fs.fstatSync(fd).mode) 438
maskMode(maskMode(fs.fstatSync(fd).mode), mode_sync) 438
On WSL:
is_windows false
mode_sync 420
fs.fstatSync(fd).mode 33279
maskMode(fs.fstatSync(fd).mode) 511
maskMode(maskMode(fs.fstatSync(fd).mode), mode_sync) 420
On native Linux:
is_windows false
mode_sync 420
fs.fstatSync(fd).mode 33188
maskMode(fs.fstatSync(fd).mode) 420
maskMode(maskMode(fs.fstatSync(fd).mode), mode_sync) 420
I'm guessing it has something to do with "On Windows chmod is only able to manipulate read-only bit"?