#!/usr/bin/env bash success() { echo -e "\033[92m\033[1m\033[7m${@}\033[0m" } success_lite() { echo -e "\033[92m${@}\033[0m" } error() { echo -e "\033[91m\033[7m\033[1m${@}\033[0m" } warn() { echo -e "\033[93m\033[1m\033[7m${@}\033[0m" } warn_lite() { echo -e "\033[93m${@}\033[0m" } exit_on_error() { if [ $1 -ne 0 ] then error "Error in test. Exiting..." exit $1 else success_lite "Success in test." fi } handle() { $1 exit_on_error $? } help() { echo "Usage: ./test [help] [c_unit] [size]" } c_unit() { warn "Running C unit test chain" echo # Compile C unit tests warn_lite "Making C header unit test" handle make c_unit echo warn_lite "Running C header unit test" handle bin/c echo success "Finished" } size() { warn "Running size test on optimization levels" echo warn_lite "Compiling and getting file sizes" handle tests/size.py echo success "Finished" } for test in "$@" do $test done echo -e "finished: ${SECONDS} seconds"