From 61d8aca27331c8ab7272d3185171196e56d0a712 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Thu, 18 Jan 2024 00:53:11 +0100
Subject: [PATCH] ExerciseDockerCompose => Add rejectIfCodeIsNotZero argument

---
 helpers/Dojo/ExerciseDockerCompose.ts | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/helpers/Dojo/ExerciseDockerCompose.ts b/helpers/Dojo/ExerciseDockerCompose.ts
index 00bad2f..ad03343 100644
--- a/helpers/Dojo/ExerciseDockerCompose.ts
+++ b/helpers/Dojo/ExerciseDockerCompose.ts
@@ -48,7 +48,7 @@ class ExerciseDockerCompose {
         this.events.emit('finished', success, code);
     }
 
-    private registerChildProcess(childProcess: ChildProcessWithoutNullStreams, resolve: (value: (number | PromiseLike<number>)) => void, reject: (reason?: unknown) => void, displayable: boolean) {
+    private registerChildProcess(childProcess: ChildProcessWithoutNullStreams, resolve: (value: (number | PromiseLike<number>)) => void, reject: (reason?: unknown) => void, displayable: boolean, rejectIfCodeIsNotZero: boolean) {
         childProcess.stdout.on('data', (data) => {
             this.log(data.toString(), false, displayable);
         });
@@ -58,7 +58,7 @@ class ExerciseDockerCompose {
         });
 
         childProcess.on('exit', (code) => {
-            code !== null ? resolve(code) : reject();
+            code === null || (rejectIfCodeIsNotZero && code !== 0) ? reject(code) : resolve(code);
         });
     }
 
@@ -86,7 +86,7 @@ class ExerciseDockerCompose {
                             }
                         });
 
-                        this.registerChildProcess(dockerCompose, resolve, reject, true);
+                        this.registerChildProcess(dockerCompose, resolve, reject, true, false);
                     });
                 } catch ( error ) {
                     this.endStep(`Error while running the docker compose file`, true);
@@ -110,7 +110,7 @@ class ExerciseDockerCompose {
                             shell: true
                         });
 
-                        this.registerChildProcess(dockerCompose, resolve, reject, false);
+                        this.registerChildProcess(dockerCompose, resolve, reject, false, true);
                     });
                 } catch ( error ) {
                     this.endStep(`Error while getting the linked services logs`, true);
@@ -135,10 +135,10 @@ class ExerciseDockerCompose {
                                 shell: true
                             });
 
-                            this.registerChildProcess(dockerCompose, resolve, reject, false);
+                            this.registerChildProcess(dockerCompose, resolve, reject, false, true);
                         });
                     } catch ( error ) {
-                        this.endStep(`Error stop and remove containers`, true);
+                        this.endStep(`Error while stopping and removing containers`, true);
                         this.finished(false, ExerciseCheckerError.DOCKER_COMPOSE_DOWN_ERROR);
                         return;
                     }
@@ -161,7 +161,7 @@ class ExerciseDockerCompose {
                                 shell: true
                             });
 
-                            this.registerChildProcess(dockerCompose, resolve, reject, false);
+                            this.registerChildProcess(dockerCompose, resolve, reject, false, true);
                         });
                     } catch ( error ) {
                         this.endStep(`Error while removing dangling images`, true);
-- 
GitLab