Unverified Commit 443707aa authored by Jörg Thalheim's avatar Jörg Thalheim Committed by GitHub
Browse files

Merge pull request #217818 from hsjobeki/doc/lib-runTests

Doc: better comments for lib.runTests
parents 30343bab 09ee6241
Loading
Loading
Loading
Loading
+57 −9
Original line number Diff line number Diff line
@@ -109,6 +109,8 @@ rec {
       traceSeqN 2 { a.b.c = 3; } null
       trace: { a = { b = {…}; }; }
       => null

     Type: traceSeqN :: Int -> a -> b -> b
   */
  traceSeqN = depth: x: y:
    let snip = v: if      isList  v then noQuotes "[…]" v
@@ -173,17 +175,63 @@ rec {

  # -- TESTING --

  /* Evaluate a set of tests.  A test is an attribute set `{expr,
     expected}`, denoting an expression and its expected result.  The
     result is a list of failed tests, each represented as `{name,
     expected, actual}`, denoting the attribute name of the failing
     test and its expected and actual results.
  /* Evaluates a set of tests.

     A test is an attribute set `{expr, expected}`,
     denoting an expression and its expected result.

     The result is a `list` of __failed tests__, each represented as
     `{name, expected, result}`,

     - expected
       - What was passed as `expected`
     - result
       - The actual `result` of the test

     Used for regression testing of the functions in lib; see
     tests.nix for an example. Only tests having names starting with
     "test" are run.
     tests.nix for more examples.

     Important: Only attributes that start with `test` are executed.

     - If you want to run only a subset of the tests add the attribute `tests = ["testName"];`

    Example:

     Add attr { tests = ["testName"]; } to run these tests only.
     runTests {
       testAndOk = {
         expr = lib.and true false;
         expected = false;
       };
       testAndFail = {
         expr = lib.and true false;
         expected = true;
       };
     }
     ->
     [
       {
         name = "testAndFail";
         expected = true;
         result = false;
       }
     ]

    Type:
      runTests :: {
        tests = [ String ];
        ${testName} :: {
          expr :: a;
          expected :: a;
        };
      }
      ->
      [
        {
          name :: String;
          expected :: a;
          result :: a;
        }
      ]
  */
  runTests =
    # Tests to run