lib.asserts: assertion functions

lib.asserts.assertMsg

Type: assertMsg :: Bool -> String -> Bool

Throw if pred is false, else return pred. Intended to be used to augment asserts with helpful error messages.

pred

Predicate that needs to succeed, otherwise msg is thrown

msg

Message to throw in case pred fails

Example

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:19 in <nixpkgs>.

lib.asserts.assertOneOf

Type: assertOneOf :: String -> ComparableVal -> List ComparableVal -> Bool

Specialized assertMsg for checking if val is one of the elements of the list xs. Useful for checking enums.

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

Example

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:40 in <nixpkgs>.