Ajout d'un script de test automatisé et mise à jour du Makefile pour exécuter le script
This commit is contained in:
parent
53ea20ea69
commit
29ad274f28
1
Makefile
1
Makefile
@ -12,6 +12,7 @@ TESTDIR = ./tests/
|
||||
SOURCES := $(shell find $(SOURCEDIR) -name '*.java')
|
||||
|
||||
all:
|
||||
@chmod +x test.sh
|
||||
@make clean
|
||||
@make compile
|
||||
@make jar
|
||||
|
110
test.sh
Executable file
110
test.sh
Executable file
@ -0,0 +1,110 @@
|
||||
#!/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=$?
|
||||
|
||||
sortie_normalisee=$(echo "$sortie" | sed 's/make: .main. is up to date./TARGET_UP_TO_DATE/' | sed 's/bake: .main. is up to date./TARGET_UP_TO_DATE/')
|
||||
|
||||
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"
|
||||
)
|
||||
|
||||
tests_java=(
|
||||
"test-01-from-nothing"
|
||||
"test-03-circular"
|
||||
)
|
||||
|
||||
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"
|
Loading…
x
Reference in New Issue
Block a user