From 603e88aa6c77d6a78a5ce49ee4dbbda09d5d0be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Sun, 16 Nov 2025 22:08:36 -0500 Subject: [PATCH 01/22] feat: Add the two tests with mocks --- core/pom.xml | 6 ++++ .../graphhopper/storage/CHStorageTest.java | 34 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/core/pom.xml b/core/pom.xml index 64725606c10..04c9d170978 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -119,6 +119,12 @@ logback-classic test + + org.mockito + mockito-junit-jupiter + 5.14.2 + test + diff --git a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java index 6ce46ba5aec..5c6ebab4eb1 100644 --- a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java +++ b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java @@ -7,6 +7,7 @@ import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; class CHStorageTest { @@ -123,4 +124,37 @@ public void testLimitValuesWeightFromDouble() { assertEquals(-2, store.publicWeightFromDouble(Double.POSITIVE_INFINITY)); assertEquals(numShortcutsExceedingWeight + 1, store.getNumShortcutsExceedingWeight()); } + + + @Test + public void testCreationWithDirectory() { + Directory dirMock = mock(Directory.class); + + when(dirMock.create()).thenReturn(null); + when(dirMock.getDefaultType()).thenReturn(null); + + CHStorage testStorage = new CHStorage(dirMock, "ch1", -1, false); + + verify(dirMock).create("nodes_ch_ch1", null, -1); + verify(dirMock).getDefaultType("nodes_ch_ch1", true); + verify(dirMock).create("shortcuts_ch1", null, -1); + verify(dirMock).getDefaultType("shortcuts_ch1", true); + } + + @Test + public void testCHStorageCreationFromUnfrozenGraph() { + BaseGraph baseGraphMock = mock(BaseGraph.class); + CHConfig chConfigMock = mock(CHConfig.class); + + when(baseGraphMock.isFrozen()).thenReturn(false); + + when(chConfigMock.getName()).thenReturn("ch1"); + when(chConfigMock.isEdgeBased()).thenReturn(false); + + IllegalStateException ex = assertThrows(IllegalStateException.class, + () -> {CHStorage.fromGraph(baseGraphMock, chConfigMock);}); + + verify(baseGraphMock).isFrozen(); + assertEquals("graph must be frozen before we can create ch graphs", ex.getMessage()); + } } From d22a0814470eb33370a96c93e7808c79bfab08c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Sun, 16 Nov 2025 23:06:57 -0500 Subject: [PATCH 02/22] feat: Start of a documentation --- .../graphhopper/storage/CHStorageTest.java | 2 ++ rapport-tache3.md | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 rapport-tache3.md diff --git a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java index 5c6ebab4eb1..25604f24d6a 100644 --- a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java +++ b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java @@ -154,6 +154,8 @@ public void testCHStorageCreationFromUnfrozenGraph() { IllegalStateException ex = assertThrows(IllegalStateException.class, () -> {CHStorage.fromGraph(baseGraphMock, chConfigMock);}); + verify(chConfigMock).getName(); + verify(chConfigMock).isEdgeBased(); verify(baseGraphMock).isFrozen(); assertEquals("graph must be frozen before we can create ch graphs", ex.getMessage()); } diff --git a/rapport-tache3.md b/rapport-tache3.md new file mode 100644 index 00000000000..2ce30208d0a --- /dev/null +++ b/rapport-tache3.md @@ -0,0 +1,35 @@ +# Rapport de la tâche 3 : Intégration du score de mutation au workflow Github Actions, Ajout de tests avec classes mockées et Personnalisation humoristique du CI + +--- + +## Tests avec classe mockées + +Pour cette partie de la tâche, nous avons travaillé avec la classe [ChStorage.java](core/src/main/java/com/graphhopper/storage/CHStorage.java). +Nous avons choisi cette classe parce que nous l'avions déjà étudiée lors de la réalisation de la tâche 2. Il était donc plus facile de la tester efficacement. + +A l'intérieur de cette classe, nous avons testé les deux méthodes permettant de créer une instance. + +### [Test `testCreationWithDirectory`](https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L130) +Le premier test a été réalisé sur le constructeur `CHStorage(Directory dir, String name, int segmentSize, boolean edgeBased)`. Ce constructeur fait usage, comme on peut le +voir dans sa signature, d'une autre classe appelée `Directory`. +La première étape du test a donc été de définir un mock `dirMock` de la classe `Directory`. Ensuite, nous avons défini les retours des deux méthodes +`.getDefaultType()` et `.create()` du mock qui doivent normalement être appelée dans le constructeur. Enfin, nous avons utilisé l'instance mockée pour créer une instance du CHStorage. +L'objectif du test qui est aussi l'oracle ici a été de tester que ces deux méthodes avaient été appelées de manière appropriée avec les bon arguments +lors de la création de l'instance. Cela s'est fait avec la méthode `verify` de mockito. + + + +### [Test `testCHStorageCreationFromUnfrozenGraph`](https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L145) +Le second test a été réalisé sur la méthode `fromGraph(BaseGraph baseGraph, CHConfig chConfig)`. Cette méthode permet aussi de construire une instance de CHStorage, mais cette fois +en utilisant un graphe. Pour cette raison, elle fait usage de deux autres classes : `BaseGraph` et `CHConfig`. +Le but de notre test ici était de vérifier que la création de l'instance ne se poursuit que si le graphe n'est pas modifiable, ce qui a été appelé ici un état `frozen`. Donc pour cela, nous avons commencé par la +création d'un mock `baseGraphMock` de la classe `BaseGraph` et d'un mock `chConfigMock` de la classe `CHConfig`. Ensuite, nous avons défini les retours pour les méthodes +`.getName()` et `.isEdgeBased()` du mock de `CHConfig` et particulièrement le retour de la méthode `.isFrozen()` du mock de `BaseGraph` pour qu'il soit `false` afin de vérifier le comportement voulu. +Enfin, nous avons essayé de créer une instance avec les deux mocks comme paramètres. L'oracle a été de tester non seulement que chacune de ces méthdoes avait été appelée mais aussi qu'une exception était lancée avec un message +pour nous prévenir que la création n'est possible que pour les graphes `frozen`. + + + +## Introduction du rickroll dans le CI + +Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. From c0216717decc270cf67f6b49a7e0ce042c9451e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 04:38:39 -0500 Subject: [PATCH 03/22] feat: Rickroll part --- .github/workflows/rickroll.yml | 35 ++++++++++++++++++++++++++++++++++ rapport-tache3.md | 5 +++++ 2 files changed, 40 insertions(+) create mode 100644 .github/workflows/rickroll.yml diff --git a/.github/workflows/rickroll.yml b/.github/workflows/rickroll.yml new file mode 100644 index 00000000000..ccf9c4d31bb --- /dev/null +++ b/.github/workflows/rickroll.yml @@ -0,0 +1,35 @@ +name: Rick roll + +on: + push: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Récupération du code de la branche main + uses: actions/checkout@v4 + + - name: Initialisation de Java + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.java-version }} + distribution: 'temurin' + + - name: Compilation du code avec Maven + run: mvn clean compile + + - name: Passer les tests unitaires + run: mvn test + + on-failure: + needs: build + if: failure() + runs-on: ubuntu-latest + steps: + - name: rick roll part + uses: TejasvOnly/random-rickroll@v1.0 + with: + percentage: 100 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/rapport-tache3.md b/rapport-tache3.md index 2ce30208d0a..8b34f9277e9 100644 --- a/rapport-tache3.md +++ b/rapport-tache3.md @@ -2,6 +2,11 @@ --- +## Intégration du score de mutation au workflow Github Actions + + + + ## Tests avec classe mockées Pour cette partie de la tâche, nous avons travaillé avec la classe [ChStorage.java](core/src/main/java/com/graphhopper/storage/CHStorage.java). From d4b9a09e2c8ca9b5d87eaf314334059c1ddbe507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 04:40:52 -0500 Subject: [PATCH 04/22] feat: Correction of rickroll GA --- .github/workflows/rickroll.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/rickroll.yml b/.github/workflows/rickroll.yml index ccf9c4d31bb..c5b3f02da00 100644 --- a/.github/workflows/rickroll.yml +++ b/.github/workflows/rickroll.yml @@ -6,7 +6,9 @@ on: jobs: build: runs-on: ubuntu-latest - + strategy: + matrix: + java-version: [ 24, 25-ea ] steps: - name: Récupération du code de la branche main uses: actions/checkout@v4 From e25c5680d3bfe47edb3b4dc60f01bb03f79c3544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 04:47:30 -0500 Subject: [PATCH 05/22] feat: Merge the rickroll workflow in the build workflow --- .github/workflows/build.yml | 11 ++++++++++ .github/workflows/rickroll.yml | 37 ---------------------------------- 2 files changed, 11 insertions(+), 37 deletions(-) delete mode 100644 .github/workflows/rickroll.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9c7004e4db0..aebc924385b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,3 +37,14 @@ jobs: - name: Build ${{ matrix.java-version }} run: mvn -B clean test + on-failure: + needs: build + if: failure() + runs-on: ubuntu-latest + steps: + - name: rick roll part + uses: TejasvOnly/random-rickroll@v1.0 + with: + percentage: 100 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + diff --git a/.github/workflows/rickroll.yml b/.github/workflows/rickroll.yml deleted file mode 100644 index c5b3f02da00..00000000000 --- a/.github/workflows/rickroll.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Rick roll - -on: - push: - -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - java-version: [ 24, 25-ea ] - steps: - - name: Récupération du code de la branche main - uses: actions/checkout@v4 - - - name: Initialisation de Java - uses: actions/setup-java@v4 - with: - java-version: ${{ matrix.java-version }} - distribution: 'temurin' - - - name: Compilation du code avec Maven - run: mvn clean compile - - - name: Passer les tests unitaires - run: mvn test - - on-failure: - needs: build - if: failure() - runs-on: ubuntu-latest - steps: - - name: rick roll part - uses: TejasvOnly/random-rickroll@v1.0 - with: - percentage: 100 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From a001fa089a5405633c219a6bf25080edbd19e53d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 04:53:01 -0500 Subject: [PATCH 06/22] feat: Test rickroll with test that always fail --- .../src/test/java/com/graphhopper/storage/CHStorageTest.java | 5 +++++ rapport-tache3.md | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java index 25604f24d6a..4831d4fa9e6 100644 --- a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java +++ b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java @@ -159,4 +159,9 @@ public void testCHStorageCreationFromUnfrozenGraph() { verify(baseGraphMock).isFrozen(); assertEquals("graph must be frozen before we can create ch graphs", ex.getMessage()); } + + @Test + public void alwaysFailingTest() { + fail(); + } } diff --git a/rapport-tache3.md b/rapport-tache3.md index 8b34f9277e9..9eb5ba9f311 100644 --- a/rapport-tache3.md +++ b/rapport-tache3.md @@ -37,4 +37,6 @@ pour nous prévenir que la création n'est possible que pour les graphes `frozen ## Introduction du rickroll dans le CI -Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. +Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons modifié le fichier `build.yml` pour ajouter le déclenchement de la github action existante +[random-rickroll]() lorsque le build fail. +Pour le tester, nous avons écrit un test qui fail tout le temps que nous avons commenté. Vous pouvez le retrouver [ici]((https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L163)). From f20c983c6c7f7a8bec31be6349500c25e1425c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 05:08:18 -0500 Subject: [PATCH 07/22] feat: Remaking the rickroll action --- .github/workflows/build.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aebc924385b..9465168dcc9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,8 +43,5 @@ jobs: runs-on: ubuntu-latest steps: - name: rick roll part - uses: TejasvOnly/random-rickroll@v1.0 - with: - percentage: 100 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run : echo "![rickroll](https://user-images.githubusercontent.com/37572049/90699500-0cc3ec00-e2a1-11ea-8d13-989526e86b0e.gif)" From 5f63d69babcd9ea30a47cb31702bcda795cb228d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 05:15:36 -0500 Subject: [PATCH 08/22] feat: Final test --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9465168dcc9..4a386343566 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,5 +43,5 @@ jobs: runs-on: ubuntu-latest steps: - name: rick roll part - run : echo "![rickroll](https://user-images.githubusercontent.com/37572049/90699500-0cc3ec00-e2a1-11ea-8d13-989526e86b0e.gif)" + run : echo "Regardez GIF pour plus de détails -- https://user-images.githubusercontent.com/37572049/90699500-0cc3ec00-e2a1-11ea-8d13-989526e86b0e.gif --" From de1a4d4f197b1ed33a4c5b93ac8b77e18f095756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 05:21:36 -0500 Subject: [PATCH 09/22] feat: COmplete doc --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4a386343566..7710f07b351 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,5 +43,5 @@ jobs: runs-on: ubuntu-latest steps: - name: rick roll part - run : echo "Regardez GIF pour plus de détails -- https://user-images.githubusercontent.com/37572049/90699500-0cc3ec00-e2a1-11ea-8d13-989526e86b0e.gif --" + run : echo "Regardez ce lien pour plus de détails -- https://www.youtube.com/watch?v=dQw4w9WgXcQ --" From d04ff6d37c52bcb0ff7bb316ca96ec43265019cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 05:26:15 -0500 Subject: [PATCH 10/22] feat: Small corection to documentation and commenting the sure-fail test --- .../test/java/com/graphhopper/storage/CHStorageTest.java | 8 ++++---- rapport-tache3.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java index 4831d4fa9e6..1e9d280d276 100644 --- a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java +++ b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java @@ -160,8 +160,8 @@ public void testCHStorageCreationFromUnfrozenGraph() { assertEquals("graph must be frozen before we can create ch graphs", ex.getMessage()); } - @Test - public void alwaysFailingTest() { - fail(); - } +// @Test +// public void alwaysFailingTest() { +// fail(); +// } } diff --git a/rapport-tache3.md b/rapport-tache3.md index 9eb5ba9f311..36f45e9c4f0 100644 --- a/rapport-tache3.md +++ b/rapport-tache3.md @@ -9,7 +9,7 @@ ## Tests avec classe mockées -Pour cette partie de la tâche, nous avons travaillé avec la classe [ChStorage.java](core/src/main/java/com/graphhopper/storage/CHStorage.java). +Pour cette partie de la tâche, nous avons travaillé avec la classe [CHStorage.java](core/src/main/java/com/graphhopper/storage/CHStorage.java). Nous avons choisi cette classe parce que nous l'avions déjà étudiée lors de la réalisation de la tâche 2. Il était donc plus facile de la tester efficacement. A l'intérieur de cette classe, nous avons testé les deux méthodes permettant de créer une instance. @@ -37,6 +37,6 @@ pour nous prévenir que la création n'est possible que pour les graphes `frozen ## Introduction du rickroll dans le CI -Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons modifié le fichier `build.yml` pour ajouter le déclenchement de la github action existante -[random-rickroll]() lorsque le build fail. +Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons modifié le fichier [`build.yml`](.github/workflows/build.yml) pour ajouter le déclenchement de la github action existante +[random-rickroll](https://github.com/TejasvOnly/random-rickroll?tab=readme-ov-file) lorsque le build fail. Pour le tester, nous avons écrit un test qui fail tout le temps que nous avons commenté. Vous pouvez le retrouver [ici]((https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L163)). From a3fb9bd44d6cfed314dceb7aa1118126d84c65a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 05:42:56 -0500 Subject: [PATCH 11/22] feat: Make the rickroll action reusable --- .github/workflows/build.yml | 12 +++++------- .github/workflows/rickroll.yml | 11 +++++++++++ rapport-tache3.md | 4 ++-- 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/rickroll.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7710f07b351..ba70a936d12 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,13 +35,11 @@ jobs: restore-keys: | ${{ runner.os}}-node_modules- - name: Build ${{ matrix.java-version }} + id: test run: mvn -B clean test - on-failure: - needs: build - if: failure() - runs-on: ubuntu-latest - steps: - - name: rick roll part - run : echo "Regardez ce lien pour plus de détails -- https://www.youtube.com/watch?v=dQw4w9WgXcQ --" + - name: Rickroll on test fail + if: ${{ steps.test.outcome == 'failure' }} + uses: ./.github/workflows/rickroll.yml + diff --git a/.github/workflows/rickroll.yml b/.github/workflows/rickroll.yml new file mode 100644 index 00000000000..fa14f0a787b --- /dev/null +++ b/.github/workflows/rickroll.yml @@ -0,0 +1,11 @@ +name: Rickroll + +on: + workflow_call: + +jobs: + rickroll: + runs-on: ubuntu-latest + steps: + - name: rick roll part + run : echo "Regardez ce lien pour plus de détails -- https://www.youtube.com/watch?v=dQw4w9WgXcQ --" diff --git a/rapport-tache3.md b/rapport-tache3.md index 36f45e9c4f0..c7130f407c1 100644 --- a/rapport-tache3.md +++ b/rapport-tache3.md @@ -37,6 +37,6 @@ pour nous prévenir que la création n'est possible que pour les graphes `frozen ## Introduction du rickroll dans le CI -Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons modifié le fichier [`build.yml`](.github/workflows/build.yml) pour ajouter le déclenchement de la github action existante -[random-rickroll](https://github.com/TejasvOnly/random-rickroll?tab=readme-ov-file) lorsque le build fail. +Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons créé une action réutilisable dans le fichier [rickroll.yml](.github/workflows/rickroll.yml) puis ajouté le déclenchement +de cette github action dans [build.yml](.github/workflows/build.yml) lorsque l'étape de test échoue. Pour le tester, nous avons écrit un test qui fail tout le temps que nous avons commenté. Vous pouvez le retrouver [ici]((https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L163)). From 4336afef4cad3520cd20bc6a9e48b093035a893c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 05:49:19 -0500 Subject: [PATCH 12/22] feat: Testing for failure --- .../test/java/com/graphhopper/storage/CHStorageTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java index 1e9d280d276..4831d4fa9e6 100644 --- a/core/src/test/java/com/graphhopper/storage/CHStorageTest.java +++ b/core/src/test/java/com/graphhopper/storage/CHStorageTest.java @@ -160,8 +160,8 @@ public void testCHStorageCreationFromUnfrozenGraph() { assertEquals("graph must be frozen before we can create ch graphs", ex.getMessage()); } -// @Test -// public void alwaysFailingTest() { -// fail(); -// } + @Test + public void alwaysFailingTest() { + fail(); + } } From f06461d42e3e0906df0d980e2d0f49a2e96e36d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 06:02:20 -0500 Subject: [PATCH 13/22] feat: Correct error --- .github/workflows/build.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba70a936d12..5393ff2275a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,9 +37,22 @@ jobs: - name: Build ${{ matrix.java-version }} id: test run: mvn -B clean test + continue-on-error: true + - name: Set test result + id: set-result + run: | + if [[ "${{ steps.test.outcome }}" == "failure" ]]; then + echo "testFailed=true" >> $GITHUB_OUTPUT + else + echo "testFailed=false" >> $GITHUB_OUTPUT + fi + rickroll: + runs-on: ubuntu-latest + needs: build + if: ${{ needs.build.outputs.testFailed == 'true' }} + steps: - name: Rickroll on test fail - if: ${{ steps.test.outcome == 'failure' }} uses: ./.github/workflows/rickroll.yml From b8037d35adc49e37f1f0215ab75d32cc4826a9ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 06:13:46 -0500 Subject: [PATCH 14/22] fix: Correcting error with rickroll.yml being skipped --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5393ff2275a..6b752c121d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,8 @@ on: push jobs: build: runs-on: ubuntu-latest + outputs: + testFailed: ${{ steps.set-result.outputs.testFailed }} strategy: fail-fast: false matrix: From 67ae3a003978dc7c8554667396b95a60ccdd921f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 06:23:52 -0500 Subject: [PATCH 15/22] fix: Make it so that github sees rickroll.yml as a reusable action --- .github/workflows/build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6b752c121d9..3e471ba8541 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,6 +48,9 @@ jobs: else echo "testFailed=false" >> $GITHUB_OUTPUT fi + - name: Fail job if tests failed + if: ${{ steps.set-result.outputs.testFailed == 'true' }} + run: exit 1 rickroll: runs-on: ubuntu-latest @@ -55,6 +58,6 @@ jobs: if: ${{ needs.build.outputs.testFailed == 'true' }} steps: - name: Rickroll on test fail - uses: ./.github/workflows/rickroll.yml + uses: ./.github/workflows/rickroll.yml@${{ github.ref_name }} From f1fed7a8dbbc2b9b5bf8c55129261383057ef26e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 06:26:27 -0500 Subject: [PATCH 16/22] fix: Make it so that github sees rickroll.yml as a reusable action --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e471ba8541..bbea8b4468a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,6 +58,6 @@ jobs: if: ${{ needs.build.outputs.testFailed == 'true' }} steps: - name: Rickroll on test fail - uses: ./.github/workflows/rickroll.yml@${{ github.ref_name }} + uses: ./.github/workflows/rickroll.yml@josh-tache2 From 5ebe2170d78e3746cd46efdac4eb0f8a85e0f4e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 06:32:32 -0500 Subject: [PATCH 17/22] =?UTF-8?q?feat:=20Faire=20=C3=A9chouer=20le=20workf?= =?UTF-8?q?low=20correctement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbea8b4468a..36b39dd8a64 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,9 +48,6 @@ jobs: else echo "testFailed=false" >> $GITHUB_OUTPUT fi - - name: Fail job if tests failed - if: ${{ steps.set-result.outputs.testFailed == 'true' }} - run: exit 1 rickroll: runs-on: ubuntu-latest @@ -60,4 +57,12 @@ jobs: - name: Rickroll on test fail uses: ./.github/workflows/rickroll.yml@josh-tache2 + fail-workflow-correctly: + runs-on: ubuntu-latest + needs: build + if: ${{ needs.build.outputs.testFailed == 'true' }} + steps: + - name: Mark workflow as failed + run: exit 1 + From 8a622edafb5c15ef3a17a08abad1bb2fa5c1d181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 06:42:25 -0500 Subject: [PATCH 18/22] fix: Reusable workflow --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 36b39dd8a64..bb91eabb855 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,7 +55,7 @@ jobs: if: ${{ needs.build.outputs.testFailed == 'true' }} steps: - name: Rickroll on test fail - uses: ./.github/workflows/rickroll.yml@josh-tache2 + uses: ./.github/workflows/rickroll.yml fail-workflow-correctly: runs-on: ubuntu-latest From 9c54bf9aac4e7073a71bb26d878bcbe68761449c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 07:01:14 -0500 Subject: [PATCH 19/22] fix: Removing reusable workflow and replacing it by reusable action --- .github/actions/rickroll/action.yml | 10 ++++++++++ .github/workflows/build.yml | 2 +- .github/workflows/rickroll.yml | 11 ----------- 3 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 .github/actions/rickroll/action.yml delete mode 100644 .github/workflows/rickroll.yml diff --git a/.github/actions/rickroll/action.yml b/.github/actions/rickroll/action.yml new file mode 100644 index 00000000000..f08ec78a4f0 --- /dev/null +++ b/.github/actions/rickroll/action.yml @@ -0,0 +1,10 @@ +name: "Rickroll" +description: "Affiche un message quand les tests échouent" +runs: + using: "composite" + steps: + - name: Rickroll + shell: bash + run: | + echo "Tests FAILED!" + echo "Regardez ceci pour comprendre les détails : https://www.youtube.com/watch?v=dQw4w9WgXcQ" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bb91eabb855..d0543665381 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,7 +55,7 @@ jobs: if: ${{ needs.build.outputs.testFailed == 'true' }} steps: - name: Rickroll on test fail - uses: ./.github/workflows/rickroll.yml + uses: ./.github/actions/rickroll fail-workflow-correctly: runs-on: ubuntu-latest diff --git a/.github/workflows/rickroll.yml b/.github/workflows/rickroll.yml deleted file mode 100644 index fa14f0a787b..00000000000 --- a/.github/workflows/rickroll.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Rickroll - -on: - workflow_call: - -jobs: - rickroll: - runs-on: ubuntu-latest - steps: - - name: rick roll part - run : echo "Regardez ce lien pour plus de détails -- https://www.youtube.com/watch?v=dQw4w9WgXcQ --" From 4690f70b6d88a17b354a1296c1816b9da4873e77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 07:13:22 -0500 Subject: [PATCH 20/22] fix: Fixing action --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d0543665381..b6f7a0c146b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,6 +54,7 @@ jobs: needs: build if: ${{ needs.build.outputs.testFailed == 'true' }} steps: + - uses: actions/checkout@v4 - name: Rickroll on test fail uses: ./.github/actions/rickroll From e1a9d936cafd45114f97cd43481fc998b58f4e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 07:31:06 -0500 Subject: [PATCH 21/22] feat: Last modifications to rickroll --- .github/workflows/build.yml | 2 +- rapport-tache3.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b6f7a0c146b..0991f13319d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,6 +64,6 @@ jobs: if: ${{ needs.build.outputs.testFailed == 'true' }} steps: - name: Mark workflow as failed - run: exit 1 + run: echo "The tests failed" && exit 1 diff --git a/rapport-tache3.md b/rapport-tache3.md index c7130f407c1..39043bd5d5f 100644 --- a/rapport-tache3.md +++ b/rapport-tache3.md @@ -37,6 +37,6 @@ pour nous prévenir que la création n'est possible que pour les graphes `frozen ## Introduction du rickroll dans le CI -Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons créé une action réutilisable dans le fichier [rickroll.yml](.github/workflows/rickroll.yml) puis ajouté le déclenchement +Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons créé une action réutilisable dans le fichier [rickroll.yml](.github/actions/rickroll/action.yml) puis ajouté le déclenchement de cette github action dans [build.yml](.github/workflows/build.yml) lorsque l'étape de test échoue. Pour le tester, nous avons écrit un test qui fail tout le temps que nous avons commenté. Vous pouvez le retrouver [ici]((https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L163)). From 4b145010a3ebf183d6421cb54b5a16f2c56fb27d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Saint-Martin=20Junior=20MONGAN?= Date: Thu, 20 Nov 2025 07:36:43 -0500 Subject: [PATCH 22/22] feat: Small correction in doc --- rapport-tache3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rapport-tache3.md b/rapport-tache3.md index 39043bd5d5f..11ecc067f61 100644 --- a/rapport-tache3.md +++ b/rapport-tache3.md @@ -39,4 +39,4 @@ pour nous prévenir que la création n'est possible que pour les graphes `frozen Cette partie nécessitait d'intoduire un élément d'humour, notamment en lien avec le `rickroll` dans le pipeline de CI. Pour ce faire, nous avons créé une action réutilisable dans le fichier [rickroll.yml](.github/actions/rickroll/action.yml) puis ajouté le déclenchement de cette github action dans [build.yml](.github/workflows/build.yml) lorsque l'étape de test échoue. -Pour le tester, nous avons écrit un test qui fail tout le temps que nous avons commenté. Vous pouvez le retrouver [ici]((https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L163)). +Pour le tester, nous avons écrit un test qui fail tout le temps que nous avons commenté. Vous pouvez le retrouver [ici](https://github.com/nelsonkam/graphhopper/blob/master/core/src/test/java/com/graphhopper/storage/CHStorageTest.java#L163).