#!/usr/bin/perl -T

BEGIN {
    require "./debian/tests/utils/mock.pm";
    Cryptsetup::Mock::->import();
}

unlock_disk("topsecret");
login_nopassword("root");

# make sure the root FS, swap, and /home are help by dm-crypt devices
assert_command(q{cryptsetup luksOpen --test-passphrase /dev/vda5 <<<topsecret});
my $out = shell_command(q{lsblk -in -oNAME,TYPE,MOUNTPOINT /dev/vda3});
die unless $out =~ m#\Avda3\s.*\r?\n^`-vda3_crypt\s+crypt\s+/home\s*\r?\n\z#m;

$out = shell_command(q{lsblk -in -oNAME,TYPE,MOUNTPOINT /dev/vda4});
die unless $out =~ m#\Avda4\s.*\r?\n^`-vda4_crypt\s+crypt\s+\[SWAP\]\s*\r?\n\z#m;

$out = shell_command(q{lsblk -in -oNAME,TYPE,MOUNTPOINT /dev/vda5});
die unless $out =~ m#\Avda5\s.*\r?\n^`-vda5_crypt\s+crypt\s+/\s*\r?\n\z#m;

# make sure only vda5 is processed at initramfs stage
# XXX unmkinitramfs doesn't work on /initrd.img with COMPRESS=zstd, cf. #1015954
shell_command(q{unmkinitramfs /boot/initrd.img-`uname -r` /tmp/initramfs});
shell_command(q{grep -E '^vd\S+_crypt\s' </tmp/initramfs/cryptroot/crypttab >/tmp/out});
assert_command(q{grep -E  '^vda5_crypt\s' </tmp/out}, 0);
assert_command(q{grep -Ev '^vda5_crypt\s' </tmp/out}, 1);

poweroff();
