1import ./make-test-python.nix ({ pkgs, ... }: rec {
2 name = "all-terminfo";
3 meta = with pkgs.lib.maintainers; {
4 maintainers = [ jkarlson ];
5 };
6
7 nodes.machine = { pkgs, config, lib, ... }:
8 let
9 infoFilter = name: drv:
10 let
11 o = builtins.tryEval drv;
12 in
13 o.success &&
14 lib.isDerivation o.value &&
15 o.value ? outputs &&
16 builtins.elem "terminfo" o.value.outputs &&
17 !o.value.meta.broken;
18 terminfos = lib.filterAttrs infoFilter pkgs;
19 excludedTerminfos = lib.filterAttrs (_: drv: !(builtins.elem drv.terminfo config.environment.systemPackages)) terminfos;
20 includedOuts = lib.filterAttrs (_: drv: builtins.elem drv.out config.environment.systemPackages) terminfos;
21 in
22 {
23 environment = {
24 enableAllTerminfo = true;
25 etc."terminfo-missing".text = builtins.concatStringsSep "\n" (builtins.attrNames excludedTerminfos);
26 etc."terminfo-extra-outs".text = builtins.concatStringsSep "\n" (builtins.attrNames includedOuts);
27 };
28 };
29
30 testScript =
31 ''
32 machine.fail("grep . /etc/terminfo-missing >&2")
33 machine.fail("grep . /etc/terminfo-extra-outs >&2")
34 '';
35})