Skip to content

Commit

Permalink
lib/trivial: add a few examples of usage of assertMsg/assertOneOf
Browse files Browse the repository at this point in the history
  • Loading branch information
Profpatsch committed Aug 5, 2018
1 parent 0f178f6 commit 5582a69
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 10 deletions.
7 changes: 5 additions & 2 deletions lib/lists.nix
Original file line number Diff line number Diff line change
Expand Up @@ -509,15 +509,18 @@ rec {
=> 3
*/
last = list:
assert list != []; elemAt list (length list - 1);
assert assertMsg (list != []) "lists.last: list must not be empty!";
elemAt list (length list - 1);

/* Return all elements but the last
Example:
init [ 1 2 3 ]
=> [ 1 2 ]
*/
init = list: assert list != []; take (length list - 1) list;
init = list:
assert assertMsg (list != []) "lists.init: list must not be empty!";
take (length list - 1) list;


/* return the image of the cross product of some lists by a function
Expand Down
7 changes: 5 additions & 2 deletions lib/strings.nix
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ rec {
components = splitString "/" url;
filename = lib.last components;
name = builtins.head (splitString sep filename);
in assert name != filename; name;
in assert name != filename; name;

/* Create an --{enable,disable}-<feat> string that can be passed to
standard GNU Autoconf scripts.
Expand Down Expand Up @@ -459,7 +459,10 @@ rec {
strw = lib.stringLength str;
reqWidth = width - (lib.stringLength filler);
in
assert strw <= width;
assert lib.assertMsg (strw <= width)
"fixedWidthString: requested string length (${
toString width}) must not be shorter than actual length (${
toString strw})";
if strw == width then str else filler + fixedWidthString reqWidth filler str;

/* Format a number adding leading zeroes up to fixed width.
Expand Down
8 changes: 6 additions & 2 deletions lib/types.nix
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,9 @@ rec {
let
betweenDesc = lowest: highest:
"${toString lowest} and ${toString highest} (both inclusive)";
between = lowest: highest: assert lowest <= highest;
between = lowest: highest:
assert lib.assertMsg (lowest <= highest)
"ints.between: lowest must be smaller than highest";
addCheck int (x: x >= lowest && x <= highest) // {
name = "intBetween";
description = "integer between ${betweenDesc lowest highest}";
Expand Down Expand Up @@ -439,7 +441,9 @@ rec {
# Either value of type `finalType` or `coercedType`, the latter is
# converted to `finalType` using `coerceFunc`.
coercedTo = coercedType: coerceFunc: finalType:
assert coercedType.getSubModules == null;
assert assertMsg (coercedType.getSubModules == null)
"coercedTo: coercedType must not have submodules (it’s a ${
coercedType.description})";
mkOptionType rec {
name = "coercedTo";
description = "${finalType.description} or ${coercedType.description} convertible to it";
Expand Down
5 changes: 2 additions & 3 deletions pkgs/applications/misc/lilyterm/default.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
{ stdenv, fetchurl, fetchFromGitHub
{ stdenv, lib, fetchurl, fetchFromGitHub
, pkgconfig
, autoconf, automake, intltool, gettext
, gtk, vte

# "stable" or "git"
, flavour ? "stable"
}:

assert flavour == "stable" || flavour == "git";
assert lib.assertOneOf "flavour" flavour [ "stable" "git" ];

let
stuff =
Expand Down
3 changes: 2 additions & 1 deletion pkgs/applications/science/math/ripser/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@

with stdenv.lib;

assert elem fileFormat ["lowerTriangularCsv" "upperTriangularCsv" "dipha"];
assert assertOneOf "fileFormat" fileFormat
["lowerTriangularCsv" "upperTriangularCsv" "dipha"];
assert useGoogleHashmap -> sparsehash != null;

let
Expand Down

0 comments on commit 5582a69

Please sign in to comment.