Test stdout and stderr now

This commit is contained in:
Yorick Barbanneau 2018-11-20 00:12:11 +01:00
parent ee8fdcbc4a
commit a759c98b95
3 changed files with 59 additions and 16 deletions

View file

@ -1,5 +1,5 @@
:3 :3:Vous n'avez pas donné votre réponse
o o:4 o o:4:Donnez une seule réponse
O:0 O:0:oui
n:1 n:1:non
oui:5 oui:5:Pas compris

View file

@ -1,8 +1,8 @@
fich1 rep1:0 fich1 rep1:0:999
fich1 rep1 12:0 fich1 rep1 12:0:12
fich1:3 fich1:3::usage : testargu.sh fichier répertoire [nombre_positif]
bidon rep1:4 bidon rep1:4::usage : testargu.sh fichier répertoire [nombre_positif]
fich2 rep1:4 fich2 rep1:4::usage : testargu.sh fichier répertoire [nombre_positif]
fich1 rep2:5 fich1 rep2:5::usage : testargu.sh fichier répertoire [nombre_positif]
fich1 rep1 -99:6 fich1 rep1 -99:6::usage : testargu.sh fichier répertoire [nombre_positif]
fich2 rep1 -99:4 fich2 rep1 -99:4::usage : testargu.sh fichier répertoire [nombre_positif]

49
test.sh
View file

@ -59,18 +59,61 @@ cd $DIR
[ ! -f $COMMAND ] && error "script **$COMMAND** not found" [ ! -f $COMMAND ] && error "script **$COMMAND** not found"
while IFS='' read -r i || [[ -n "$line" ]]; do while IFS='' read -r i || [[ -n "$line" ]]; do
# Create temp dir to store stderr
errfile=$(mktemp)
args=$(echo $i | cut -d: -f1) args=$(echo $i | cut -d: -f1)
e_code=$(echo $i | cut -d: -f2) e_code=$(echo $i | cut -d: -f2)
msg "\nScript *${COMMAND}*, paramètres **${args}**\n" e_stdout=$(echo $i | cut -d: -f3)
ret_o=$(./$COMMAND $args 2>&1) e_stderr=$(echo $i | cut -d: -f4-)
msg "\nScript **\"${COMMAND} ${args}\"**\n"
ret_o=$(./$COMMAND $args 2>$errfile)
ret_c=$? ret_c=$?
ret_e=$(< "$errfile")
rm "$errfile"
if [[ $ret_c == $e_code ]] if [[ $ret_c == $e_code ]]
then then
msg "green" "\tLe code de retour est celui attendu (${e_code})\n" msg "green" "\tLe code de retour est celui attendu (${e_code})\n"
else else
msg "yellow" "\tLe code de retour n'est pas correct script : ${ret_c} attendu : ${e_code}\n" msg "yellow" "\tLe code de retour n'est pas correct script : ${ret_c} attendu : ${e_code}\n"
fi fi
msg "blue" "\tRetour : ${ret_o}\n"
if [[ ! -z $ret_o ]]
then
if [[ ! -z $e_stdout ]]
then
if [[ $ret_o == $e_stdout ]]
then
msg "blue" "\tSTDOUT : $e_stdout\n"
else
msg "red" "\tSTDOUT n'est pas celui attendu :\n"
msg "blue" "\t\tAttendu :\t$e_stdout\n"
msg "blue" "\t\tObtenu :\t$ret_o\n"
fi
else
msg "red" "STDOUT (non attendu) : $ret_o\n"
fi
fi
if [[ ! -z $ret_e ]]
then
# Script return STDERR
if [[ ! -z $e_stderr ]]
then
# We need stderr to validate test
if [[ $e_stderr == $ret_e ]]
then
msg "blue" "\tSTDERR : $ret_e\n"
else
msg "red" "\tSTDERR n'est pas celui attendu\n"
msg "blue" "\t\tAttendu :\t$e_stderr\n"
msg "blue" "\t\tObtenu :\t$ret_e\n"
fi
msg "red" "\tSDTERR (non attendu) : $ret_e\n"
fi
fi
done < "$TEST_FILE" done < "$TEST_FILE"
exit 0 exit 0