aa122cbae7
This CL can be used to compare the style of nixpkgs-fmt against other formatters (nixpkgs, alejandra). Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: wpcarro <wpcarro@gmail.com> Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: cynthia <cynthia@tvl.fyi> Reviewed-by: edef <edef@edef.eu> Reviewed-by: eta <tvl@eta.st> Reviewed-by: grfn <grfn@gws.fyi>
94 lines
2 KiB
Nix
94 lines
2 KiB
Nix
{ depot, lib, verifyTag, discr, discrDef, match, matchLam }:
|
|
|
|
let
|
|
inherit (depot.nix.runTestsuite)
|
|
runTestsuite
|
|
assertEq
|
|
it
|
|
;
|
|
|
|
isTag-test = it "checks whether something is a tag" [
|
|
(assertEq "is Tag"
|
|
(verifyTag { foo = "bar"; })
|
|
{
|
|
isTag = true;
|
|
name = "foo";
|
|
val = "bar";
|
|
errmsg = null;
|
|
})
|
|
(assertEq "is not Tag"
|
|
(removeAttrs (verifyTag { foo = "bar"; baz = 42; }) [ "errmsg" ])
|
|
{
|
|
isTag = false;
|
|
name = null;
|
|
val = null;
|
|
})
|
|
];
|
|
|
|
discr-test = it "can discr things" [
|
|
(assertEq "id"
|
|
(discr [
|
|
{ a = lib.const true; }
|
|
] "x")
|
|
{ a = "x"; })
|
|
(assertEq "bools here, ints there"
|
|
(discr [
|
|
{ bool = lib.isBool; }
|
|
{ int = lib.isInt; }
|
|
] 25)
|
|
{ int = 25; })
|
|
(assertEq "bools here, ints there 2"
|
|
(discr [
|
|
{ bool = lib.isBool; }
|
|
{ int = lib.isInt; }
|
|
]
|
|
true)
|
|
{ bool = true; })
|
|
(assertEq "fallback to default"
|
|
(discrDef "def" [
|
|
{ bool = lib.isBool; }
|
|
{ int = lib.isInt; }
|
|
] "foo")
|
|
{ def = "foo"; })
|
|
];
|
|
|
|
match-test = it "can match things" [
|
|
(assertEq "match example"
|
|
(
|
|
let
|
|
success = { res = 42; };
|
|
failure = { err = "no answer"; };
|
|
matcher = {
|
|
res = i: i + 1;
|
|
err = _: 0;
|
|
};
|
|
in
|
|
{
|
|
one = match success matcher;
|
|
two = match failure matcher;
|
|
}
|
|
)
|
|
{
|
|
one = 43;
|
|
two = 0;
|
|
})
|
|
(assertEq "matchLam & pipe"
|
|
(lib.pipe { foo = 42; } [
|
|
(matchLam {
|
|
foo = i: if i < 23 then { small = i; } else { big = i; };
|
|
bar = _: { small = 5; };
|
|
})
|
|
(matchLam {
|
|
small = i: "yay it was small";
|
|
big = i: "whoo it was big!";
|
|
})
|
|
])
|
|
"whoo it was big!")
|
|
];
|
|
|
|
in
|
|
runTestsuite "tag" [
|
|
isTag-test
|
|
discr-test
|
|
match-test
|
|
]
|