1import ./make-test-python.nix ({ pkgs, ... }: {
2 name = "overlayfs";
3 meta.maintainers = with pkgs.lib.maintainers; [ bachp ];
4
5 machine = { pkgs, ... }: {
6 virtualisation.emptyDiskImages = [ 512 ];
7 networking.hostId = "deadbeef";
8 environment.systemPackages = with pkgs; [ parted ];
9 };
10
11 testScript = ''
12 machine.succeed("ls /dev")
13
14 machine.succeed("mkdir -p /tmp/mnt")
15
16 # Test ext4 + overlayfs
17 machine.succeed(
18 """
19 mkfs.ext4 -F -L overlay-ext4 /dev/vdb
20 mount -t ext4 /dev/vdb /tmp/mnt
21 mkdir -p /tmp/mnt/upper /tmp/mnt/lower /tmp/mnt/work /tmp/mnt/merged
22 # Setup some existing files
23 echo 'Replace' > /tmp/mnt/lower/replace.txt
24 echo 'Append' > /tmp/mnt/lower/append.txt
25 echo 'Overwrite' > /tmp/mnt/lower/overwrite.txt
26 mount -t overlay overlay -o lowerdir=/tmp/mnt/lower,upperdir=/tmp/mnt/upper,workdir=/tmp/mnt/work /tmp/mnt/merged
27 # Test new
28 echo 'New' > /tmp/mnt/merged/new.txt
29 [[ "\$(cat /tmp/mnt/merged/new.txt)" == "New" ]]
30 # Test replace
31 [[ "\$(cat /tmp/mnt/merged/replace.txt)" == "Replace" ]]
32 echo 'Replaced' > /tmp/mnt/merged/replace-tmp.txt
33 mv /tmp/mnt/merged/replace-tmp.txt /tmp/mnt/merged/replace.txt
34 [[ "\$(cat /tmp/mnt/merged/replace.txt)" == "Replaced" ]]
35 # Overwrite
36 [[ "\$(cat /tmp/mnt/merged/overwrite.txt)" == "Overwrite" ]]
37 echo 'Overwritten' > /tmp/mnt/merged/overwrite.txt
38 [[ "\$(cat /tmp/mnt/merged/overwrite.txt)" == "Overwritten" ]]
39 # Test append
40 [[ "\$(cat /tmp/mnt/merged/append.txt)" == "Append" ]]
41 echo 'ed' >> /tmp/mnt/merged/append.txt
42 #"cat /tmp/mnt/merged/append.txt && exit 1
43 [[ "\$(cat /tmp/mnt/merged/append.txt)" == "Append\ned" ]]
44 umount /tmp/mnt/merged
45 umount /tmp/mnt
46 udevadm settle
47 """
48 )
49 '';
50})