mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
marionette: 'wait-for-file' can be passed a read procedure.
* gnu/build/marionette.scm (wait-for-file): Add #:read parameter and honor it. * gnu/tests/base.scm (run-basic-test)["login on tty1"]: Use 'wait-for-file' instead of inline code.
This commit is contained in:
parent
505760ed08
commit
13877c3453
2 changed files with 6 additions and 16 deletions
|
@ -165,13 +165,14 @@ (define (marionette-eval exp marionette)
|
|||
(newline repl)
|
||||
(read repl))))
|
||||
|
||||
(define* (wait-for-file file marionette #:key (timeout 10))
|
||||
"Wait until FILE exists in MARIONETTE; 'read' its content and return it. If
|
||||
(define* (wait-for-file file marionette
|
||||
#:key (timeout 10) (read 'read))
|
||||
"Wait until FILE exists in MARIONETTE; READ its content and return it. If
|
||||
FILE has not shown up after TIMEOUT seconds, raise an error."
|
||||
(match (marionette-eval
|
||||
`(let loop ((i ,timeout))
|
||||
(cond ((file-exists? ,file)
|
||||
(cons 'success (call-with-input-file ,file read)))
|
||||
(cons 'success (call-with-input-file ,file ,read)))
|
||||
((> i 0)
|
||||
(sleep 1)
|
||||
(loop (- i 1)))
|
||||
|
|
|
@ -250,19 +250,8 @@ (define (user-owned? file)
|
|||
|
||||
;; It can take a while before the shell commands are executed.
|
||||
(marionette-eval '(use-modules (rnrs io ports)) marionette)
|
||||
(marionette-eval
|
||||
'(let loop ((i 0))
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(call-with-input-file "/root/logged-in"
|
||||
get-string-all))
|
||||
(lambda args
|
||||
(if (and (< i 15) (= ENOENT (system-error-errno args)))
|
||||
(begin
|
||||
(sleep 1)
|
||||
(loop (+ i 1)))
|
||||
(apply throw args)))))
|
||||
marionette)))
|
||||
(wait-for-file "/root/logged-in" marionette
|
||||
#:read 'get-string-all)))
|
||||
|
||||
;; There should be one utmpx entry for the user logged in on tty1.
|
||||
(test-equal "utmpx entry"
|
||||
|
|
Loading…
Reference in a new issue