Skip to content

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>.