summaryrefslogtreecommitdiffstats
path: root/pkgs/development/ruby-modules/testing/tap-support.nix
blob: 000b8a4a53cbf0812bf21391db10a1031b7dfcc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
with builtins;
let
  withIndexes = list: genList (idx: (elemAt list idx) // { index = idx; }) (length list);

  testLine =
    report:
    "${okStr report} ${toString (report.index + 1)} ${report.description}"
    + testDirective report
    + testYaml report;

  # These are part of the TAP spec, not yet implemented.
  #c.f.  https://github.com/NixOS/nixpkgs/issues/27071
  testDirective = report: "";
  testYaml = report: "";

  okStr = { result, ... }: if result == "pass" then "ok" else "not ok";
in
{
  output =
    reports:
    ''
      TAP version 13
      1..${toString (length reports)}''
    + (foldl' (l: r: l + "\n" + r) "" (map testLine (withIndexes reports)))
    + ''

      # Finished at ${toString currentTime}
    '';
}