diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/test-e2e.sh | 121 |
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 |
