summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-19 23:10:25 +0100
committerLudovic Courtès <ludo@gnu.org>2020-03-19 23:17:32 +0100
commitbe0a672c30ad1401019abb5cb83d59be171813d0 (patch)
tree5d80f1228b7c705625396400ff29da6ae7c098be
parentf08b6726611ec9391814fe540821a3964baeb0ba (diff)
downloadguix-be0a672c30ad1401019abb5cb83d59be171813d0.tar.gz
tests: Accept manual installation scripts that exit with SIGTERM.
Fixes <https://bugs.gnu.org/39926>.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.

Previously we'd error out if the installation script exits with
non-zero, which was the case because the 'reboot' program would
typically not get a reply, and thus would eventually be killed by PID 1
as the system is brought down.

* gnu/tests/install.scm (run-install)[install]: Expect SCRIPT to exit
with SIGTERM in addition to exiting with zero.
-rw-r--r--gnu/tests/install.scm8
1 files changed, 6 insertions, 2 deletions
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 9ecc45cc04..4f650ffb34 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -270,8 +270,12 @@ packages defined in installation-os."
                                   (lambda (port)
                                     (write '#$target-os-source port)))
                                marionette)
-              (exit (marionette-eval '(zero? (system #$script))
-                                     marionette)))
+
+              ;; Run SCRIPT.  It typically invokes 'reboot' as a last step and
+              ;; thus normally gets killed with SIGTERM by PID 1.
+              (let ((status (marionette-eval '(system #$script) marionette)))
+                (exit (or (equal? (status:term-sig status) SIGTERM)
+                          (equal? (status:exit-val status) 0)))))
 
             (when #$(->bool gui-test)
               (wait-for-unix-socket "/var/guix/installer-socket"