about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/aszlig/dnyarri/luks2-bcache.nix143
-rw-r--r--tests/aszlig/programs/psi.nix13
-rw-r--r--tests/games/starbound.nix33
-rw-r--r--tests/make-test.nix2
-rw-r--r--tests/programs/gnupg/default.nix122
-rw-r--r--tests/sandbox.nix25
-rw-r--r--tests/system/kernel/bfq.nix5
7 files changed, 165 insertions, 178 deletions
diff --git a/tests/aszlig/dnyarri/luks2-bcache.nix b/tests/aszlig/dnyarri/luks2-bcache.nix
index 0347a0da..1c7fd5fc 100644
--- a/tests/aszlig/dnyarri/luks2-bcache.nix
+++ b/tests/aszlig/dnyarri/luks2-bcache.nix
@@ -37,33 +37,32 @@
     uuid1 = "07b821b9-0912-4f03-9ebc-89f41704caff";
     uuid2 = "d140fd40-bb3c-48b5-98e0-b75878dbce66";
   in ''
-    $machine->waitForUnit('multi-user.target');
+    # fmt: off
+    machine.wait_for_unit('multi-user.target')
 
-    $machine->nest('setting up LUKS2 and bcache backing devices', sub {
-      $machine->succeed('dd if=/dev/urandom of=/dev/vdb bs=1 count=200');
+    with machine.nested('setting up LUKS2 and bcache backing devices'):
+      machine.succeed('dd if=/dev/urandom of=/dev/vdb bs=1 count=200')
 
-      $machine->succeed('make-bcache -B /dev/vdc');
-      $machine->succeed('make-bcache -B /dev/vdd');
+      machine.succeed('make-bcache -B /dev/vdc')
+      machine.succeed('make-bcache -B /dev/vdd')
 
-      $machine->waitUntilSucceeds(
+      machine.wait_until_succeeds(
         '[ $(echo /dev/bcache[0-9]* | wc -w) -eq 2 ]'
-      );
-      my $bcache1 = $machine->succeed('ls -1 /dev/bcache[0-9]* | head -n1');
-      chomp $bcache1;
-      my $bcache2 = $machine->succeed('ls -1 /dev/bcache[0-9]* | tail -n1');
-      chomp $bcache2;
-
-      $machine->succeed(
-        "${luksFormat} $bcache1 --uuid ${uuid1} /dev/vdb",
-        "cryptsetup open $bcache1 l1 --key-file=/dev/vdb",
-      );
-
-      $machine->succeed(
-        "${luksFormat} $bcache2 --uuid ${uuid2} /dev/vdb",
-        "cryptsetup open $bcache2 l2 --key-file=/dev/vdb",
-      );
-
-      $machine->succeed(
+      )
+      bcache1 = machine.succeed('ls -1 /dev/bcache[0-9]* | head -n1').strip()
+      bcache2 = machine.succeed('ls -1 /dev/bcache[0-9]* | tail -n1').strip()
+
+      machine.succeed(
+        f"${luksFormat} {bcache1} --uuid ${uuid1} /dev/vdb",
+        f"cryptsetup open {bcache1} l1 --key-file=/dev/vdb",
+      )
+
+      machine.succeed(
+        f"${luksFormat} {bcache2} --uuid ${uuid2} /dev/vdb",
+        f"cryptsetup open {bcache2} l2 --key-file=/dev/vdb",
+      )
+
+      machine.succeed(
         'mkfs.btrfs -L testfs -m raid1 -d raid1 /dev/mapper/l1 /dev/mapper/l2',
         'btrfs dev scan',
         'mkdir /mnt-test',
@@ -72,61 +71,53 @@
         'umount /mnt-test',
         'cryptsetup close l1',
         'cryptsetup close l2',
-      );
-    });
-
-    $machine->nest('rebooting into new configuration', sub {
-      $machine->shutdown;
-      $newmachine->{stateDir} = $machine->{stateDir};
-      $newmachine->waitForUnit('multi-user.target');
-    });
-
-    my $bcache1 =
-      $newmachine->succeed('cd /dev; ls -1 bcache[0-9]* | head -n1');
-    chomp $bcache1;
-    my $bcache2 =
-      $newmachine->succeed('cd /dev; ls -1 bcache[0-9]* | tail -n1');
-    chomp $bcache2;
-
-    $machine->nest('attaching bcache cache device', sub {
-      my $csetuuid = $newmachine->succeed(
+      )
+
+    with machine.nested('rebooting into new configuration'):
+      machine.shutdown()
+      newmachine.state_dir = machine.state_dir
+      newmachine.wait_for_unit('multi-user.target')
+
+    bcache1 = newmachine.succeed(
+      'cd /dev; ls -1 bcache[0-9]* | head -n1'
+    ).strip()
+    bcache2 = newmachine.succeed(
+      'cd /dev; ls -1 bcache[0-9]* | tail -n1'
+    ).strip()
+
+    with machine.nested('attaching bcache cache device'):
+      csetuuid = newmachine.succeed(
         'make-bcache -C /dev/vde | sed -n -e "s/^Set UUID:[^a-f0-9]*//p"'
-      );
-      chomp $csetuuid;
-
-      $newmachine->nest('wait for cache device to appear', sub {
-        $newmachine->waitUntilSucceeds("test -e /sys/fs/bcache/$csetuuid");
-      });
-
-      $newmachine->succeed(
-        "echo $csetuuid > /sys/block/$bcache1/bcache/attach",
-        "echo writeback > /sys/block/$bcache1/bcache/cache_mode",
-        "echo $csetuuid > /sys/block/$bcache2/bcache/attach",
-        "echo writeback > /sys/block/$bcache2/bcache/cache_mode"
-      );
-    });
-
-    $machine->nest('write random files to test file system', sub {
-      $newmachine->succeed(
-        'for i in $(seq 100); do'.
-        ' dd if=/dev/urandom of="/test/randfile.$i" bs=1 count=100;'.
-        ' sha256sum "/test/randfile.$i" > "/test/randfile.$i.sha256"; '.
+      ).strip()
+
+      with newmachine.nested('wait for cache device to appear'):
+        newmachine.wait_until_succeeds(f"test -e /sys/fs/bcache/{csetuuid}")
+
+      newmachine.succeed(
+        f"echo {csetuuid} > /sys/block/{bcache1}/bcache/attach",
+        f"echo writeback > /sys/block/{bcache1}/bcache/cache_mode",
+        f"echo {csetuuid} > /sys/block/{bcache2}/bcache/attach",
+        f"echo writeback > /sys/block/{bcache2}/bcache/cache_mode",
+      )
+
+    with machine.nested('write random files to test file system'):
+      newmachine.succeed(
+        'for i in $(seq 100); do'
+        ' dd if=/dev/urandom of="/test/randfile.$i" bs=1 count=100;'
+        ' sha256sum "/test/randfile.$i" > "/test/randfile.$i.sha256"; '
         'done'
-      );
-    });
-
-    $machine->nest('reboot to clear disk buffers', sub {
-      $newmachine->shutdown;
-      $newmachine->waitForUnit('multi-user.target');
-    });
-
-    $machine->nest('verifying contents of random files created earlier', sub {
-      $newmachine->succeed(
-        'for i in $(seq 100); do'.
-        ' sha256sum "/test/randfile.$i" | cmp - "/test/randfile.$i.sha256"'.
-        ' || exit 1; '.
+      )
+
+    with machine.nested('reboot to clear disk buffers'):
+      newmachine.shutdown()
+      newmachine.wait_for_unit('multi-user.target')
+
+    with machine.nested('verifying contents of random files created earlier'):
+      newmachine.succeed(
+        'for i in $(seq 100); do'
+        ' sha256sum "/test/randfile.$i" | cmp - "/test/randfile.$i.sha256"'
+        ' || exit 1; '
         'done'
-      );
-    });
+      )
   '';
 }
diff --git a/tests/aszlig/programs/psi.nix b/tests/aszlig/programs/psi.nix
index 0b6643f8..05b87697 100644
--- a/tests/aszlig/programs/psi.nix
+++ b/tests/aszlig/programs/psi.nix
@@ -15,11 +15,12 @@
   enableOCR = true;
 
   testScript = ''
-    $machine->waitForX;
-    $machine->waitForFile("/home/alice/.Xauthority");
-    $machine->succeed("xauth merge ~alice/.Xauthority");
-    $machine->succeed('su -c "DISPLAY=:0.0 psi" - alice &');
-    $machine->waitForText(qr/Register new account/i);
-    $machine->screenshot('psi');
+    # fmt: off
+    machine.wait_for_x()
+    machine.wait_for_file("/home/alice/.Xauthority")
+    machine.succeed("xauth merge ~alice/.Xauthority")
+    machine.succeed('su -c "DISPLAY=:0.0 psi" - alice &')
+    machine.wait_for_text('(?i)Register new account')
+    machine.screenshot('psi')
   '';
 }
diff --git a/tests/games/starbound.nix b/tests/games/starbound.nix
index d1ef15e1..5fbb85aa 100644
--- a/tests/games/starbound.nix
+++ b/tests/games/starbound.nix
@@ -10,10 +10,9 @@ let
     '';
     escapeScreenshot = pkgs.lib.replaceStrings ["-"] ["_"];
   in ''
-    $client->nest("${description}", sub {
-      $client->screenshot("before_${escapeScreenshot name}");
-      $client->succeed("${pkgs.xdotool}/bin/xdotool '${xdoFile}'");
-    });
+    with client.nested("${description}"):
+      client.screenshot("before_${escapeScreenshot name}")
+      client.succeed("${pkgs.xdotool}/bin/xdotool '${xdoFile}'")
   '';
 
   clickAt = name: x: y: xdo {
@@ -68,22 +67,22 @@ in {
   };
 
   testScript = ''
-    $server->waitForUnit("starbound.service");
+    # fmt: off
+    server.wait_for_unit("starbound.service")
 
-    $client->nest("waiting for client to start up", sub {
-      $client->waitForX;
-      $client->succeed("starbound >&2 &");
-      $client->waitForText(qr/options/i);
-    });
+    with client.nested("waiting for client to start up"):
+      client.wait_for_x()
+      client.succeed("starbound >&2 &")
+      client.wait_for_text('(?i)options')
 
     ${clickAt "join-game" 100 560}
-    $client->waitForText(qr/select/i);
+    client.wait_for_text('(?i)select')
     ${clickAt "new-character" 460 220}
-    $client->waitForText(qr/randomise/i);
+    client.wait_for_text('(?i)randomise')
     ${clickAt "create-character" 600 625}
-    $client->waitForText(qr/select/i);
+    client.wait_for_text('(?i)select')
     ${clickAt "use-character" 460 220}
-    $client->waitForText(qr/ser[vu]er/i);
+    client.wait_for_text('(?i)ser[vu]er')
 
     ${clickAt "server-address" 460 322}
     ${typeText "server-address" "192.168.0.1"}
@@ -96,8 +95,8 @@ in {
 
     ${clickAt "join-server" 495 420}
 
-    $client->waitForText(qr/graduation/i);
-    $client->sleep(30);
-    $client->screenshot("client");
+    client.wait_for_text('(?i)graduation')
+    client.sleep(30)
+    client.screenshot("client")
   '';
 }
diff --git a/tests/make-test.nix b/tests/make-test.nix
index cdc763c7..39586932 100644
--- a/tests/make-test.nix
+++ b/tests/make-test.nix
@@ -9,7 +9,7 @@ testFun:
 
   pkgs = import nixpkgsPath { inherit system; };
 
-  testLib = import "${nixpkgsPath}/nixos/lib/testing.nix" {
+  testLib = import "${nixpkgsPath}/nixos/lib/testing-python.nix" {
     inherit pkgs system;
   };
 
diff --git a/tests/programs/gnupg/default.nix b/tests/programs/gnupg/default.nix
index 504f6e46..098178a4 100644
--- a/tests/programs/gnupg/default.nix
+++ b/tests/programs/gnupg/default.nix
@@ -42,30 +42,28 @@ in {
   };
 
   testScript = ''
-    $machine->waitForUnit("sshd.service");
-    $machine->succeed("ssh-keygen -t ed25519 -f /root/id_ed25519 -N '''");
-    my $cmd = 'mkdir -p ~/.ssh && cat > ~/.ssh/authorized_keys';
-    $machine->succeed("su -c 'umask 0077; $cmd' alice < /root/id_ed25519.pub");
-
-    $machine->waitForX;
-
-    sub ssh ($) {
-      my $esc = $_[0] =~ s/'/'\\${"'"}'/gr;
-      return "ssh -q -i /root/id_ed25519".
-             " -o StrictHostKeyChecking=no".
-             " alice\@127.0.0.1 -- '$esc'";
-    }
-
-    sub xsu ($) {
-      my $esc = $_[0] =~ s/'/'\\${"'"}'/gr;
-      return "DISPLAY=:0 su alice -c '$esc'";
-    }
-
-    $machine->nest("import snakeoil key", sub {
-      $machine->succeed(ssh "${cliTestWithPassphrase ''
+    # fmt: off
+    from shlex import quote
+
+    machine.wait_for_unit("sshd.service")
+    machine.succeed("ssh-keygen -t ed25519 -f /root/id_ed25519 -N '''")
+    cmd = 'mkdir -p ~/.ssh && cat > ~/.ssh/authorized_keys'
+    machine.succeed(f"su -c 'umask 0077; {cmd}' alice < /root/id_ed25519.pub")
+
+    machine.wait_for_x()
+
+    def ssh(cmd: str) -> str:
+      return "ssh -q -i /root/id_ed25519 -o StrictHostKeyChecking=no" \
+             f" alice@127.0.0.1 -- {quote(cmd)}"
+
+    def xsu(cmd: str) -> str:
+      return f"DISPLAY=:0 su alice -c {quote(cmd)}"
+
+    with machine.nested("import snakeoil key"):
+      machine.succeed(ssh("${cliTestWithPassphrase ''
         gpg --import ${./snakeoil.asc}
-      ''}");
-      $machine->succeed(ssh "${mkExpect ''
+      ''}"))
+      machine.succeed(ssh("${mkExpect ''
         expect gpg>
         send trust\r
         expect decision?
@@ -74,63 +72,59 @@ in {
         send y\r
         expect gpg>
         send save\r
-      '' "gpg --edit-key ECC15FE1"}");
-    });
+      '' "gpg --edit-key ECC15FE1"}"))
 
-    subtest "test SSH agent support", sub {
-      $machine->succeed(ssh 'ssh-keygen -t ed25519 -f ~/testkey -N ""');
-      $machine->succeed(ssh '${mkExpect ''
+    with subtest("test SSH agent support"):
+      machine.succeed(ssh('ssh-keygen -t ed25519 -f ~/testkey -N ""'))
+      machine.succeed(ssh('${mkExpect ''
         expect -regexp ---+.*Please.enter
         send supersecret\r
         expect -regexp ---+.*Please.re-en
         send supersecret\r
-      '' "ssh-add ~/testkey"}');
+      '' "ssh-add ~/testkey"}'))
 
-      $machine->succeed("umask 0077; $cmd < ~alice/testkey.pub");
-      $machine->succeed(ssh 'rm ~/testkey*');
+      machine.succeed(f"umask 0077; {cmd} < ~alice/testkey.pub")
+      machine.succeed(ssh('rm ~/testkey*'))
 
-      $machine->succeed(ssh 'ssh -o StrictHostKeyChecking=no root@127.0.0.1'.
-                            ' touch /i_have_thu_powarr');
-      $machine->succeed("test -e /i_have_thu_powarr");
+      machine.succeed(ssh(
+        'ssh -o StrictHostKeyChecking=no root@127.0.0.1'
+        ' touch /i_have_thu_powarr'
+      ))
+      machine.succeed("test -e /i_have_thu_powarr")
 
-      $machine->succeed(ssh "systemctl --user reload gpg-agent");
+      machine.succeed(ssh("systemctl --user reload gpg-agent"))
 
-      $machine->succeed(ssh "${cliTestWithPassphrase ''
+      machine.succeed(ssh("${cliTestWithPassphrase ''
         ssh -o StrictHostKeyChecking=no root@127.0.0.1 \
           touch /i_still_have_thu_powarr
-      ''}");
-      $machine->succeed("test -e /i_still_have_thu_powarr");
-    };
-
-    subtest "socket persists after restart", sub {
-      $machine->succeed(ssh 'test -e "$SSH_AUTH_SOCK"');
-      $machine->succeed(ssh 'systemctl --user stop gpg-agent.service');
-      $machine->succeed(ssh 'test -e "$SSH_AUTH_SOCK"');
-    };
-
-    subtest "test from SSH", sub {
-      $machine->execute(ssh "systemctl --user reload gpg-agent");
-      $machine->succeed(ssh "${cliTestWithPassphrase ''
+      ''}"))
+      machine.succeed("test -e /i_still_have_thu_powarr")
+
+    with subtest("socket persists after restart"):
+      machine.succeed(ssh('test -e "$SSH_AUTH_SOCK"'))
+      machine.succeed(ssh('systemctl --user stop gpg-agent.service'))
+      machine.succeed(ssh('test -e "$SSH_AUTH_SOCK"'))
+
+    with subtest("test from SSH"):
+      machine.execute(ssh("systemctl --user reload gpg-agent"))
+      machine.succeed(ssh("${cliTestWithPassphrase ''
         echo encrypt me > to_encrypt
         gpg -sea -r ECC15FE1 to_encrypt
         rm to_encrypt
-      ''}");
-      $machine->succeed(ssh "${cliTest ''
+      ''}"))
+      machine.succeed(ssh("${cliTest ''
         [ "$(gpg -d to_encrypt.asc)" = "encrypt me" ]
-      ''}");
-    };
+      ''}"))
 
-    subtest "test from X", sub {
-      $machine->execute(ssh "systemctl --user reload gpg-agent");
-      my $pid = $machine->succeed(xsu
+    with subtest("test from X"):
+      machine.execute(ssh("systemctl --user reload gpg-agent"))
+      pid = machine.succeed(xsu(
         'echo encrypt me | gpg -sea -r ECC15FE1 > encrypted_x.asc & echo $!'
-      );
-      chomp $pid;
-      $machine->waitForText(qr/[Pp]assphrase/);
-      $machine->screenshot("passphrase_dialog");
-      $machine->sendChars("supersecret\n");
-      $machine->waitUntilFails("kill -0 $pid");
-      $machine->succeed(xsu '[ "$(gpg -d encrypted_x.asc)" = "encrypt me" ]');
-    };
+      )).strip()
+      machine.wait_for_text('(?i)[Pp]assphrase')
+      machine.screenshot("passphrase_dialog")
+      machine.send_chars("supersecret\n")
+      machine.wait_until_fails(f"kill -0 {pid}")
+      machine.succeed(xsu('[ "$(gpg -d encrypted_x.asc)" = "encrypt me" ]'))
   '';
 }
diff --git a/tests/sandbox.nix b/tests/sandbox.nix
index 66187b23..63d8af6e 100644
--- a/tests/sandbox.nix
+++ b/tests/sandbox.nix
@@ -120,21 +120,22 @@
   };
 
   testScript = ''
-    $machine->waitForUnit('multi-user.target');
-    $machine->succeed('su - -c "xvfb-run gtk-launch test" foo >&2');
-    $machine->waitForFile('/home/foo/.cache/xdg/done');
+    # fmt: off
+    machine.wait_for_unit('multi-user.target')
+    machine.succeed('su - -c "xvfb-run gtk-launch test" foo >&2')
+    machine.wait_for_file('/home/foo/.cache/xdg/done')
 
-    $machine->succeed('test -d /home/foo/existing');
-    $machine->succeed('grep -qF foo /home/foo/existing/bar');
-    $machine->fail('test -d /home/foo/nonexisting');
+    machine.succeed('test -d /home/foo/existing')
+    machine.succeed('grep -qF foo /home/foo/existing/bar')
+    machine.fail('test -d /home/foo/nonexisting')
 
-    $machine->succeed('grep -qF XDG1 /home/foo/.local/share/xdg/1');
-    $machine->succeed('grep -qF XDG2 /home/foo/.config/xdg/2');
-    $machine->succeed('grep -qF XDG3 /home/foo/.cache/xdg/3');
+    machine.succeed('grep -qF XDG1 /home/foo/.local/share/xdg/1')
+    machine.succeed('grep -qF XDG2 /home/foo/.config/xdg/2')
+    machine.succeed('grep -qF XDG3 /home/foo/.cache/xdg/3')
 
-    $machine->succeed('test "$(< /home/foo/.cache/xdg/procpids)" = /proc/1');
-    $machine->succeed('test "$(< /home/foo/.cache/xdg/ownpid)" = 1');
+    machine.succeed('test "$(< /home/foo/.cache/xdg/procpids)" = /proc/1')
+    machine.succeed('test "$(< /home/foo/.cache/xdg/ownpid)" = 1')
 
-    $machine->succeed('test "$(su -c test-sandbox2 foo)" = "/bin/sh works"');
+    machine.succeed('test "$(su -c test-sandbox2 foo)" = "/bin/sh works"')
   '';
 }
diff --git a/tests/system/kernel/bfq.nix b/tests/system/kernel/bfq.nix
index 8a76d2a0..8aab8925 100644
--- a/tests/system/kernel/bfq.nix
+++ b/tests/system/kernel/bfq.nix
@@ -8,7 +8,8 @@
   };
 
   testScript = ''
-    $machine->execute('tail /sys/block/*/queue/scheduler >&2');
-    $machine->succeed('grep -HF "[bfq]" /sys/block/sda/queue/scheduler');
+    # fmt: off
+    machine.execute('tail /sys/block/*/queue/scheduler >&2')
+    machine.succeed('grep -HF "[bfq]" /sys/block/sda/queue/scheduler')
   '';
 }