1import ./make-test-python.nix ({ lib, pkgs, ... }:
2let
3 pythonShebang = pkgs.writeScript "python-shebang" ''
4 #!/usr/bin/python
5 print("OK")
6 '';
7
8 bashShebang = pkgs.writeScript "bash-shebang" ''
9 #!/usr/bin/bash
10 echo "OK"
11 '';
12in
13{
14 name = "envfs";
15 nodes.machine.services.envfs.enable = true;
16
17 testScript = ''
18 start_all()
19 machine.wait_until_succeeds("mountpoint -q /usr/bin/")
20 machine.succeed(
21 "PATH=${pkgs.coreutils}/bin /usr/bin/cp --version",
22 # check fallback paths
23 "PATH= /usr/bin/sh --version",
24 "PATH= /usr/bin/env --version",
25 "PATH= test -e /usr/bin/sh",
26 "PATH= test -e /usr/bin/env",
27 # no stat
28 "! test -e /usr/bin/cp",
29 # also picks up PATH that was set after execve
30 "! /usr/bin/hello",
31 "PATH=${pkgs.hello}/bin /usr/bin/hello",
32 )
33
34 out = machine.succeed("PATH=${pkgs.python3}/bin ${pythonShebang}")
35 print(out)
36 assert out == "OK\n"
37
38 out = machine.succeed("PATH=${pkgs.bash}/bin ${bashShebang}")
39 print(out)
40 assert out == "OK\n"
41 '';
42})