diff --git a/tests/functional/run-tests.sh b/tests/functional/run-tests.sh new file mode 100644 index 0000000..b549067 --- /dev/null +++ b/tests/functional/run-tests.sh @@ -0,0 +1,189 @@ +#!/bin/bash + +echo WIP: vous pourriez regretter de lancer ce script +exit 2 + + +################### +# Variables # +################### + +executable="../../src/42sh" +errors_count=0 # TODO take into account + + + +################## +# Colors # +################## + +# Reset +Color_Off='\033[0m' # Text Reset + +# Regular Colors +Black='\033[0;30m' # Black +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green +Yellow='\033[0;33m' # Yellow +Blue='\033[0;34m' # Blue +Purple='\033[0;35m' # Purple +Cyan='\033[0;36m' # Cyan +White='\033[0;37m' # White + +# Bold +BBlack='\033[1;30m' # Black +BRed='\033[1;31m' # Red +BGreen='\033[1;32m' # Green +BYellow='\033[1;33m' # Yellow +BBlue='\033[1;34m' # Blue +BPurple='\033[1;35m' # Purple +BCyan='\033[1;36m' # Cyan +BWhite='\033[1;37m' # White + +# Underline +UBlack='\033[4;30m' # Black +URed='\033[4;31m' # Red +UGreen='\033[4;32m' # Green +UYellow='\033[4;33m' # Yellow +UBlue='\033[4;34m' # Blue +UPurple='\033[4;35m' # Purple +UCyan='\033[4;36m' # Cyan +UWhite='\033[4;37m' # White + +# Background +On_Black='\033[40m' # Black +On_Red='\033[41m' # Red +On_Green='\033[42m' # Green +On_Yellow='\033[43m' # Yellow +On_Blue='\033[44m' # Blue +On_Purple='\033[45m' # Purple +On_Cyan='\033[46m' # Cyan +On_White='\033[47m' # White + +# High Intensity +IBlack='\033[0;90m' # Black +IRed='\033[0;91m' # Red +IGreen='\033[0;92m' # Green +IYellow='\033[0;93m' # Yellow +IBlue='\033[0;94m' # Blue +IPurple='\033[0;95m' # Purple +ICyan='\033[0;96m' # Cyan +IWhite='\033[0;97m' # White + +# Bold High Intensity +BIBlack='\033[1;90m' # Black +BIRed='\033[1;91m' # Red +BIGreen='\033[1;92m' # Green +BIYellow='\033[1;93m' # Yellow +BIBlue='\033[1;94m' # Blue +BIPurple='\033[1;95m' # Purple +BICyan='\033[1;96m' # Cyan +BIWhite='\033[1;97m' # White + +# High Intensity backgrounds +On_IBlack='\033[0;100m' # Black +On_IRed='\033[0;101m' # Red +On_IGreen='\033[0;102m' # Green +On_IYellow='\033[0;103m' # Yellow +On_IBlue='\033[0;104m' # Blue +On_IPurple='\033[0;105m' # Purple +On_ICyan='\033[0;106m' # Cyan +On_IWhite='\033[0;107m' # White + + + +################## +# Wrappers # +################## + +# TODO output handling + +# @arg test name +# @arg input string +# @arg expected output +# @arg expected return code +test_cmd() { + + # Check input + if [[ -z "$1" || -z "$2" || -z "$3" || -z "$4"]]; then + echo $BRed "\n\n" "Issue in the testsuite: test_cmd: One or more argument is empty" $Color_off + exit 2 + fi + + echo $BBlue "=== $1 ===" $Color_off + + $executable -c "$2" + actual_code=$? + + if [[ "$actual_code" -ne "$4" ]]; then + echo $BRed "Test failed: expected code $4 but got $actual_code" $Color_off + fi + + echo $BBlue "===================" $Color_off "\n" +} + +# @arg test name +# @arg input script +# @arg expected output +# @arg expected return code +test_script() { + + # Check input + if [[ -z "$1" || -z "$2" || -z "$3" || -z "$4"]]; then + echo $BRed "\n\n" "Issue in the testsuite: test_script: One or more argument is empty" $Color_off + exit 2 + fi + if [[ ! -f "$2" ]]; then + echo $BRed "\n\n" "Issue in the testsuite: test_script: Second argument is not a file" $Color_off + exit 2 + fi + + + echo $BBlue "=== $1 ===" $Color_off + + $executable "$2" + actual_code=$? + + if [[ "$actual_code" -ne "$4" ]]; then + echo $BRed "Test failed: expected code $4 but got $actual_code" $Color_off + fi + + echo $BBlue "===================" $Color_off "\n" +} + +# @arg test name +# @arg input file +# @arg expected output +# @arg expected return code +test_stdin() { + # Check input + if [[ -z "$1" || -z "$2" || -z "$3" || -z "$4"]]; then + echo $BRed "\n\n" "Issue in the testsuite: test_stdin: One or more argument is empty" $Color_off + exit 2 + fi + if [[ ! -f "$2" ]]; then + echo $BRed "\n\n" "Issue in the testsuite: test_stdin: Second argument is not a file" $Color_off + exit 2 + fi + + + echo $BBlue "===== $1 =====" $Color_off + + $executable < "$2" + actual_code=$? + + if [[ "$actual_code" -ne "$4" ]]; then + echo $BRed "Test failed: expected code $4 but got $actual_code" $Color_off + fi + + echo $BBlue "===================" $Color_off "\n" + +} + + +# *********************************************************** +################# +# Tests # +################# + +