Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
1.4 kB · 73 lines
Nix
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374with builtins;let /* underTest = { x = { a = 1; b = "2"; }; };
tests = [ (root: false) { x = [ (set: true) { a = (a: a > 1); b = (b: b == "3"); } ]; } ];
results = run "Examples" underTest tests; */
passed = desc: { result = "pass"; description = desc; };
failed = desc: { result = "failed"; description = desc; };
prefixName = name: res: { inherit (res) result; description = "${name}: ${res.description}"; };
run = name: under: tests: if isList tests then (concatLists (map (run name under) tests)) else if isAttrs tests then (concatLists ( map ( subName: run (name + "." + subName) (if hasAttr subName under then getAttr subName under else "<MISSING!>") ( getAttr subName tests ) ) (attrNames tests) )) else if isFunction tests then let res = tests under; in if isBool res then [ (prefixName name (if tests under then passed "passed" else failed "failed")) ] else [ (prefixName name res) ] else [ failed (name ": not a function, list or set") ];in{ inherit run passed failed;}