diff --git a/Makefile b/Makefile index a748833..f755804 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,7 @@ # === Environnements === -TEST_ENV = "bin:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar" +JUNIT_JAR = /usr/share/java/junit.jar +HAMCREST_JAR = /usr/share/java/hamcrest-core.jar +TEST_ENV = "bin:$(JUNIT_JAR):$(HAMCREST_JAR)" # === Répertoires === SRC_DIR = fr @@ -9,8 +11,11 @@ BIN_DIR = bin RES_SRC = fr/iut_fbleau/Res RES_BIN = bin/fr/iut_fbleau/Res -# === Recherche automatique des fichiers .java dans tous les sous-dossiers === -SOURCES := $(shell find $(SRC_DIR) -name "*.java") +# === Recherche automatique des fichiers .java === +# SOURCES : uniquement le code de l'application (sans les fichiers de tests) +SOURCES := $(shell find $(SRC_DIR) -name "*.java" -not -path "$(SRC_DIR)/iut_fbleau/Tests/*") +# TEST_SOURCES : uniquement les fichiers de tests +TEST_SOURCES := $(shell find $(SRC_DIR)/iut_fbleau/Tests -name "*.java" 2>/dev/null) # === Classe principale === MAIN_CLASS = fr.iut_fbleau.Avalam.Main @@ -20,7 +25,10 @@ TEST_CLASS = fr.iut_fbleau.Tests.AvalamBoardTest # === Commandes Java === JC = javac -JCFLAGS = -d $(BIN_DIR) -cp $(TEST_ENV) +# Compilation normale (application uniquement) +JCFLAGS = -d $(BIN_DIR) +# Compilation des tests (application + JUnit) +JCFLAGS_TESTS = -d $(BIN_DIR) -cp $(TEST_ENV) JAVA = java JAVAFLAGS = -cp $(BIN_DIR) @@ -38,6 +46,35 @@ compile: @mkdir -p $(BIN_DIR) @$(JC) $(JCFLAGS) $(SOURCES) +compile_tests: compile + @echo "===> Compilation des tests..." + @mkdir -p $(BIN_DIR) +ifneq ($(TEST_SOURCES),) + @$(JC) $(JCFLAGS_TESTS) $(TEST_SOURCES) +else + @echo "Aucun fichier de test trouvé dans $(SRC_DIR)/iut_fbleau/Tests" +endif + +# === Vérification / installation des dépendances de tests === +check_test_deps: + @echo "===> Vérification des dépendances de tests (JUnit / Hamcrest)..." + @if [ ! -f "$(JUNIT_JAR)" ] || [ ! -f "$(HAMCREST_JAR)" ]; then \ + echo " JUnit ou Hamcrest manquant, tentative d'installation (sudo requis)..."; \ + if command -v sudo >/dev/null 2>&1; then \ + sudo apt-get update && sudo apt-get install -y junit4 libhamcrest-java; \ + else \ + apt-get update && apt-get install -y junit4 libhamcrest-java; \ + fi; \ + if [ ! -f "$(JUNIT_JAR)" ] || [ ! -f "$(HAMCREST_JAR)" ]; then \ + echo "✖ Impossible de trouver/installer $(JUNIT_JAR) ou $(HAMCREST_JAR). Vérifiez manuellement vos paquets JUnit/Hamcrest."; \ + exit 1; \ + else \ + echo "✔ Dépendances de tests installées."; \ + fi; \ + else \ + echo "✔ JUnit et Hamcrest trouvés."; \ + fi + # === Copie des ressources (.txt) dans bin === resources: @echo "===> Copie des ressources..." @@ -51,7 +88,7 @@ run: @$(JAVA) $(JAVAFLAGS) $(MAIN_CLASS) # === Tests === -test: +test: check_test_deps compile_tests @echo "===> Lancement des tests..." @$(JAVA) $(JAVAFLAGS_TESTS) org.junit.runner.JUnitCore $(TEST_CLASS) @echo "... Fin des tests." diff --git a/README.md b/README.md index 4531d8c..07a748b 100644 --- a/README.md +++ b/README.md @@ -12,37 +12,55 @@ Dans un second temps, nous développerons des bots les plus efficaces possible, Le jeu de notre groupe est **Avalam**. -## Compilation et exécution +## Compilation, exécution et tests -### Compilation +### Compilation (sans tests) ```bash make build ``` - -### Tests +ou simplement : ```bash -make test +make ``` +Cette commande : +- compile uniquement le code de l'application (sans les fichiers du dossier `fr/iut_fbleau/Tests`) ; +- copie les ressources dans `bin/`. -### Exécution +### Exécution du jeu ```bash make run ``` +Lance la fenêtre de jeu Avalam après compilation. + +### Lancer les tests +```bash +make test +``` +Cette commande : +- vérifie d'abord la présence de **JUnit** et **Hamcrest** dans `/usr/share/java` ; +- si nécessaire, tente de les installer automatiquement via `apt-get` (sudo requis sur Debian/Ubuntu) ; +- compile ensuite les fichiers de tests (`fr/iut_fbleau/Tests`) ; +- lance enfin la suite de tests JUnit (`AvalamBoardTest`). + +Si l'installation automatique échoue (autre OS, pas de droits sudo, pas d'accès réseau, etc.), un message l'indiquera et il faudra installer JUnit/Hamcrest manuellement. ### Nettoyage ```bash make clean ``` +Supprime le répertoire `bin/` (classes compilées et ressources copiées). -### Recompiler et exécuter +### Recompiler puis exécuter ```bash make re ``` +Équivaut à `make clean` puis `make build` puis `make run`. ### Générer la Javadoc ```bash make javadoc ``` +Génère la documentation dans le dossier `doc/`. ## Architecture du projet