瀏覽代碼

Run verify script on Redox

Jeremy Soller 5 年之前
父節點
當前提交
5c0b37a229
共有 4 個文件被更改,包括 48 次插入13 次删除
  1. 3 2
      .gitlab-ci.yml
  2. 4 1
      Makefile
  3. 3 10
      tests/Makefile
  4. 38 0
      tests/verify.sh

+ 3 - 2
.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

+ 4 - 1
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
 

+ 3 - 10
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 \

+ 38 - 0
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