at 25.11-pre 3.2 kB view raw
1{ lib, ... }: 2{ 3 name = "apfs"; 4 meta.maintainers = with lib.maintainers; [ Luflosi ]; 5 6 nodes.machine = { 7 virtualisation.emptyDiskImages = [ 1024 ]; 8 9 boot.supportedFilesystems = [ "apfs" ]; 10 }; 11 12 testScript = '' 13 machine.wait_for_unit("basic.target") 14 machine.succeed("mkdir /tmp/mnt") 15 16 with subtest("mkapfs refuses to work with a label that is too long"): 17 machine.fail( "mkapfs -L '000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F' /dev/vdb") 18 19 with subtest("mkapfs works with the maximum label length"): 20 machine.succeed("mkapfs -L '000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7' /dev/vdb") 21 22 with subtest("apfs-label works"): 23 machine.succeed("mkapfs -L 'myLabel' /dev/vdb") 24 machine.succeed("apfs-label /dev/vdb | grep -q myLabel") 25 26 with subtest("Enable case sensitivity and normalization sensitivity"): 27 machine.succeed( 28 "mkapfs -s -z /dev/vdb", 29 "mount -o cknodes,readwrite /dev/vdb /tmp/mnt", 30 "echo 'Hello World 1' > /tmp/mnt/test.txt", 31 "[ ! -f /tmp/mnt/TeSt.TxT ] || false", # Test case sensitivity 32 "echo 'Hello World 1' | diff - /tmp/mnt/test.txt", 33 "echo 'Hello World 2' > /tmp/mnt/\u0061\u0301.txt", 34 "echo 'Hello World 2' | diff - /tmp/mnt/\u0061\u0301.txt", 35 "[ ! -f /tmp/mnt/\u00e1.txt ] || false", # Test Unicode normalization sensitivity 36 "umount /tmp/mnt", 37 "apfsck /dev/vdb", 38 ) 39 with subtest("Disable case sensitivity and normalization sensitivity"): 40 machine.succeed( 41 "mkapfs /dev/vdb", 42 "mount -o cknodes,readwrite /dev/vdb /tmp/mnt", 43 "echo 'bla bla bla' > /tmp/mnt/Test.txt", 44 "echo -n 'Hello World' > /tmp/mnt/test.txt", 45 "echo ' 1' >> /tmp/mnt/TEST.TXT", 46 "umount /tmp/mnt", 47 "apfsck /dev/vdb", 48 "mount -o cknodes,readwrite /dev/vdb /tmp/mnt", 49 "echo 'Hello World 1' | diff - /tmp/mnt/TeSt.TxT", # Test case insensitivity 50 "echo 'Hello World 2' > /tmp/mnt/\u0061\u0301.txt", 51 "echo 'Hello World 2' | diff - /tmp/mnt/\u0061\u0301.txt", 52 "echo 'Hello World 2' | diff - /tmp/mnt/\u00e1.txt", # Test Unicode normalization 53 "umount /tmp/mnt", 54 "apfsck /dev/vdb", 55 ) 56 with subtest("Snapshots"): 57 machine.succeed( 58 "mkapfs /dev/vdb", 59 "mount -o cknodes,readwrite /dev/vdb /tmp/mnt", 60 "echo 'Hello World' > /tmp/mnt/test.txt", 61 "apfs-snap /tmp/mnt snap-1", 62 "rm /tmp/mnt/test.txt", 63 "umount /tmp/mnt", 64 "mount -o cknodes,readwrite,snap=snap-1 /dev/vdb /tmp/mnt", 65 "echo 'Hello World' | diff - /tmp/mnt/test.txt", 66 "umount /tmp/mnt", 67 "apfsck /dev/vdb", 68 ) 69 ''; 70}