oxipng: re-enable tests (#375349)
[NixPkgs.git] / nixos / modules / system / etc / test.nix
blobaf2cf5af85c45dc2bedd6f4b981edf59b5b7fb29
1 { lib
2 , coreutils
3 , fakechroot
4 , fakeroot
5 , evalMinimalConfig
6 , pkgsModule
7 , runCommand
8 , util-linux
9 , vmTools
10 , writeText
12 let
13   node = evalMinimalConfig ({ config, ... }: {
14     imports = [ pkgsModule ../etc/etc.nix ];
15     environment.etc."passwd" = {
16       text = passwdText;
17     };
18     environment.etc."hosts" = {
19       text = hostsText;
20       mode = "0751";
21     };
22   });
23   passwdText = ''
24     root:x:0:0:System administrator:/root:/run/current-system/sw/bin/bash
25   '';
26   hostsText = ''
27     127.0.0.1 localhost
28     ::1 localhost
29     # testing...
30   '';
32 lib.recurseIntoAttrs {
33   test-etc-vm =
34     vmTools.runInLinuxVM (runCommand "test-etc-vm" { } ''
35       mkdir -p /etc
36       ${node.config.system.build.etcActivationCommands}
37       set -x
38       [[ -L /etc/passwd ]]
39       diff /etc/passwd ${writeText "expected-passwd" passwdText}
40       [[ 751 = $(stat --format %a /etc/hosts) ]]
41       diff /etc/hosts ${writeText "expected-hosts" hostsText}
42       set +x
43       touch $out
44     '');
46   # fakeroot is behaving weird
47   test-etc-fakeroot =
48     runCommand "test-etc"
49       {
50         nativeBuildInputs = [
51           fakeroot
52           fakechroot
53           # for chroot
54           coreutils
55           # fakechroot needs getopt, which is provided by util-linux
56           util-linux
57         ];
58         fakeRootCommands = ''
59           mkdir -p /etc
60           ${node.config.system.build.etcActivationCommands}
61           diff /etc/hosts ${writeText "expected-hosts" hostsText}
62           touch $out
63         '';
64       } ''
65       mkdir fake-root
66       export FAKECHROOT_EXCLUDE_PATH=/dev:/proc:/sys:${builtins.storeDir}:$out
67       if [ -e "$NIX_ATTRS_SH_FILE" ]; then
68         export FAKECHROOT_EXCLUDE_PATH=$FAKECHROOT_EXCLUDE_PATH:$NIX_ATTRS_SH_FILE
69       fi
70       fakechroot fakeroot chroot $PWD/fake-root bash -e -c '
71         if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; fi
72         source $stdenv/setup
73         eval "$fakeRootCommands"
74       '
75     '';