1{ system ? builtins.currentSystem
2, config ? {}
3, pkgs ? import ../.. { inherit system config; }
4, systemdStage1 ? false
5}:
6
7import ./make-test-python.nix {
8 name = "fsck";
9
10 nodes.machine = { lib, ... }: {
11 virtualisation.emptyDiskImages = [ 1 ];
12
13 virtualisation.fileSystems = {
14 "/mnt" = {
15 device = "/dev/vdb";
16 fsType = "ext4";
17 autoFormat = true;
18 };
19 };
20
21 boot.initrd.systemd.enable = systemdStage1;
22 };
23
24 testScript = ''
25 machine.wait_for_unit("default.target")
26
27 with subtest("root fs is fsckd"):
28 machine.succeed("journalctl -b | grep '${if systemdStage1
29 then "fsck.*vda.*clean"
30 else "fsck.ext4.*/dev/vda"}'")
31
32 with subtest("mnt fs is fsckd"):
33 machine.succeed("journalctl -b | grep 'fsck.*/dev/vdb.*clean'")
34 machine.succeed(
35 "grep 'Requires=systemd-fsck@dev-vdb.service' /run/systemd/generator/mnt.mount"
36 )
37 machine.succeed(
38 "grep 'After=systemd-fsck@dev-vdb.service' /run/systemd/generator/mnt.mount"
39 )
40 '';
41}