lib.asserts: assertion functions
lib.asserts.assertMsg
Throw if pred is false, else return pred. Intended to be used to augment asserts with helpful error messages.
Inputs
pred
: Predicate that needs to succeed, otherwise msg
is thrown
msg
: Message to throw in case pred
fails
Type
assertMsg :: Bool -> String -> Bool
Examples
lib.asserts.assertMsg
usage example
assertMsg false "nope"
stderr> error: nope
assert assertMsg ("foo" == "bar") "foo is not bar, silly"; ""
stderr> error: foo is not bar, silly
Located at lib/asserts.nix:39 in <nixpkgs>
.
lib.asserts.assertOneOf
Specialized assertMsg
for checking if val
is one of the elements
of the list xs
. Useful for checking enums.
Inputs
name
: The name of the variable the user entered val
into, for inclusion in the error message
val
: The value of what the user provided, to be compared against the values in xs
xs
: The list of valid values
Type
assertOneOf :: String -> ComparableVal -> List ComparableVal -> Bool
Examples
lib.asserts.assertOneOf
usage example
let sslLibrary = "libressl";
in assertOneOf "sslLibrary" sslLibrary [ "openssl" "bearssl" ]
stderr> error: sslLibrary must be one of [
stderr> "openssl"
stderr> "bearssl"
stderr> ], but is: "libressl"
Located at lib/asserts.nix:83 in <nixpkgs>
.
lib.asserts.assertEachOneOf
Specialized assertMsg
for checking if every one of vals
is one of the elements
of the list xs
. Useful for checking lists of supported attributes.
Inputs
name
: The name of the variable the user entered val
into, for inclusion in the error message
vals
: The list of values of what the user provided, to be compared against the values in xs
xs
: The list of valid values
Type
assertEachOneOf :: String -> List ComparableVal -> List ComparableVal -> Bool
Examples
lib.asserts.assertEachOneOf
usage example
let sslLibraries = [ "libressl" "bearssl" ];
in assertEachOneOf "sslLibraries" sslLibraries [ "openssl" "bearssl" ]
stderr> error: each element in sslLibraries must be one of [
stderr> "openssl"
stderr> "bearssl"
stderr> ], but is: [
stderr> "libressl"
stderr> "bearssl"
stderr> ]
Located at lib/asserts.nix:135 in <nixpkgs>
.