diff options
| -rw-r--r-- | gnu/services.scm | 7 | ||||
| -rw-r--r-- | gnu/tests/base.scm | 22 |
2 files changed, 26 insertions, 3 deletions
diff --git a/gnu/services.scm b/gnu/services.scm index 4020fd37e04..f72d4d57850 100644 --- a/gnu/services.scm +++ b/gnu/services.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> | 3 | ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> |
| 4 | ;;; | 4 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| @@ -340,6 +340,11 @@ ACTIVATION-SCRIPT-TYPE." | |||
| 340 | (activate-/bin/sh | 340 | (activate-/bin/sh |
| 341 | (string-append #$(canonical-package bash) "/bin/sh")) | 341 | (string-append #$(canonical-package bash) "/bin/sh")) |
| 342 | 342 | ||
| 343 | ;; Make sure the user accounting database exists. If it | ||
| 344 | ;; does not exist, 'setutxent' does not create it and | ||
| 345 | ;; thus there is no accounting at all. | ||
| 346 | (close-port (open-file "/var/run/utmpx" "a0")) | ||
| 347 | |||
| 343 | ;; Set up /run/current-system. Among other things this | 348 | ;; Set up /run/current-system. Among other things this |
| 344 | ;; sets up locales, which the activation snippets | 349 | ;; sets up locales, which the activation snippets |
| 345 | ;; executed below may expect. | 350 | ;; executed below may expect. |
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index 6370d6951bf..2687a6cdb80 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; | 3 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 4 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 5 | ;;; |
| @@ -78,9 +78,11 @@ passed a gexp denoting the marionette, and it must return gexp that is | |||
| 78 | inserted before the first test. This is used to introduce an extra | 78 | inserted before the first test. This is used to introduce an extra |
| 79 | initialization step, such as entering a LUKS passphrase." | 79 | initialization step, such as entering a LUKS passphrase." |
| 80 | (define test | 80 | (define test |
| 81 | (with-imported-modules '((gnu build marionette)) | 81 | (with-imported-modules '((gnu build marionette) |
| 82 | (guix build syscalls)) | ||
| 82 | #~(begin | 83 | #~(begin |
| 83 | (use-modules (gnu build marionette) | 84 | (use-modules (gnu build marionette) |
| 85 | (guix build syscalls) | ||
| 84 | (srfi srfi-1) | 86 | (srfi srfi-1) |
| 85 | (srfi srfi-26) | 87 | (srfi srfi-26) |
| 86 | (srfi srfi-64) | 88 | (srfi srfi-64) |
| @@ -176,6 +178,22 @@ info --version") | |||
| 176 | (apply throw args))))) | 178 | (apply throw args))))) |
| 177 | marionette))) | 179 | marionette))) |
| 178 | 180 | ||
| 181 | ;; There should be one utmpx entry for the user logged in on tty1. | ||
| 182 | (test-equal "utmpx entry" | ||
| 183 | '(("root" "tty1" #f)) | ||
| 184 | (marionette-eval | ||
| 185 | '(begin | ||
| 186 | (use-modules (guix build syscalls) | ||
| 187 | (srfi srfi-1)) | ||
| 188 | |||
| 189 | (filter-map (lambda (entry) | ||
| 190 | (and (equal? (login-type USER_PROCESS) | ||
| 191 | (utmpx-login-type entry)) | ||
| 192 | (list (utmpx-user entry) (utmpx-line entry) | ||
| 193 | (utmpx-host entry)))) | ||
| 194 | (utmpx-entries))) | ||
| 195 | marionette)) | ||
| 196 | |||
| 179 | (test-assert "host name resolution" | 197 | (test-assert "host name resolution" |
| 180 | (match (marionette-eval | 198 | (match (marionette-eval |
| 181 | '(begin | 199 | '(begin |
