1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-20 20:18:05 +11:00
collapseos/tests/zasm/errtests.sh
Virgil Dupras 097c677641 emul/zasm: use libcfs
This allows us to get rid of the zasm.sh wrapper.
2019-12-31 15:07:39 -05:00

66 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
# no "set -e" because we test errors
ZASM=../../emul/zasm/zasm
chkerr() {
echo "Check that '$1' results in error $2"
${ZASM} > /dev/null <<XXX
$1
XXX
local res=$?
if [ $res = $2 ]; then
echo "Good!"
else
echo "$res != $2"
exit 1
fi
}
chkoom() {
echo "Trying OOM error..."
local tmp=$(mktemp)
# 300 x 27-29 bytes > 8192 bytes. Large enough to smash the pool.
local i=0
while [ "$i" -lt "300" ]; do
echo ".equ abcdefghijklmnopqrstuvwxyz$i 42" >> ${tmp}
i=$(($i+1))
done
${ZASM} < ${tmp} > /dev/null
local res=$?
rm ${tmp}
if [ $res = 23 ]; then
echo "Good!"
else
echo "$res != 23"
exit 1
fi
}
chkerr "foo" 17
chkerr "ld a, foo" 18
chkerr "ld a, hl" 18
chkerr ".db foo" 18
chkerr ".dw foo" 18
chkerr ".equ foo bar" 18
chkerr ".org foo" 18
chkerr ".fill foo" 18
chkerr "ld a," 19
chkerr "ld a, 'A" 19
chkerr ".db 0x42," 19
chkerr ".dw 0x4242," 19
chkerr ".equ" 19
chkerr ".equ foo" 19
chkerr ".org" 19
chkerr ".fill" 19
chkerr ".inc" 19
chkerr ".inc foo" 19
chkerr "ld a, 0x100" 20
chkerr ".db 0x100" 20
# TODO: find out why this tests fails on Travis but not on my machine...
# chkerr $'nop \ nop \ nop\n.fill 2-$' 20
chkerr ".inc \"doesnotexist\"" 21
chkerr 'foo:\\foo:' 22
chkoom