aboutsummaryrefslogtreecommitdiff
path: root/scripts/test-e2e.sh
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2025-08-18 17:14:49 +0200
committerMiquel Sabaté Solà <mikisabate@gmail.com>2025-08-18 17:14:49 +0200
commita17dc18969c90e8938434cacae455f22eba84633 (patch)
tree6d5567769754be6beeb7ddc6beffd7154dc6d502 /scripts/test-e2e.sh
parentba351201bca9bb116c2216b3e3f031cb8000b144 (diff)
downloadtools.nes-a17dc18969c90e8938434cacae455f22eba84633.tar.gz
tools.nes-a17dc18969c90e8938434cacae455f22eba84633.zip
Rebump end-to-end tests to work via git submodules
This provides a more up-to-date experience, while also allowing to test more cases. Moreover, the latest flags from 'xa65' are being used. All in all, both 'code.nes' and 'aoc2023.nes' appear to be working after the latest fixes. Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'scripts/test-e2e.sh')
-rwxr-xr-xscripts/test-e2e.sh121
1 files changed, 103 insertions, 18 deletions
diff --git a/scripts/test-e2e.sh b/scripts/test-e2e.sh
index 2185768..3eb5754 100755
--- a/scripts/test-e2e.sh
+++ b/scripts/test-e2e.sh
@@ -1,48 +1,133 @@
#!/usr/bin/env sh
-set -ex
+# Instead of setting -e or something like that, we will accumulate errors and
+# exit with the accumulated result at the end.
+exit_code=0
+
+AS65=${AS65:-"./target/debug/xa65"}
+
+##
+# Ensure git submodules are there and that the environment is set up correctly.
pushd tests
rm -rf out/
mkdir -p out/
-rm -rf code.nes
-tar xzf code.nes.tar.gz
+if [ ! -d code.nes ]; then
+ echo "(error) You need 'code.nes' for end-to-end tests."
+ exit 1
+fi
+
+if [ ! -d aoc2023.nes ]; then
+ echo "(error) You need 'aoc2023.nes' for end-to-end tests."
+ exit 1
+fi
-rm -rf aoc2023.nes
-tar xzf aoc2023.nes.tar.gz
popd
+##
+# Build.
+
+echo "(info): build development binaries"
cargo build
-# Custom
+##
+# Custom tests.
+echo "test: custom => defines-undefines.nes"
./target/debug/nasm -c empty -Werror -o tests/out/defines-undefined.nes tests/defines.s
diff tests/out/defines-undefined.nes tests/expected/defines-undefined.nes
+exit_code=$((exit_code + $?))
+echo "test: custom => defines-one.nes"
./target/debug/nasm -D LALA -c empty -Werror -o tests/out/defines-one.nes tests/defines.s
diff tests/out/defines-one.nes tests/expected/defines-one.nes
+exit_code=$((exit_code + $?))
+echo "test: custom => defines-two.nes"
./target/debug/nasm -D LALA=2 -c empty -Werror -o tests/out/defines-two.nes tests/defines.s
diff tests/out/defines-two.nes tests/expected/defines-two.nes
+exit_code=$((exit_code + $?))
+##
# code.nes
-./target/debug/nasm -c nrom -Werror -o tests/out/sprite.nes tests/code.nes/basics/sprite.s
-diff tests/out/sprite.nes tests/code.nes/out/basics/sprite.nes
+echo "test: code.nes => basics/sprite.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/basics/sprite.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => basics/input.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/basics/input.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => basics/persist.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/mmc1.cfg -o /dev/null tests/code.nes/basics/persist.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => basics/flicker.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/basics/flicker.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => basics/unrom.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/unrom.cfg -o /dev/null tests/code.nes/basics/unrom.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => basics/chr-ram.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/unrom.cfg -o /dev/null tests/code.nes/basics/chr-ram.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => fx/blink.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/mmc3.cfg -o /dev/null tests/code.nes/fx/blink.s
+exit_code=$((exit_code + $?))
-./target/debug/nasm -c unrom -Werror -o tests/out/chr-ram.nes tests/code.nes/basics/chr-ram.s
-diff tests/out/chr-ram.nes tests/code.nes/out/basics/chr-ram.nes
+echo "test: code.nes => scroll/toggle.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/scroll/toggle.s
+exit_code=$((exit_code + $?))
-./target/debug/nasm -c nrom -Werror -o tests/out/flicker.nes tests/code.nes/basics/flicker.s
-diff tests/out/flicker.nes tests/code.nes/out/basics/flicker.nes
+echo "test: code.nes => scroll/level.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/scroll/level.s
+exit_code=$((exit_code + $?))
-./target/debug/nasm -c nrom -Werror -o tests/out/space.nes tests/code.nes/space/src/space.s
-diff tests/out/space.nes tests/code.nes/out/space/space.nes
+echo "test: code.nes => scroll/sprite0.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/scroll/sprite0.s
+exit_code=$((exit_code + $?))
+echo "test: code.nes => scroll/mmc3.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/mmc3.cfg -o /dev/null tests/code.nes/scroll/mmc3.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => rand/rand.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/rand/rand.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => scroll/roulette.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/mmc3.cfg -o /dev/null tests/code.nes/scroll/roulette.s
+exit_code=$((exit_code + $?))
+
+echo "test: code.nes => space/space.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/code.nes/config/nrom.cfg -o /dev/null tests/code.nes/space/src/space.s
+exit_code=$((exit_code + $?))
+
+##
# aoc2023.nes
-./target/debug/nasm -c tests/aoc2023.nes/config/nes.cfg -o tests/out/1.nes tests/aoc2023.nes/src/1.s
-./target/debug/nasm -c tests/aoc2023.nes/config/nes.cfg -o tests/out/2.nes tests/aoc2023.nes/src/2.s
-./target/debug/nasm -c tests/aoc2023.nes/config/nes.cfg -o tests/out/3.nes tests/aoc2023.nes/src/3.s
-./target/debug/nasm -c tests/aoc2023.nes/config/nes.cfg -o tests/out/4.nes tests/aoc2023.nes/src/4.s
+echo "test: aoc2023.nes => 1.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/cfg/nrom65.cfg -o /dev/null tests/aoc2023.nes/src/1.s
+exit_code=$((exit_code + $?))
+
+echo "test: aoc2023.nes => 2.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/cfg/nrom65.cfg -o /dev/null tests/aoc2023.nes/src/2.s
+exit_code=$((exit_code + $?))
+
+echo "test: aoc2023.nes => 3.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/cfg/nrom65.cfg -o /dev/null tests/aoc2023.nes/src/3.s
+exit_code=$((exit_code + $?))
+
+echo "test: aoc2023.nes => 4.nes"
+$AS65 --strict -b ./target/debug/nasm -C tests/cfg/nrom65.cfg -o /dev/null tests/aoc2023.nes/src/4.s
+exit_code=$((exit_code + $?))
+
+##
+# Done!
+
+exit $exit_code