2025-02-06 21:09:09 +01:00
#!/bin/bash
SCRIPT_DIR = " $( cd " $( dirname " ${ BASH_SOURCE [0] } " ) " && pwd ) "
LOGS_DIR = " ${ SCRIPT_DIR } /logs "
mkdir -p " $LOGS_DIR "
BAKE_JAR = " ${ SCRIPT_DIR } /bakefile.jar "
executer_cas_de_test( ) {
local langue = $1
local cas_de_test = $2
local repertoire_test = " ${ SCRIPT_DIR } /tests/ ${ langue } / ${ cas_de_test } "
local repertoire_make = " ${ repertoire_test } /make "
local repertoire_bake = " ${ repertoire_test } /bake "
local repertoire_logs = " ${ LOGS_DIR } / ${ langue } _ ${ cas_de_test } "
mkdir -p " $repertoire_logs "
local fichier_resultat = " ${ repertoire_logs } /resultat.txt "
echo " Test de ${ langue } - ${ cas_de_test } "
if [ ! -d " $repertoire_make " ] || [ ! -d " $repertoire_bake " ] ; then
echo " ❌ Manque un répertoire pour ${ langue } - ${ cas_de_test } " > " $fichier_resultat "
return 1
fi
executer_et_journaliser( ) {
local repertoire = $1
local outil = $2
local fichier_journal = " ${ repertoire_logs } /details_ ${ outil } .log "
local fichier_sortie = " ${ repertoire_logs } /sortie_ ${ outil } .txt "
echo " Début du Test : $( date) " > " $fichier_journal "
echo " Outil : ${ outil } " >> " $fichier_journal "
cd " $repertoire " || return 1
if [ " $outil " = "make" ] ; then
sortie = $( make 2>& 1)
else
sortie = $( java -cp " ${ BAKE_JAR } " fr.monlouyan.bakefile.Main 2>& 1)
fi
code_sortie = $?
2025-02-08 23:25:15 +01:00
sortie_normalisee = $( echo " $sortie " | sed "s/make: [\`'].*[']* is up to date\./TARGET_UP_TO_DATE/" | sed "s/bake: [\`'].*[']* is up to date\./TARGET_UP_TO_DATE/" )
2025-02-06 21:09:09 +01:00
echo " $sortie " > " $fichier_sortie "
echo " Sortie ${ outil } : " >> " $fichier_journal "
echo " $sortie " >> " $fichier_journal "
echo " Code de Sortie : $code_sortie " >> " $fichier_journal "
echo " $sortie_normalisee "
return $code_sortie
}
sortie_make = $( executer_et_journaliser " $repertoire_make " "make" )
code_sortie_make = $?
sortie_bake = $( executer_et_journaliser " $repertoire_bake " "bake" )
code_sortie_bake = $?
resultat = "❌ Échec"
if [ $code_sortie_make -eq $code_sortie_bake ] ; then
echo "Fichiers dans make:" > " ${ repertoire_logs } /diff_fichiers.log "
find " $repertoire_make " -type f >> " ${ repertoire_logs } /diff_fichiers.log "
echo "Fichiers dans bake:" >> " ${ repertoire_logs } /diff_fichiers.log "
find " $repertoire_bake " -type f >> " ${ repertoire_logs } /diff_fichiers.log "
fichiers_generes_make = $( find " $repertoire_make " -type f | grep -v "bakefile.jar\|Makefile\|Bakefile\|README.md" | sort)
fichiers_generes_bake = $( find " $repertoire_bake " -type f | grep -v "bakefile.jar\|Makefile\|Bakefile\|README.md" | sort)
fichiers_make = $( echo " $fichiers_generes_make " | xargs -n1 basename | sort)
fichiers_bake = $( echo " $fichiers_generes_bake " | xargs -n1 basename | sort)
if [ " $fichiers_make " = " $fichiers_bake " ] && [ " $sortie_make " = " $sortie_bake " ] ; then
resultat = "✅ Réussi"
else
echo "Différences dans les sorties ou fichiers générés" >> " ${ repertoire_logs } /diff_fichiers.log "
fi
fi
echo " $resultat " > " $fichier_resultat "
echo " Fin du Test : $( date) " >> " $fichier_resultat "
echo " $resultat "
[ " $resultat " = "✅ Réussi" ]
}
tests_c = (
"test-01-from-nothing"
"test-02-already-exist"
"test-03-circular"
"test-04-edited"
"test-05-variables"
"test-06-variables-on-cascade"
2025-02-08 23:28:36 +01:00
"test-07-dependency"
"test-08-space-vs-tabulation"
"test-09-handling-comment"
"test-10-phony"
2025-02-09 18:17:32 +01:00
"test-11-error-in-code"
"test-12-file-dont-exist"
"test-13-dependancy-dont-exist"
"test-14-remove-source-and-rebuild"
"test-15-subdir-build"
2025-02-06 21:09:09 +01:00
)
tests_java = (
"test-01-from-nothing"
2025-02-08 20:45:45 +01:00
"test-02-already-exist"
2025-02-06 21:09:09 +01:00
"test-03-circular"
2025-02-08 20:45:45 +01:00
"test-04-edited"
"test-05-variables"
2025-02-06 21:09:09 +01:00
)
for cas_de_test in " ${ tests_c [@] } " ; do
executer_cas_de_test "C" " $cas_de_test "
done
for cas_de_test in " ${ tests_java [@] } " ; do
executer_cas_de_test "Java" " $cas_de_test "
done
echo "Résumé des Tests :" > " ${ LOGS_DIR } /resume.txt "
find " ${ LOGS_DIR } " -name "resultat.txt" -exec grep -H "✅\|❌" { } + >> " ${ LOGS_DIR } /resume.txt "