Suppression du script test.sh, mise à jour du Makefile et ajout de sections dans le README.md pour l'installation, l'utilisation et les tests.
This commit is contained in:
parent
3cad3a6a53
commit
89aa7a1c5a
1
Makefile
1
Makefile
@ -12,7 +12,6 @@ TESTDIR = ./tests/
|
|||||||
SOURCES := $(shell find $(SOURCEDIR) -name '*.java')
|
SOURCES := $(shell find $(SOURCEDIR) -name '*.java')
|
||||||
|
|
||||||
all:
|
all:
|
||||||
@chmod +x test.sh
|
|
||||||
@make clean
|
@make clean
|
||||||
@make compile
|
@make compile
|
||||||
@make jar
|
@make jar
|
||||||
|
38
README.md
38
README.md
@ -2,11 +2,49 @@
|
|||||||
|
|
||||||
## Sommaire 📖
|
## Sommaire 📖
|
||||||
- [Introduction](#introduction)
|
- [Introduction](#introduction)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Utilisation](#utilisation)
|
||||||
|
- [Tests](#tests)
|
||||||
|
- [Documentation](#documentation)
|
||||||
- [Auteurs](#auteurs-%F0%9F%91%A8%E2%80%8D%F0%9F%92%BB)
|
- [Auteurs](#auteurs-%F0%9F%91%A8%E2%80%8D%F0%9F%92%BB)
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
Bake est un utilitaire de compilation inspiré de `make`, conçu pour gérer la génération et la mise à jour de fichiers en fonction de leurs dépendances. Contrairement à `make`, Bake utilise un fichier de configuration nommé `Bakefile`, avec une syntaxe simplifiée et sans certaines fonctionnalités avancées.
|
Bake est un utilitaire de compilation inspiré de `make`, conçu pour gérer la génération et la mise à jour de fichiers en fonction de leurs dépendances. Contrairement à `make`, Bake utilise un fichier de configuration nommé `Bakefile`, avec une syntaxe simplifiée et sans certaines fonctionnalités avancées.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
```bash
|
||||||
|
# Cloner le dépôt
|
||||||
|
git clone https://grond.iut-fbleau.fr/stiti/SAE32_2024/
|
||||||
|
cd SAE32_2024
|
||||||
|
|
||||||
|
# Compiler le projet et diffuser le .JAR dans tout les répertoires de tests
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
## Utilisation
|
||||||
|
```bash
|
||||||
|
# Utilisation dans les répertoires de test `bake`
|
||||||
|
java -cp bakefile.jar fr.monlouyan.bakefile.Main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
Le répertoire **tests** contient une liste de tests pour vérifier que Bake réagit comme Make.
|
||||||
|
- **[Accéder au répertoire de tests](./tests)**
|
||||||
|
- **Contenu**:
|
||||||
|
- **[README.md](./tests/README.md)** : Documentation qui explique l'utilisation des tests.
|
||||||
|
- **[C](./tests/C)** : Répertoire qui contient les tests en C.
|
||||||
|
- **[Java](./tests/Java)** : Répertoire qui contient les tests en Java.
|
||||||
|
|
||||||
|
Les dossiers de test sont organisés par langage (C, Java) et chaque test possède son propre script `run_testXX.sh` pour exécuter les tests correspondants.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
Le répertoire **documentation** contient un rapport et des diagrammes détaillant le fonctionnement de Bake.
|
||||||
|
- **[Accéder au répertoire de documentation](./documentation)**
|
||||||
|
- **Contenu**:
|
||||||
|
- **[rapport.pdf](./documentation/rapport.pdf)** : Rapport détaillant le projet Bake.
|
||||||
|
- **[Diagrammes](./documentation/Diagrammes)** : Répertoire contenant les diagrammes UML et autres schémas explicatifs.
|
||||||
|
|
||||||
|
|
||||||
## Auteurs 👨💻
|
## Auteurs 👨💻
|
||||||
- Moncef STITI - [@stiti](https://grond.iut-fbleau.fr/stiti)
|
- Moncef STITI - [@stiti](https://grond.iut-fbleau.fr/stiti)
|
||||||
- Louay DARDOURI - [@dardouri](https://grond.iut-fbleau.fr/dardouri)
|
- Louay DARDOURI - [@dardouri](https://grond.iut-fbleau.fr/dardouri)
|
||||||
|
5
TODO.md
5
TODO.md
@ -1,5 +0,0 @@
|
|||||||
# Liste des choses à faire plus tard :
|
|
||||||
|
|
||||||
- [ ] Améliorer les `README.md` des tests
|
|
||||||
- [ ] Ajouter le fichier compiler dans `test-02-exite-deja`
|
|
||||||
- [ ] Vérifier les commentaires -> si ça fait des erreurs (commentaire en plein milieu etc..)
|
|
125
test.sh
125
test.sh
@ -1,125 +0,0 @@
|
|||||||
#!/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: [\`'].*[']* is up to date\./TARGET_UP_TO_DATE/" | sed "s/bake: [\`'].*[']* 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"
|
|
||||||
"test-07-dependency"
|
|
||||||
"test-08-space-vs-tabulation"
|
|
||||||
"test-09-handling-comment"
|
|
||||||
"test-10-phony"
|
|
||||||
"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"
|
|
||||||
"test-16-strange-variables"
|
|
||||||
"test-17-rule-without-command"
|
|
||||||
"test-18-path-characters"
|
|
||||||
)
|
|
||||||
|
|
||||||
tests_java=(
|
|
||||||
"test-01-from-nothing"
|
|
||||||
"test-02-already-exist"
|
|
||||||
"test-03-circular"
|
|
||||||
"test-04-edited"
|
|
||||||
"test-05-variables"
|
|
||||||
)
|
|
||||||
|
|
||||||
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"
|
|
4
tests/README.md
Normal file
4
tests/README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Tests
|
||||||
|
|
||||||
|
|
||||||
|
AJOUTER DOC ICI
|
Loading…
x
Reference in New Issue
Block a user