diff --git a/Makefile b/Makefile index b2770b9..c667e80 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,6 @@ TESTDIR = ./tests/ SOURCES := $(shell find $(SOURCEDIR) -name '*.java') all: - @chmod +x test.sh @make clean @make compile @make jar diff --git a/README.md b/README.md index fd214a9..592dd18 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,49 @@ ## Sommaire 📖 - [Introduction](#introduction) +- [Installation](#installation) +- [Utilisation](#utilisation) +- [Tests](#tests) +- [Documentation](#documentation) - [Auteurs](#auteurs-%F0%9F%91%A8%E2%80%8D%F0%9F%92%BB) ## 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. +## 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 👨‍💻 - Moncef STITI - [@stiti](https://grond.iut-fbleau.fr/stiti) - Louay DARDOURI - [@dardouri](https://grond.iut-fbleau.fr/dardouri) diff --git a/TODO.md b/TODO.md deleted file mode 100644 index ada3893..0000000 --- a/TODO.md +++ /dev/null @@ -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..) \ No newline at end of file diff --git a/test.sh b/test.sh deleted file mode 100755 index c886bea..0000000 --- a/test.sh +++ /dev/null @@ -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" \ No newline at end of file diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..8d5f9aa --- /dev/null +++ b/tests/README.md @@ -0,0 +1,4 @@ +# Tests + + +AJOUTER DOC ICI \ No newline at end of file