diff --git a/test/test.py b/test/test.py
index f15165a33524297f736957960f1978fa65965432..5b01c5689731f99e525f01bc275e7065865ce80a 100755
--- a/test/test.py
+++ b/test/test.py
@@ -9,6 +9,7 @@
 # - the shell is up and waiting for an input
 # - the shell has processed a command
 # - the shell as received and treated / ignored a signal (could be done by launching a command and waiting for it to be processed)
+# -> check shell state is sleep ?
 
 import filecmp
 import logging
@@ -113,7 +114,7 @@ class Shell:
 
 
     # TODO: move out of Shell ?
-    def check_ophans(self, cmd: Cmd):
+    def check_orphan(self, cmd: Cmd):
         """ Check if an orphan process (child of 1) was executed with cmd
         cmd: if None the tested command will be the last executed command
         """
@@ -125,8 +126,9 @@ class Shell:
         str_cmd = str(cmd)
         init_ps = psutil.Process(1)
         for p in init_ps.children():
-            if p.cmdline() == str_cmd:
-                raise AssertionError('The command "{}" seem to be a child of process 1'.format(str_cmd))
+            init_cmd = Cmd(p.cmdline())
+            if str(init_cmd) == str_cmd:
+                raise AssertionError('The command "{}" seem to be a child of process 1 -> orphelin process'.format(str_cmd))
 
 
     def wait_children(self, test_zombies: bool = True, timeout: int = 3):
@@ -434,6 +436,8 @@ class Test:
 
         # TODO: test return error message or error value ?
 
+        # TODO: Test double background jobs? (par souci de simplicité, on interdira d’avoir plus d’un job en tâche de fond à la fois)
+
 
     @test
     def test_SIGTERM_SIGQUIT(self):
@@ -442,10 +446,30 @@ class Test:
         shell.send_signal(signal.SIGTERM)
         shell.send_signal(signal.SIGQUIT)
         time.sleep(0.1) # To be sure that signals are treated
-        assert shell.is_alive(), "SIGTERM and SIGQUIT sent, the shell should ignore those signals but it died"
+        assert shell.is_alive(), 'SIGTERM and SIGQUIT sent, the shell should ignore those signals but it died'
         shell.exit()
 
 
+    @test
+    def test_SIGHUP(self):
+        # Launch two commands and send sighup
+        shell = Shell(self.shell_exec)
+        time.sleep(0.1) # To be sure that handlers are configured
+        shell.exec_command(Cmd(['sleep', '2', '&']), wait_cmd=False)
+        shell.exec_command(Cmd(['sleep', '3']), wait_cmd=False)
+        time.sleep(0.1) # To be sure that commands are executed
+        shell.send_signal(signal.SIGHUP)
+        time.sleep(0.1) # To be sure that signal was treated
+
+        #Check that shell is dead
+        if shell.is_alive():
+            shell.exit()
+            raise AssertionError('SIGHUP sent but shell was still alive')
+
+        # Check that the two processes are dead as well
+        shell.check_orphan(Cmd(['sleep', '2']))
+        shell.check_orphan(Cmd(['sleep', '3']))
+
 
 if __name__ == "__main__":
 
@@ -464,7 +488,8 @@ if __name__ == "__main__":
     print('--- TESTING background jobs and signals ---')
     t.test_background_jobs()
     t.test_SIGTERM_SIGQUIT()
-
+    #TODO: test SIGINT
+    t.test_SIGHUP()
     sys.exit(test_failed)