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