From 623f737ccceb245dc827985b206a4ce980680d07 Mon Sep 17 00:00:00 2001
From: Louay DARDOURI <louay.dardouri@etu.u-pec.fr>
Date: Sun, 9 Feb 2025 17:16:48 +0100
Subject: [PATCH] =?UTF-8?q?Ajout=20de=20l'h=C3=A9ritage=20des=20entr=C3=A9?=
 =?UTF-8?q?es/sorties=20dans=20CommandExecutor=20+=20Ajout=20du=20test=201?=
 =?UTF-8?q?1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../monlouyan/bakefile/CommandExecutor.java   | 24 +------------------
 tests/C/test-11-error-in-code/README.md       |  1 +
 tests/C/test-11-error-in-code/bake/Bakefile   |  7 ++++++
 tests/C/test-11-error-in-code/bake/main.c     | 15 ++++++++++++
 tests/C/test-11-error-in-code/make/Makefile   |  7 ++++++
 tests/C/test-11-error-in-code/make/main.c     | 15 ++++++++++++
 6 files changed, 46 insertions(+), 23 deletions(-)
 create mode 100644 tests/C/test-11-error-in-code/README.md
 create mode 100644 tests/C/test-11-error-in-code/bake/Bakefile
 create mode 100644 tests/C/test-11-error-in-code/bake/main.c
 create mode 100644 tests/C/test-11-error-in-code/make/Makefile
 create mode 100644 tests/C/test-11-error-in-code/make/main.c

diff --git a/src/fr/monlouyan/bakefile/CommandExecutor.java b/src/fr/monlouyan/bakefile/CommandExecutor.java
index 852693e..065ea24 100644
--- a/src/fr/monlouyan/bakefile/CommandExecutor.java
+++ b/src/fr/monlouyan/bakefile/CommandExecutor.java
@@ -37,31 +37,9 @@ public class CommandExecutor {
                     }
                     if (debug) System.out.println("Debug: Executing " + command);
                     ProcessBuilder pb = new ProcessBuilder("sh", "-c", command);
+					pb.inheritIO();
                     Process process = pb.start();
 
-                    // Lire et afficher la sortie standard (stdout)
-                    new Thread(() -> {
-                        try (var reader = new java.io.BufferedReader(new java.io.InputStreamReader(process.getInputStream()))) {
-                            String line;
-                            while ((line = reader.readLine()) != null) {
-                                System.out.println(line);
-                            }
-                        } catch (IOException e) {
-                            e.printStackTrace();
-                        }
-                    }).start();
-
-                    // Lire et afficher la sortie d'erreur (stderr)
-                    new Thread(() -> {
-                        try (var reader = new java.io.BufferedReader(new java.io.InputStreamReader(process.getErrorStream()))) {
-                            String line;
-                            while ((line = reader.readLine()) != null) {
-                                System.err.println(line);
-                            }
-                        } catch (IOException e) {
-                            e.printStackTrace();
-                        }
-                    }).start();
 
                     // Attendre la fin du processus
                     int exitCode = process.waitFor();
diff --git a/tests/C/test-11-error-in-code/README.md b/tests/C/test-11-error-in-code/README.md
new file mode 100644
index 0000000..306987e
--- /dev/null
+++ b/tests/C/test-11-error-in-code/README.md
@@ -0,0 +1 @@
+Quand il y a une erreur dans le code, ça affiche l'erreur + stop le programme exactement comme make.
\ No newline at end of file
diff --git a/tests/C/test-11-error-in-code/bake/Bakefile b/tests/C/test-11-error-in-code/bake/Bakefile
new file mode 100644
index 0000000..9dab9f6
--- /dev/null
+++ b/tests/C/test-11-error-in-code/bake/Bakefile
@@ -0,0 +1,7 @@
+all: main
+
+main: main.c
+	gcc -o main main.c
+
+clean:
+	rm -f main
diff --git a/tests/C/test-11-error-in-code/bake/main.c b/tests/C/test-11-error-in-code/bake/main.c
new file mode 100644
index 0000000..a2c1c2f
--- /dev/null
+++ b/tests/C/test-11-error-in-code/bake/main.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+int main(void){
+	printf("Normalement, ce code ne fonctionne par car j'ai été stupide...\n");
+	
+	// La fonction qui suit n'existe pas donc le programme ne peut pas compiler et renvoie une erreur.
+	fonctionQuiNexistePas();
+
+	// La division par zéro est impossible, le programme renvoie un warning.
+	int a = 15;
+	a = a/0;
+
+	return 0;
+}
\ No newline at end of file
diff --git a/tests/C/test-11-error-in-code/make/Makefile b/tests/C/test-11-error-in-code/make/Makefile
new file mode 100644
index 0000000..9dab9f6
--- /dev/null
+++ b/tests/C/test-11-error-in-code/make/Makefile
@@ -0,0 +1,7 @@
+all: main
+
+main: main.c
+	gcc -o main main.c
+
+clean:
+	rm -f main
diff --git a/tests/C/test-11-error-in-code/make/main.c b/tests/C/test-11-error-in-code/make/main.c
new file mode 100644
index 0000000..a2c1c2f
--- /dev/null
+++ b/tests/C/test-11-error-in-code/make/main.c
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+int main(void){
+	printf("Normalement, ce code ne fonctionne par car j'ai été stupide...\n");
+	
+	// La fonction qui suit n'existe pas donc le programme ne peut pas compiler et renvoie une erreur.
+	fonctionQuiNexistePas();
+
+	// La division par zéro est impossible, le programme renvoie un warning.
+	int a = 15;
+	a = a/0;
+
+	return 0;
+}
\ No newline at end of file