summary refs log tree commit diff stats
path: root/doc/testament.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/testament.rst')
-rw-r--r--doc/testament.rst250
1 files changed, 0 insertions, 250 deletions
diff --git a/doc/testament.rst b/doc/testament.rst
deleted file mode 100644
index 253afb33d..000000000
--- a/doc/testament.rst
+++ /dev/null
@@ -1,250 +0,0 @@
-Testament is an advanced automatic unittests runner for Nim tests, is used for the development of Nim itself,
-offers process isolation for your tests, it can generate statistics about test cases,
-supports multiple targets (C, C++, ObjectiveC, JavaScript, etc),
-simulated `Dry-Runs <https://en.wikipedia.org/wiki/Dry_run_(testing)>`_,
-has logging, can generate HTML reports, skip tests from a file, and more,
-so can be useful to run your tests, even the most complex ones.
-
-
-Test files location
-===================
-
-By default Testament looks for test files on ``"./tests/*.nim"``.
-You can overwrite this pattern glob using ``pattern <glob>``.
-The default working directory path can be changed using
-``--directory:"folder/subfolder/"``.
-
-Testament uses the ``nim`` compiler on ``PATH``.
-You can change that using ``--nim:"folder/subfolder/nim"``.
-Running JavaScript tests with ``--targets:"js"`` requires a working NodeJS on
-``PATH``.
-
-
-Options
-=======
-
-* ``--print``                   Also print results to the console
-* ``--simulate``                See what tests would be run but don't run them (for debugging)
-* ``--failing``                 Only show failing/ignored tests
-* ``--targets:"c cpp js objc"`` Run tests for specified targets (default: all)
-* ``--nim:path``                Use a particular nim executable (default: ``$PATH/nim``)
-* ``--directory:dir``           Change to directory dir before reading the tests or doing anything else.
-* ``--colors:on|off``           Turn messages coloring on|off.
-* ``--backendLogging:on|off``   Disable or enable backend logging. By default turned on.
-* ``--skipFrom:file``           Read tests to skip from ``file`` - one test per line, # comments ignored
-
-
-Running a single test
-=====================
-
-This is a minimal example to understand the basics,
-not very useful for production, but easy to understand:
-
-.. code::
-
-  $ mkdir tests
-  $ echo "assert 42 == 42" > tests/test0.nim
-  $ testament run test0.nim
-    PASS: tests/test0.nim C                                       ( 0.2 sec)
-
-  $ testament r test0
-    PASS: tests/test0.nim C                                       ( 0.2 sec)
-
-
-Running all tests from a directory
-==================================
-
-.. code::
-
-  $ testament pattern "tests/*.nim"
-
-To search for tests deeper in a directory, use
-
-.. code::
-
-  $ testament pattern "tests/**/*.nim"    # one level deeper
-  $ testament pattern "tests/**/**/*.nim" # two levels deeper
-
-HTML Reports
-============
-
-Generate HTML Reports ``testresults.html`` from unittests,
-you have to run at least 1 test *before* generating a report:
-
-.. code::
-
-  $ testament html
-
-
-Writing Unitests
-================
-
-Example "template" **to edit** and write a Testament unittest:
-
-.. code-block:: nim
-
-  discard """
-
-    # What actions to expect completion on.
-    # Options:
-    #   "compile": expect successful compilation
-    #   "run": expect successful compilation and execution
-    #   "reject": expect failed compilation. The "reject" action can catch
-    #             {.error.} pragmas but not {.fatal.} pragmas because
-    #             {.fatal.} pragmas guarantee that compilation will be aborted.
-    action: "run"
-
-    # The exit code that the test is expected to return. Typically, the default
-    # value of 0 is fine. Note that if the test will be run by valgrind, then
-    # the test will exit with either a code of 0 on success or 1 on failure.
-    exitcode: 0
-
-    # Provide an `output` string to assert that the test prints to standard out
-    # exatly the expected string. Provide an `outputsub` string to assert that
-    # the string given here is a substring of the standard out output of the
-    # test.
-    output: ""
-    outputsub: ""
-
-    # Whether to sort the output lines before comparing them to the desired
-    # output.
-    sortoutput: true
-
-    # Each line in the string given here appears in the same order in the
-    # compiler output, but there may be more lines that appear before, after, or
-    # in between them.
-    nimout: '''
-  a very long,
-  multi-line
-  string'''
-
-    # This is the Standard Input the test should take, if any.
-    input: ""
-
-    # Error message the test should print, if any.
-    errormsg: ""
-
-    # Can be run in batch mode, or not.
-    batchable: true
-
-    # Can be run Joined with other tests to run all togheter, or not.
-    joinable: true
-
-    # On Linux 64-bit machines, whether to use Valgrind to check for bad memory
-    # accesses or memory leaks. On other architectures, the test will be run
-    # as-is, without Valgrind.
-    # Options:
-    #   true: run the test with Valgrind
-    #   false: run the without Valgrind
-    #   "leaks": run the test with Valgrind, but do not check for memory leaks
-    valgrind: false   # Can use Valgrind to check for memory leaks, or not (Linux 64Bit only).
-
-    # Command the test should use to run. If left out or an empty string is
-    # provided, the command is taken to be:
-    # "nim $target --hints:on -d:testing --nimblePath:tests/deps $options $file"
-    # You can use the $target, $options, and $file placeholders in your own
-    # command, too.
-    cmd: "nim c -r $file"
-
-    # Maximum generated temporary intermediate code file size for the test.
-    maxcodesize: 666
-
-    # Timeout seconds to run the test. Fractional values are supported.
-    timeout: 1.5
-
-    # Targets to run the test into (c, cpp, objc, js).
-    targets: "c js"
-
-    # flags with which to run the test, delimited by `;`
-    matrix: "; -d:release; -d:caseFoo -d:release"
-
-    # Conditions that will skip this test. Use of multiple "disabled" clauses
-    # is permitted.
-    disabled: "bsd"   # Can disable OSes...
-    disabled: "win"
-    disabled: "32bit" # ...or architectures
-    disabled: "i386"
-    disabled: "azure" # ...or pipeline runners
-    disabled: true    # ...or can disable the test entirely
-
-  """
-  assert true
-  assert 42 == 42, "Assert error message"
-
-
-* As you can see the "Spec" is just a ``discard """ """``.
-* Spec has sane defaults, so you don't need to provide them all, any simple assert will work just fine.
-* `This is not the full spec of Testament, check the Testament Spec on GitHub, see parseSpec(). <https://github.com/nim-lang/Nim/blob/devel/testament/specs.nim#L238>`_
-* `Nim itself uses Testament, so there are plenty of test examples. <https://github.com/nim-lang/Nim/tree/devel/tests>`_
-* Has some built-in CI compatibility, like Azure Pipelines, etc.
-* `Testament supports inlined error messages on Unittests, basically comments with the expected error directly on the code. <https://github.com/nim-lang/Nim/blob/9a110047cbe2826b1d4afe63e3a1f5a08422b73f/tests/effects/teffects1.nim>`_
-
-
-Unitests Examples
-=================
-
-Expected to fail:
-
-.. code-block:: nim
-
-  discard """
-    errormsg: "undeclared identifier: 'not_defined'"
-  """
-  assert not_defined == "not_defined", "not_defined is not defined"
-
-Non-Zero exit code:
-
-.. code-block:: nim
-
-  discard """
-    exitcode: 1
-  """
-  quit "Non-Zero exit code", 1
-
-Standard output checking:
-
-.. code-block:: nim
-
-  discard """
-
-    output: '''
-  0
-  1
-  2
-  3
-  4
-  5
-  '''
-
-  """
-  for i in 0..5: echo i
-
-JavaScript tests:
-
-.. code-block:: nim
-
-  discard """
-    targets: "js"
-  """
-  when defined(js):
-    import jsconsole
-    console.log("My Frontend Project")
-
-Compile-time tests:
-
-.. code-block:: nim
-
-  discard """
-    action: "compile"
-  """
-  static: assert 9 == 9, "Compile time assert"
-
-Tests without Spec:
-
-.. code-block:: nim
-
-  assert 1 == 1
-
-
-See also:
-* `Unittest <unittest.html>`_