[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#31788] [PATCH] tests: Honor the return value of 'start-service'.
From: |
Clément Lassieur |
Subject: |
[bug#31788] [PATCH] tests: Honor the return value of 'start-service'. |
Date: |
Tue, 12 Jun 2018 22:03:24 +0200 |
User-agent: |
mu4e 1.0; emacs 26.1 |
Hi Ludovic,
Ludovic Courtès <address@hidden> writes:
> Hi Clément,
>
> Clément Lassieur <address@hidden> skribis:
>
>> Since commit dc7b3e56337ee9d8dcd8fe7d5cab71ef536d024f, 'start-service'
>> returns
>> the Shepherd's representation of the service as a sexp, and '#f' if the
>> service fails to start. Also, it doesn't throw an exception when the service
>> fails to start, so relying on an exception instead of relying on its return
>> value is a false positive.
>
> Looking at ‘invoke-action’ (used by ‘start-service’) in (gnu services
> herd), it seems that an exception is raised upon error:
>
> (('reply ('version 0 x ...) ('result y) ('error error)
> ('messages messages))
> (for-each display-message messages)
> (raise-shepherd-error error)
> #f)
But that's for Shepherd errors. When a service fails to start, it's not
a Shepherd error, so if my understanding is correct '(cont result)'
should be called. With result being '#f'.
(match (read sock)
(('reply ('version 0 _ ...) ('result result) ('error #f)
('messages messages))
(for-each display-message messages)
(cont result))
(('reply ('version 0 x ...) ('result y) ('error error)
('messages messages))
(for-each display-message messages)
(raise-shepherd-error error)
#f)
(x
;; invalid reply
#f))