shithub: rgbds

Download patch

ref: f7bc61e874ebde2e29dad4075ab3834d78998df6
parent: 8d5a53f52950638b4234ce411529ca45f04aad16
author: Jakub Kądziołka <kuba@kadziolka.net>
date: Wed Jun 5 16:48:27 EDT 2019

Automatic tests for input from stdin

--- /dev/null
+++ b/test/asm/divzero-instr.out.pipe
@@ -1,0 +1,2 @@
+ERROR: -(2):
+    Division by zero
--- /dev/null
+++ b/test/asm/divzero-section-bank.out.pipe
@@ -1,0 +1,4 @@
+ERROR: -(1):
+    Invalid integer constant
+ERROR: -(1):
+    Division by zero
--- /dev/null
+++ b/test/asm/label-redefinition.out.pipe
@@ -1,0 +1,3 @@
+ERROR: -(7):
+    'Sym' already defined in m(6)
+error: Assembly aborted (1 errors)!
--- /dev/null
+++ b/test/asm/line-continuation.out.pipe
@@ -1,0 +1,2 @@
+ERROR: -(2) -> @(-1):
+    Macro '@' not defined
--- /dev/null
+++ b/test/asm/local-wrong-parent.out.pipe
@@ -1,0 +1,3 @@
+ERROR: -(5):
+    Not currently in the scope of 'WrongParent'
+error: Assembly aborted (1 errors)!
--- /dev/null
+++ b/test/asm/macro-@.out.pipe
@@ -1,0 +1,2 @@
+ERROR: -(1) -> @(-1):
+    Macro '@' not defined
--- /dev/null
+++ b/test/asm/null-in-macro.out.pipe
@@ -1,0 +1,2 @@
+ERROR: -(1):
+    Unterminated MACRO definition.
--- /dev/null
+++ b/test/asm/reference-undefined-sym.out.pipe
@@ -1,0 +1,3 @@
+ERROR: -(4):
+    'X' already referenced at -(2)
+error: Assembly aborted (1 errors)!
--- /dev/null
+++ b/test/asm/remote-local-noexist.out.pipe
@@ -1,0 +1,2 @@
+ERROR: -(7):
+    'Parent.child.fail' is a nonsensical reference to a nested local symbol
--- /dev/null
+++ b/test/asm/strlen.out.pipe
@@ -1,0 +1,2 @@
+$3
+$4
--- /dev/null
+++ b/test/asm/strsub.out.pipe
@@ -1,0 +1,31 @@
+warning: -(13) -> xstrsub(1):
+    STRSUB: Length too big: 32
+warning: -(14) -> xstrsub(1):
+    STRSUB: Length too big: 300
+warning: -(15) -> xstrsub(1):
+    STRSUB: Position starts at 1
+warning: -(15) -> xstrsub(1):
+    STRSUB: Length too big: 300
+warning: -(16) -> xstrsub(1):
+    STRSUB: Position 4 is past the end of the string
+warning: -(17) -> xstrsub(1):
+    STRSUB: Position 4 is past the end of the string
+warning: -(17) -> xstrsub(1):
+    STRSUB: Length too big: 1
+warning: -(20) -> xstrsub(1):
+    STRSUB: Length too big: 10
+A
+B
+C
+AB
+BC
+BC
+BC
+ABC
+
+
+カタ
+カナ
+カナ
+g
+g̈
--- a/test/asm/test.sh
+++ b/test/asm/test.sh
@@ -6,18 +6,25 @@
 rc=0
 
 for i in *.asm; do
-	../../rgbasm -o $o $i > $after 2>&1
-	diff -u ${i%.asm}.out $after
-	rc=$(($? || $rc))
-	bin=${i%.asm}.out.bin
-	if [ -f $bin ]; then
-		../../rgblink -o $gb $o > $after 2>&1
-		head -c $(wc -c < $bin) $gb > $after 2>&1
-		hexdump -C $after > $before && mv $before $after
-		hexdump -C $bin > $before
-		diff -u $before $after
+	for variant in '' '.pipe'; do
+		if [ -z "$variant" ]; then
+			../../rgbasm -o $o $i > $after 2>&1
+		else
+			cat $i | ../../rgbasm -o $o - > $after 2>&1
+		fi
+
+		diff -u ${i%.asm}.out$variant $after
 		rc=$(($? || $rc))
-	fi
+		bin=${i%.asm}.out.bin
+		if [ -f $bin ]; then
+			../../rgblink -o $gb $o > $after 2>&1
+			head -c $(wc -c < $bin) $gb > $after 2>&1
+			hexdump -C $after > $before && mv $before $after
+			hexdump -C $bin > $before
+			diff -u $before $after
+			rc=$(($? || $rc))
+		fi
+	done
 done
 
 rm -f $o $gb $before $after
--- /dev/null
+++ b/test/asm/undefined-dot.out.pipe
@@ -1,0 +1,1 @@
+error: -(3) : '.' not defined