#!/usr/bin/env python import os, subprocess, time ##### Setup Variables tests_timeout=20 # Max duration of a test tests_path = os.path.dirname(os.path.realpath(__file__)) ##### 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("- %-40s%s " % (file,"=>"),end='') try: start_at=time.time() out=subprocess.check_output(simulator_path, stderr=subprocess.STDOUT,timeout=tests_timeout).decode("utf-8") out_expected=open(out_path).read() end_at=time.time() if out_expected != out: print("failed :(") print("------------- Expected -------------") print(out_expected,end="") print("------------- Got -------------") print(out,end="") else: print("passed (%0.1fs)"%(end_at-start_at)) except subprocess.TimeoutExpired as err: print("failed :(") print("------------- Test timeout (should not exceed "+str(tests_timeout)+"s) -------------") print(err.output.decode("utf-8"),end="") exit(1) except subprocess.CalledProcessError as err: print("failed :(") print("------------- Non test has a non-zero exit code -------------") print(err.output.decode("utf-8"),end="") exit(2) except Exception as err: print("failed :(") print("Reason: "+str(err)) exit(3)