diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1e2d706f2d9900a47f065ece434108d1f8ec9820..29ae1341b913c1e6616eb199a6a4e382a9881f8a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -35,7 +35,7 @@ test:linux: dependencies: - build:linux script: - - make -C tests verify + - make test test:redox: stage: test @@ -46,7 +46,8 @@ test:redox: script: - export RUSTUP_TOOLCHAIN="$HOME/.redoxer/toolchain" - export PATH="$RUSTUP_TOOLCHAIN/bin:$PATH" - - make -C tests all + - export TEST_RUNNER="redoxer exec --folder . -- sh --" + - make test fmt: stage: test diff --git a/Makefile b/Makefile index 1be05d4436e70aabef3ff6fb0285ef07d125d222..f240ed5f65f6bc26714610c2817e950f241f044e 100644 --- a/Makefile +++ b/Makefile @@ -12,14 +12,17 @@ endif ifeq ($(TARGET),aarch64-unknown-linux-gnu) export CC=aarch64-linux-gnu-gcc + export LD=aarch64-linux-gnu-ld endif ifeq ($(TARGET),aarch64-unknown-redox) export CC=aarch64-unknown-redox-gcc + export LD=aarch64-unknown-redox-ld endif ifeq ($(TARGET),x86_64-unknown-redox) export CC=x86_64-unknown-redox-gcc + export LD=x86_64-unknown-redox-ld endif SRC=\ @@ -84,7 +87,7 @@ sysroot: all touch $@ test: sysroot - $(MAKE) -C tests run + $(MAKE) -C tests verify # Debug targets diff --git a/tests/Makefile b/tests/Makefile index 0e9bb32cc716a1e3e6119463b6751935d2c24a37..e1aa79989ff723f453af4c4083865b24452f553b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -126,6 +126,8 @@ NAMES=\ BINS=$(patsubst %,bins/%,$(NAMES)) EXPECT_BINS=$(patsubst %,bins/%,$(EXPECT_NAMES)) +TEST_RUNNER?=sh -- + .PHONY: all clean run expected verify all: $(BINS) @@ -151,16 +153,7 @@ expected: | $(EXPECT_BINS) done verify: | $(EXPECT_BINS) - rm -rf gen - mkdir -p gen - for name in $(EXPECT_NAMES); \ - do \ - echo "# $${name} #"; \ - mkdir -p gen/`dirname $${name}`; \ - "bins/$${name}" test args > "gen/$${name}.stdout" 2> "gen/$${name}.stderr" || exit $$?; \ - diff -u "gen/$${name}.stdout" "expected/$${name}.stdout" || exit $$?; \ - diff -u "gen/$${name}.stderr" "expected/$${name}.stderr" || exit $$?; \ - done + $(TEST_RUNNER) ./verify.sh $(EXPECT_NAMES) CFLAGS=\ -std=c11 \ diff --git a/tests/verify.sh b/tests/verify.sh new file mode 100755 index 0000000000000000000000000000000000000000..79aa82c20d4b4b5267123bcf139e12e71600d790 --- /dev/null +++ b/tests/verify.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +set -e + +rm -rf gen +mkdir -p gen + +while [ "$#" -gt 0 ] +do + name="$1" + shift + + echo "# ${name} #" + mkdir -p "gen/$(dirname ${name})" + "bins/${name}" test args > "gen/${name}.stdout" 2> "gen/${name}.stderr" + for output in stdout stderr + do + if [ "$(uname)" = "Redox" ] + then + gen="$(sha256sum "gen/${name}.${output}" | cut -d " " -f 1)" + expected="$(sha256sum "expected/${name}.${output}" | cut -d " " -f 1)" + if [ "$gen" != "$expected" ] + then + echo "# $output: $gen != $expected #" + + echo "# $output generated #" + cat "gen/${name}.${output}" + + echo "# $output expected #" + cat "expected/${name}.${output}" + + exit 1 + fi + else + diff -u "gen/${name}.${output}" "expected/${name}.${output}" + fi + done +done