Test return builtin doesn't map negative numbers to zero

Prior to 1811a2d, the return value for negative return codes was UB and I'd
witnessed both expected cases like -256 mapping to a $status of 0 and unexpected
cases like a return value of -1 mapping to a $status of 0. As such, this doesn't
test just one fixed return value but the entire range from negative multiples of
256 all the way down (rather, up!) to -1.
This commit is contained in:
Mahmoud Al-Qudsi 2022-09-25 12:37:10 -05:00
parent 1811a2d725
commit 3ebfba7f5b

View File

@ -20,3 +20,16 @@ $fish -ic 'echo interactive-foo; return 69; echo interactive-bar'
# but not bar
echo $status
# CHECK: 69
# Verify negative return values don't cause UB and never map to 0
function empty_return
return $argv[1]
end
for i in (seq -550 -1)
empty_return $i
if test $status -eq 0
echo returning $i from a fish script maps to a $status of 0!
end
end
# CHECK: