From 6ffc322932ce212b6c8ca2069243c14d281ddd05 Mon Sep 17 00:00:00 2001 From: Arnaud LABOUREL <arnaud.labourel@lis-lab.fr> Date: Thu, 16 Jan 2025 16:56:11 +0100 Subject: [PATCH] Update projet 2024 --- TP1/.gitignore | 18 +++----- TP1/README.md | 17 ++++--- TP1/build.gradle | 24 ---------- TP1/build.gradle.kts | 30 ++++++++++++ {TP3 => TP1}/gradle.properties | 0 TP1/gradle/wrapper/gradle-wrapper.jar | Bin 60756 -> 59821 bytes TP1/gradle/wrapper/gradle-wrapper.properties | 3 +- TP1/gradlew | 20 ++++++-- TP1/settings.gradle | 2 +- .../src/main/java/complex/Complex.java | 0 .../src/main/java/deque/DoubleEndedQueue.java | 0 .../src/main/java/palindrome/Palindrome.java | 0 .../partial_coverage/PartialCoverage.java | 0 .../src/test/java/complex/ComplexTest.java | 0 .../test/java/palindrome/PalindromeTest.java | 0 TP2/README.md | 10 +++- TP2/build.gradle | 42 ----------------- TP2/build.gradle.kts | 43 ++++++++++++++++++ TP2/gradle/wrapper/gradle-wrapper.properties | 2 +- TP2/settings.gradle | 2 +- {TP1/images => TP2/src/main/java}/.gitkeep | 0 {TP3/src/main => TP2/src/test}/java/.gitkeep | 0 TP3/.gitignore | 18 +++++--- TP3/README.md | 23 +++------- TP3/build.gradle | 43 ------------------ TP3/build.gradle.kts | 23 ++++++++++ {TP1 => TP3}/executables/check00exe | Bin {TP1 => TP3}/executables/check01exe | Bin {TP1 => TP3}/executables/check02exe | Bin {TP1 => TP3}/executables/check03exe | Bin {TP1 => TP3}/executables/check04exe | Bin {TP1 => TP3}/executables/check05exe | Bin {TP1 => TP3}/executables/check06exe | Bin {TP1 => TP3}/executables/check07exe | Bin {TP1 => TP3}/executables/check08exe | Bin {TP1 => TP3}/executables/check09exe | Bin {TP1 => TP3}/executables/check10exe | Bin {TP1 => TP3}/executables/check11exe | Bin TP3/gradle/wrapper/gradle-wrapper.jar | Bin 59821 -> 60756 bytes TP3/gradle/wrapper/gradle-wrapper.properties | 3 +- TP3/gradlew | 20 ++------ TP3/{src/test/java => images}/.gitkeep | 0 TP3/settings.gradle | 2 +- {TP1 => TP3}/src/main/java/BlackBox.java | 0 44 files changed, 166 insertions(+), 179 deletions(-) delete mode 100644 TP1/build.gradle create mode 100644 TP1/build.gradle.kts rename {TP3 => TP1}/gradle.properties (100%) rename {TP2 => TP1}/src/main/java/complex/Complex.java (100%) rename {TP2 => TP1}/src/main/java/deque/DoubleEndedQueue.java (100%) rename {TP2 => TP1}/src/main/java/palindrome/Palindrome.java (100%) rename {TP2 => TP1}/src/main/java/partial_coverage/PartialCoverage.java (100%) rename {TP2 => TP1}/src/test/java/complex/ComplexTest.java (100%) rename {TP2 => TP1}/src/test/java/palindrome/PalindromeTest.java (100%) delete mode 100644 TP2/build.gradle create mode 100644 TP2/build.gradle.kts rename {TP1/images => TP2/src/main/java}/.gitkeep (100%) rename {TP3/src/main => TP2/src/test}/java/.gitkeep (100%) delete mode 100644 TP3/build.gradle create mode 100644 TP3/build.gradle.kts rename {TP1 => TP3}/executables/check00exe (100%) rename {TP1 => TP3}/executables/check01exe (100%) rename {TP1 => TP3}/executables/check02exe (100%) rename {TP1 => TP3}/executables/check03exe (100%) rename {TP1 => TP3}/executables/check04exe (100%) rename {TP1 => TP3}/executables/check05exe (100%) rename {TP1 => TP3}/executables/check06exe (100%) rename {TP1 => TP3}/executables/check07exe (100%) rename {TP1 => TP3}/executables/check08exe (100%) rename {TP1 => TP3}/executables/check09exe (100%) rename {TP1 => TP3}/executables/check10exe (100%) rename {TP1 => TP3}/executables/check11exe (100%) rename TP3/{src/test/java => images}/.gitkeep (100%) rename {TP1 => TP3}/src/main/java/BlackBox.java (100%) diff --git a/TP1/.gitignore b/TP1/.gitignore index 917e7a6..840c983 100644 --- a/TP1/.gitignore +++ b/TP1/.gitignore @@ -1,14 +1,10 @@ -.gradle -build/ -!gradle/wrapper/gradle-wrapper.jar -!**/src/main/**/build/ -!**/src/test/**/build/ +.gradle/ +.idea/ +build/**/ +*.iml +*.ipr +*.iws + -### IntelliJ IDEA ### -.idea -### VS Code ### -.vscode/ -### Mac OS ### -.DS_Store \ No newline at end of file diff --git a/TP1/README.md b/TP1/README.md index a734f55..b2db0da 100644 --- a/TP1/README.md +++ b/TP1/README.md @@ -1,11 +1,14 @@ -# TP 1 : tests boîte noire +# TP 2 : tests unitaires et couverture de test -Les exécutables à tester sont dans le répertoire `executables`. -Les fichiers images correspondant au cas de test sont à mettre dans le répertoire `ìmages`. +Les commandes gradle les plus utiles : +- `gradle test` pour lancer les tests (rapports dans `build/reports/tests/test`), +- `gradle jacocoTestReport` pour lancer la couverture de code via l'outil [Jacoco](https://www.eclemma.org/jacoco/) (rapport accessible en html à `build/reports/jacoco/test/html/index.html`). -Pour lancer les tests, il suffit d'utiliser la commande : +Le fichier `build.gradle` contient la configuration du projet avec notamment la définition de la classe contenant la méthode `main` à exécuter pour l'application. -```bash -gradle run -``` + +## Membre(s) du projet + +- NOM, prénom du premier membre du projet +- NOM, prénom du deuxième membre du projet (optionnel) diff --git a/TP1/build.gradle b/TP1/build.gradle deleted file mode 100644 index f778d08..0000000 --- a/TP1/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id 'java' - id 'application' -} - -group = 'org.example' -version = '1.0-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - testImplementation platform('org.junit:junit-bom:5.9.1') - testImplementation 'org.junit.jupiter:junit-jupiter' -} - -test { - useJUnitPlatform() -} - -application { - mainClass.set("BlackBox") -} \ No newline at end of file diff --git a/TP1/build.gradle.kts b/TP1/build.gradle.kts new file mode 100644 index 0000000..5663ea9 --- /dev/null +++ b/TP1/build.gradle.kts @@ -0,0 +1,30 @@ +plugins { + id("java") +} + +group = "fr.univ_amu.m1info" +version = "1.0-SNAPSHOT" + +repositories { + mavenCentral() +} + +dependencies { + testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.4") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.4") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + testImplementation("org.assertj:assertj-core:3.27.0") +} + +tasks.test { + useJUnitPlatform() +} + + + + + + + + + diff --git a/TP3/gradle.properties b/TP1/gradle.properties similarity index 100% rename from TP3/gradle.properties rename to TP1/gradle.properties diff --git a/TP1/gradle/wrapper/gradle-wrapper.jar b/TP1/gradle/wrapper/gradle-wrapper.jar index 249e5832f090a2944b7473328c07c9755baa3196..41d9927a4d4fb3f96a785543079b8df6723c946b 100644 GIT binary patch delta 9308 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 delta 10197 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 K1_tR{ARYkAI0JnE diff --git a/TP1/gradle/wrapper/gradle-wrapper.properties b/TP1/gradle/wrapper/gradle-wrapper.properties index 16e76d0..d6e308a 100644 --- a/TP1/gradle/wrapper/gradle-wrapper.properties +++ b/TP1/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Dec 05 18:16:17 CET 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/TP1/gradlew b/TP1/gradlew index 1b6c787..5580fce 100755 --- a/TP1/gradlew +++ b/TP1/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,13 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +DEFAULT_JVM_OPTS='-Dfile.encoding=UTF-8 "-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -205,6 +209,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/TP1/settings.gradle b/TP1/settings.gradle index 83bb007..3c15e35 100644 --- a/TP1/settings.gradle +++ b/TP1/settings.gradle @@ -1,2 +1,2 @@ -rootProject.name = 'tp_1_test_blackbox' +rootProject.name = 'tp_1_unit_test_and_coverage' diff --git a/TP2/src/main/java/complex/Complex.java b/TP1/src/main/java/complex/Complex.java similarity index 100% rename from TP2/src/main/java/complex/Complex.java rename to TP1/src/main/java/complex/Complex.java diff --git a/TP2/src/main/java/deque/DoubleEndedQueue.java b/TP1/src/main/java/deque/DoubleEndedQueue.java similarity index 100% rename from TP2/src/main/java/deque/DoubleEndedQueue.java rename to TP1/src/main/java/deque/DoubleEndedQueue.java diff --git a/TP2/src/main/java/palindrome/Palindrome.java b/TP1/src/main/java/palindrome/Palindrome.java similarity index 100% rename from TP2/src/main/java/palindrome/Palindrome.java rename to TP1/src/main/java/palindrome/Palindrome.java diff --git a/TP2/src/main/java/partial_coverage/PartialCoverage.java b/TP1/src/main/java/partial_coverage/PartialCoverage.java similarity index 100% rename from TP2/src/main/java/partial_coverage/PartialCoverage.java rename to TP1/src/main/java/partial_coverage/PartialCoverage.java diff --git a/TP2/src/test/java/complex/ComplexTest.java b/TP1/src/test/java/complex/ComplexTest.java similarity index 100% rename from TP2/src/test/java/complex/ComplexTest.java rename to TP1/src/test/java/complex/ComplexTest.java diff --git a/TP2/src/test/java/palindrome/PalindromeTest.java b/TP1/src/test/java/palindrome/PalindromeTest.java similarity index 100% rename from TP2/src/test/java/palindrome/PalindromeTest.java rename to TP1/src/test/java/palindrome/PalindromeTest.java diff --git a/TP2/README.md b/TP2/README.md index b2db0da..0d545b0 100644 --- a/TP2/README.md +++ b/TP2/README.md @@ -1,14 +1,20 @@ -# TP 2 : tests unitaires et couverture de test +# Projet + +Modèle de projet gradle pour les tests unitaires avec mock grace à [Mockito](https://site.mockito.org/). Les commandes gradle les plus utiles : - `gradle test` pour lancer les tests (rapports dans `build/reports/tests/test`), -- `gradle jacocoTestReport` pour lancer la couverture de code via l'outil [Jacoco](https://www.eclemma.org/jacoco/) (rapport accessible en html à `build/reports/jacoco/test/html/index.html`). +- `gradle run` pour lancer le programme, +- `gradle jacocoTestReport` pour lancer la couverture de code via l'outil [Jacoco](https://www.eclemma.org/jacoco/) (rapports dans `build/reports/jacoco/test`). Le fichier `build.gradle` contient la configuration du projet avec notamment la définition de la classe contenant la méthode `main` à exécuter pour l'application. +Le projet est configuré (via le fichier `.gitlab-ci.yml`) pour produire un jar et lancer les tests sur le serveur à chaque *push*. Si la suite de tests échoue, vous recevrez un mail avec `Failed pipeline` dans l'intitulé de la part d'etulab. + ## Membre(s) du projet - NOM, prénom du premier membre du projet - NOM, prénom du deuxième membre du projet (optionnel) + diff --git a/TP2/build.gradle b/TP2/build.gradle deleted file mode 100644 index 25ec172..0000000 --- a/TP2/build.gradle +++ /dev/null @@ -1,42 +0,0 @@ -plugins { - id 'java' - id 'application' - id 'jacoco' -} - -group 'fr.univ_amu' -version '1.0-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - testImplementation 'org.junit.jupiter:junit-jupiter:5.9.2' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testImplementation("org.assertj:assertj-core:3.24.2") -} - -test { - finalizedBy jacocoTestReport -} - -jacocoTestReport { - dependsOn test // tests are required to run before generating the report - reports { - xml.required = true - } -} - -test { - useJUnitPlatform() -} - - - - - - - - - diff --git a/TP2/build.gradle.kts b/TP2/build.gradle.kts new file mode 100644 index 0000000..7649f09 --- /dev/null +++ b/TP2/build.gradle.kts @@ -0,0 +1,43 @@ +plugins { + id("java") + id("jacoco") +} + +repositories { + mavenCentral() +} + +dependencies { + testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.4") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.4") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + testImplementation("org.assertj:assertj-core:3.27.0") + testImplementation("org.mockito:mockito-core:5.15.2") +} + +tasks.test { + finalizedBy("jacocoTestReport") +} + +tasks.jacocoTestReport { + dependsOn("test") + reports { + xml.required = true + html.outputLocation = layout.buildDirectory.dir("jacocoHtml") + } +} + +tasks.test { + useJUnitPlatform() +} + + + + + + + + + + + diff --git a/TP2/gradle/wrapper/gradle-wrapper.properties b/TP2/gradle/wrapper/gradle-wrapper.properties index a595206..d6e308a 100644 --- a/TP2/gradle/wrapper/gradle-wrapper.properties +++ b/TP2/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/TP2/settings.gradle b/TP2/settings.gradle index e349141..b5c5332 100644 --- a/TP2/settings.gradle +++ b/TP2/settings.gradle @@ -1,2 +1,2 @@ -rootProject.name = 'tp_2_unit_test_and_coverage' +rootProject.name = 'tp_2_mocking' diff --git a/TP1/images/.gitkeep b/TP2/src/main/java/.gitkeep similarity index 100% rename from TP1/images/.gitkeep rename to TP2/src/main/java/.gitkeep diff --git a/TP3/src/main/java/.gitkeep b/TP2/src/test/java/.gitkeep similarity index 100% rename from TP3/src/main/java/.gitkeep rename to TP2/src/test/java/.gitkeep diff --git a/TP3/.gitignore b/TP3/.gitignore index 840c983..917e7a6 100644 --- a/TP3/.gitignore +++ b/TP3/.gitignore @@ -1,10 +1,14 @@ -.gradle/ -.idea/ -build/**/ -*.iml -*.ipr -*.iws - +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ +### IntelliJ IDEA ### +.idea +### VS Code ### +.vscode/ +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/TP3/README.md b/TP3/README.md index 0d545b0..a734f55 100644 --- a/TP3/README.md +++ b/TP3/README.md @@ -1,20 +1,11 @@ -# Projet +# TP 1 : tests boîte noire -Modèle de projet gradle pour les tests unitaires avec mock grace à [Mockito](https://site.mockito.org/). +Les exécutables à tester sont dans le répertoire `executables`. +Les fichiers images correspondant au cas de test sont à mettre dans le répertoire `ìmages`. -Les commandes gradle les plus utiles : -- `gradle test` pour lancer les tests (rapports dans `build/reports/tests/test`), -- `gradle run` pour lancer le programme, -- `gradle jacocoTestReport` pour lancer la couverture de code via l'outil [Jacoco](https://www.eclemma.org/jacoco/) (rapports dans `build/reports/jacoco/test`). - -Le fichier `build.gradle` contient la configuration du projet avec notamment la définition de la classe contenant la méthode `main` à exécuter pour l'application. - -Le projet est configuré (via le fichier `.gitlab-ci.yml`) pour produire un jar et lancer les tests sur le serveur à chaque *push*. Si la suite de tests échoue, vous recevrez un mail avec `Failed pipeline` dans l'intitulé de la part d'etulab. - - -## Membre(s) du projet - -- NOM, prénom du premier membre du projet -- NOM, prénom du deuxième membre du projet (optionnel) +Pour lancer les tests, il suffit d'utiliser la commande : +```bash +gradle run +``` diff --git a/TP3/build.gradle b/TP3/build.gradle deleted file mode 100644 index 38e5a4e..0000000 --- a/TP3/build.gradle +++ /dev/null @@ -1,43 +0,0 @@ -plugins { - id 'java' - id 'application' - id 'jacoco' -} - -group 'fr.univ_amu' -version '1.0-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - testImplementation 'org.junit.jupiter:junit-jupiter:5.9.2' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testImplementation('org.mockito:mockito-core:5.9.0') - testImplementation("org.assertj:assertj-core:3.25.1") -} - -test { - finalizedBy jacocoTestReport -} - -jacocoTestReport { - dependsOn test // tests are required to run before generating the report - reports { - xml.required = true - } -} - -test { - useJUnitPlatform() -} - - - - - - - - - diff --git a/TP3/build.gradle.kts b/TP3/build.gradle.kts new file mode 100644 index 0000000..3dde6c7 --- /dev/null +++ b/TP3/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + id("java") + id("application") +} + +repositories { + mavenCentral() +} + +dependencies { + testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.4") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.4") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + testImplementation("org.assertj:assertj-core:3.27.0") +} + +tasks.test { + useJUnitPlatform() +} + +application { + mainClass.set("BlackBox") +} \ No newline at end of file diff --git a/TP1/executables/check00exe b/TP3/executables/check00exe similarity index 100% rename from TP1/executables/check00exe rename to TP3/executables/check00exe diff --git a/TP1/executables/check01exe b/TP3/executables/check01exe similarity index 100% rename from TP1/executables/check01exe rename to TP3/executables/check01exe diff --git a/TP1/executables/check02exe b/TP3/executables/check02exe similarity index 100% rename from TP1/executables/check02exe rename to TP3/executables/check02exe diff --git a/TP1/executables/check03exe b/TP3/executables/check03exe similarity index 100% rename from TP1/executables/check03exe rename to TP3/executables/check03exe diff --git a/TP1/executables/check04exe b/TP3/executables/check04exe similarity index 100% rename from TP1/executables/check04exe rename to TP3/executables/check04exe diff --git a/TP1/executables/check05exe b/TP3/executables/check05exe similarity index 100% rename from TP1/executables/check05exe rename to TP3/executables/check05exe diff --git a/TP1/executables/check06exe b/TP3/executables/check06exe similarity index 100% rename from TP1/executables/check06exe rename to TP3/executables/check06exe diff --git a/TP1/executables/check07exe b/TP3/executables/check07exe similarity index 100% rename from TP1/executables/check07exe rename to TP3/executables/check07exe diff --git a/TP1/executables/check08exe b/TP3/executables/check08exe similarity index 100% rename from TP1/executables/check08exe rename to TP3/executables/check08exe diff --git a/TP1/executables/check09exe b/TP3/executables/check09exe similarity index 100% rename from TP1/executables/check09exe rename to TP3/executables/check09exe diff --git a/TP1/executables/check10exe b/TP3/executables/check10exe similarity index 100% rename from TP1/executables/check10exe rename to TP3/executables/check10exe diff --git a/TP1/executables/check11exe b/TP3/executables/check11exe similarity index 100% rename from TP1/executables/check11exe rename to TP3/executables/check11exe diff --git a/TP3/gradle/wrapper/gradle-wrapper.jar b/TP3/gradle/wrapper/gradle-wrapper.jar index 41d9927a4d4fb3f96a785543079b8df6723c946b..249e5832f090a2944b7473328c07c9755baa3196 100644 GIT binary patch delta 10197 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 K1_tR{ARYkAI0JnE delta 9308 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 diff --git a/TP3/gradle/wrapper/gradle-wrapper.properties b/TP3/gradle/wrapper/gradle-wrapper.properties index a595206..6cad6cd 100644 --- a/TP3/gradle/wrapper/gradle-wrapper.properties +++ b/TP3/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Tue Dec 05 18:16:17 CET 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/TP3/gradlew b/TP3/gradlew index 5580fce..1b6c787 100755 --- a/TP3/gradlew +++ b/TP3/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,13 @@ do esac done -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='-Dfile.encoding=UTF-8 "-Xmx64m" "-Xms64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -143,16 +143,12 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -209,12 +205,6 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/TP3/src/test/java/.gitkeep b/TP3/images/.gitkeep similarity index 100% rename from TP3/src/test/java/.gitkeep rename to TP3/images/.gitkeep diff --git a/TP3/settings.gradle b/TP3/settings.gradle index 3537f06..11bb3fe 100644 --- a/TP3/settings.gradle +++ b/TP3/settings.gradle @@ -1,2 +1,2 @@ -rootProject.name = 'tp_3_mocking' +rootProject.name = 'tp_3_test_blackbox' diff --git a/TP1/src/main/java/BlackBox.java b/TP3/src/main/java/BlackBox.java similarity index 100% rename from TP1/src/main/java/BlackBox.java rename to TP3/src/main/java/BlackBox.java -- GitLab