diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f494e16..0006748 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ archlinux: - pip install build - pip install . script: - - ./tests/run.sh + - ./tests/run.py debian: image: "debian:latest" @@ -15,5 +15,5 @@ debian: - pip install build - pip install . script: - - ./tests/run.sh + - ./tests/run.py diff --git a/tests/run.py b/tests/run.py index cb5d88d..634ac2e 100755 --- a/tests/run.py +++ b/tests/run.py @@ -2,29 +2,31 @@ import os, subprocess -teststimeout=20 # Max duration of a test -testspath = os.path.dirname(os.path.realpath(__file__)) +##### Setup Variables +tests_timeout=20 # Max duration of a test +tests_path = os.path.dirname(os.path.realpath(__file__)) -for file in os.listdir(testspath): - testpath=os.path.join(testspath,file) - if os.path.isdir(testpath): - simulatorpath=os.path.join(testpath,"simulator.py") - outpath=os.path.join(testpath,"out") +##### Run All Tests +for file in os.listdir(tests_path): + current_test_path=os.path.join(tests_path,file) + if os.path.isdir(current_test_path): + simulator_path=os.path.join(current_test_path,"simulator.py") + out_path=os.path.join(current_test_path,"out") print("- %-50s%s " % (file,"=>"),end='') try: - out=subprocess.check_output(simulatorpath, stderr=subprocess.STDOUT,timeout=teststimeout).decode("utf-8") - outexpected=open(outpath).read() - if outexpected != out: + out=subprocess.check_output(simulator_path, stderr=subprocess.STDOUT,timeout=tests_timeout).decode("utf-8") + out_expected=open(out_path).read() + if out_expected != out: print("failed :(") print("------------- Expected -------------") - print(outexpected,end="") + print(out_expected,end="") print("------------- Got -------------") print(out,end="") else: print("passed") except subprocess.TimeoutExpired as err: print("failed :(") - print("------------- Test timeout (should not exceed "+str(teststimeout)+"s) -------------") + print("------------- Test timeout (should not exceed "+str(tests_timeout)+"s) -------------") print(err.output.decode("utf-8"),end="") exit(1) except subprocess.CalledProcessError as err: diff --git a/tests/run.sh b/tests/run.sh deleted file mode 100755 index 98f0a23..0000000 --- a/tests/run.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash - -wai=$(dirname $(readlink -f "$0")) # Current script directory -tests=$(ls -d ${wai}/*/) # Find tests -out=$(mktemp) -test_timeout=20 -abort=1 - -for test in ${tests} -do - printf "%-50s%s %s" "- $(basename $test)" "=>" - cd $test - timeout $test_timeout ./simulator.py &> "$out" - - # Ensure timeout - if [ $? -eq 124 ] - then - echo "failed :(" - echo "------------- Test timeout (should not exceed ${test_timeout}s) -------------" - cat "$out"; - rm "$out" - exit 2 - fi - - # Ensure test output - if [ "$(base64 $out)" = "$(base64 ./out)" ] - then - echo "passed" - else - echo "failed :(" - echo "------------- Expected -------------" - cat out - echo "------------- Got -------------" - cat "$out"; - rm "$out" - [ $abort -eq 1 ] && exit 1 - fi - - # Prepare for next test - cd - &>/dev/null -done - -rm "$out"