notes: 2.3.0 -> 2.3.1 (#352950)
[NixPkgs.git] / nixos / tests / systemd-initrd-vconsole.nix
blobd4c2a57680c15c3acad9f54fad347d68f47a5afb
1 import ./make-test-python.nix ({ lib, pkgs, ... }: {
2   name = "systemd-initrd-vconsole";
4   nodes.machine = { pkgs, ... }: {
5     boot.kernelParams = lib.mkAfter [ "rd.systemd.unit=rescue.target" "loglevel=3" "udev.log_level=3" "systemd.log_level=warning" ];
7     boot.initrd.systemd = {
8       enable = true;
9       emergencyAccess = true;
10     };
12     console = {
13       earlySetup = true;
14       keyMap = "colemak";
15     };
16   };
18   testScript = ''
19     # Boot into rescue shell in initrd
20     machine.start()
21     machine.wait_for_console_text("Press Enter for maintenance")
22     machine.send_console("\n")
24     # Wait for shell to become ready
25     for _ in range(300):
26       machine.send_console("printf '%s to receive commands:\\n' Ready\n")
27       try:
28         machine.wait_for_console_text("Ready to receive commands:", timeout=1)
29         break
30       except Exception:
31         continue
32     else:
33       raise RuntimeError("Rescue shell never became ready")
35     # Check keymap
36     machine.send_console("(printf '%s to receive text:\\n' Ready && read text && echo \"$text\") </dev/tty1\n")
37     machine.wait_for_console_text("Ready to receive text:")
38     for key in "asdfjkl;\n":
39       machine.send_key(key)
40     machine.wait_for_console_text("arstneio")
41   '';