Files
fruix/tests/console-defaults.scm

71 lines
2.9 KiB
Scheme

(use-modules (ice-9 match)
(srfi srfi-64)
(srfi srfi-1)
(srfi srfi-13)
(fruix packages freebsd)
(fruix system freebsd)
(fruix system freebsd model)
(fruix system freebsd render))
(define os (operating-system))
(define generated-files
(operating-system-generated-files os
#:guile-store "/tmp/test-guile"
#:guile-extra-store "/tmp/test-guile-extra"
#:shepherd-store "/tmp/test-shepherd"
#:guile-newt-store "/tmp/test-guile-newt"))
(define loader-conf (assoc-ref generated-files "boot/loader.conf"))
(define ttys (assoc-ref generated-files "etc/ttys"))
(define (install-targets package)
(map (lambda (entry)
(match entry
((_ _ target) target)))
(freebsd-package-install-plan package)))
(define userland-targets (install-targets freebsd-userland))
(define runtime-targets (install-targets freebsd-runtime))
(define rc-script-targets (install-targets freebsd-rc-scripts))
(test-begin "console-defaults")
(test-equal "default loader entries"
'(("boot_serial" . "YES")
("boot_multicons" . "YES")
("console" . "comconsole,vidconsole")
("autoboot_delay" . "1"))
(effective-loader-entries os))
(test-assert "loader.conf enables serial boot"
(string-contains loader-conf "boot_serial=\"YES\""))
(test-assert "loader.conf enables multicons"
(string-contains loader-conf "boot_multicons=\"YES\""))
(test-assert "loader.conf enables vid+serial console"
(string-contains loader-conf "console=\"comconsole,vidconsole\""))
(test-assert "ttys enables ttyv0"
(string-contains ttys "ttyv0\t\"/usr/libexec/getty Pc\"\txterm\tonifexists secure"))
(test-assert "ttys enables ttyv7"
(string-contains ttys "ttyv7\t\"/usr/libexec/getty Pc\"\txterm\tonifexists secure"))
(test-assert "ttys enables ttyu0"
(string-contains ttys "ttyu0\t\"/usr/libexec/getty 3wire\"\tvt100\tonifconsole secure"))
(test-assert "ttys enables xc0"
(string-contains ttys "xc0\t\"/usr/libexec/getty Pc\"\txterm\tonifconsole secure"))
(test-assert "console entry stays disabled"
(string-contains ttys "console\tnone\tunknown\toff secure"))
(test-assert "userland stages login tools"
(every (lambda (target) (member target userland-targets))
'("usr/bin/login" "usr/bin/passwd" "usr/bin/su"
"usr/bin/who" "usr/bin/last" "usr/libexec/getty")))
(test-assert "runtime stages gettytab"
(member "etc/gettytab" runtime-targets))
(test-assert "rc scripts stage readable defaults files explicitly"
(every (lambda (target) (member target rc-script-targets))
'("etc/defaults/bluetooth.device.conf"
"etc/defaults/periodic.conf"
"etc/defaults/rc.conf")))
(test-assert "rc scripts do not stage entire defaults directory"
(not (member "etc/defaults" rc-script-targets)))
(test-end "console-defaults")