From 61c381a62c24833a0f26509d74410a27f39e794a Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Tue, 21 Jan 2020 03:01:58 +0100 Subject: [PATCH] Systemize RGBLINK testing --- test/link/{high-low-a.asm => high-low/a.asm} | 0 test/link/{high-low-b.asm => high-low/b.asm} | 0 test/link/test.sh | 102 +++++++++---------- 3 files changed, 47 insertions(+), 55 deletions(-) rename test/link/{high-low-a.asm => high-low/a.asm} (100%) rename test/link/{high-low-b.asm => high-low/b.asm} (100%) diff --git a/test/link/high-low-a.asm b/test/link/high-low/a.asm similarity index 100% rename from test/link/high-low-a.asm rename to test/link/high-low/a.asm diff --git a/test/link/high-low-b.asm b/test/link/high-low/b.asm similarity index 100% rename from test/link/high-low-b.asm rename to test/link/high-low/b.asm diff --git a/test/link/test.sh b/test/link/test.sh index def8b51a..3b696675 100755 --- a/test/link/test.sh +++ b/test/link/test.sh @@ -10,70 +10,62 @@ rc=0 RGBASM=../../rgbasm RGBLINK=../../rgblink -$RGBASM -o $otemp bank-numbers.asm -$RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr bank-numbers.out $outtemp -rc=$(($? || $rc)) -dd if=$gbtemp count=1 bs=20 > $otemp 2>/dev/null -diff --strip-trailing-cr bank-numbers.out.bin $otemp -rc=$(($? || $rc)) +for i in *.asm; do + $RGBASM -o $otemp $i -$RGBASM -o $otemp fixed-oob.asm -$RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr fixed-oob.out $outtemp -rc=$(($? || $rc)) + # Some tests have variants depending on flags + ran_flag= + for flag in '-d' '-t' '-w'; do + if [ -f ${i%.asm}-no${flag}.out ]; then + $RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 + diff --strip-trailing-cr ${i%.asm}-no${flag}.out $outtemp + rc=$(($? || $rc)) + ran_flag=1 + fi + if [ -f ${i%.asm}${flag}.out ]; then + $RGBLINK ${flag} -o $gbtemp $otemp > $outtemp 2>&1 + diff --strip-trailing-cr ${i%.asm}${flag}.out $outtemp + rc=$(($? || $rc)) + ran_flag=1 + fi + done + if [ -n "$ran_flag" ]; then + continue + fi -$RGBASM -o $otemp section-attributes.asm -$RGBLINK -l section-attributes.link -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr section-attributes.out $outtemp -rc=$(($? || $rc)) -$RGBLINK -l section-attributes-mismatch.link -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr section-attributes-mismatch.out $outtemp -rc=$(($? || $rc)) + # Other tests have several linker scripts + for script in `find . -name "${i%.asm}*.link"`; do + $RGBLINK -l $script -o $gbtemp $otemp > $outtemp 2>&1 + diff --strip-trailing-cr ${script%.link}.out $outtemp + rc=$(($? || $rc)) + ran_flag=1 + done + if [ -n "$ran_flag" ]; then + continue + fi -$RGBASM -o $otemp wramx-dmg-mode.asm -$RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr wramx-dmg-mode-no-d.out $outtemp -rc=$(($? || $rc)) -$RGBLINK -d -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr wramx-dmg-mode-d.out $outtemp -rc=$(($? || $rc)) + # The rest of the tests just links a file, and maybe checks the binary + $RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 + if [ -f ${i%.asm}.out ]; then + diff --strip-trailing-cr ${i%.asm}.out $outtemp + rc=$(($? || $rc)) + fi -$RGBASM -o $otemp vram-fixed-dmg-mode.asm -$RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr vram-fixed-dmg-mode-no-d.out $outtemp -rc=$(($? || $rc)) -$RGBLINK -d -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr vram-fixed-dmg-mode-d.out $outtemp -rc=$(($? || $rc)) + bin=${i%.asm}.out.bin + if [ -f $bin ]; then + dd if=$gbtemp count=1 bs=$(printf %s $(wc -c < $bin)) > $otemp 2>/dev/null + diff --strip-trailing-cr $bin $otemp + rc=$(($? || $rc)) + fi +done -$RGBASM -o $otemp vram-floating-dmg-mode.asm -$RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr vram-floating-dmg-mode-no-d.out $outtemp -rc=$(($? || $rc)) -$RGBLINK -d -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr vram-floating-dmg-mode-d.out $outtemp -rc=$(($? || $rc)) - -$RGBASM -o $otemp romx-tiny.asm -$RGBLINK -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr romx-tiny-no-t.out $outtemp -rc=$(($? || $rc)) -$RGBLINK -t -o $gbtemp $otemp > $outtemp 2>&1 -diff --strip-trailing-cr romx-tiny-t.out $outtemp -rc=$(($? || $rc)) - -$RGBASM -o $otemp high-low-a.asm +# This test does its own thing +$RGBASM -o $otemp high-low/a.asm $RGBLINK -o $gbtemp $otemp -$RGBASM -o $otemp high-low-b.asm +$RGBASM -o $otemp high-low/b.asm $RGBLINK -o $gbtemp2 $otemp diff --strip-trailing-cr $gbtemp $gbtemp2 rc=$(($? || $rc)) -$RGBASM -o $otemp all-instructions.asm -$RGBLINK -o $gbtemp $otemp -diff --strip-trailing-cr all-instructions.out.bin $gbtemp -rc=$(($? || $rc)) - rm -f $otemp $gbtemp $gbtemp2 $outtemp exit $rc