TEST(1)                           Test Manual                          TEST(1)

NAME
       test - run tests for my_project

SYNOPSIS
       test [COMMAND] …

DESCRIPTION
       This is the program built for running and managing the tests for this
       project, my_project. It revolves around 3 main subcommands: 'run',
       'status', and 'approve'. Use the 'status' subcommand to check the
       status of each test without having to re-run them. 'approve' must be
       used on tests whose output is captured so as to make their latest
       output the new reference.

       This test program was configured to store the temporary results in
       "_build/testo/status/my_project" and the expected test output in the
       persistent folder "tests/snapshots/my_project". The latter should be
       kept under version control (git or similar).

       Visit https://testocaml.net/ to learn how to create and manage test
       suites with Testo.

COMMANDS
       approve [OPTION]…
           approve new test output

       run [OPTION]…
           run the tests

       show-tags [OPTION]…
           show the list of valid tags for this test suite

       status [OPTION]…
           show test status

OPTIONS
       --autoclean
           Remove test snapshots that don't match any test.

       --debug
           Log information that can be useful for debugging the Testo library.

       -e KEY=VALUE, --env=KEY=VALUE
           Pass  a key/value pair to the function that creates the test suite.
           KEY   must   be   an   alphanumeric   identifier   of   the    form
           [A-Za-z_][A-Za-z_0-9]*. VALUE can be any string. This mechanism for
           passing  arbitrary runtime settings to the test suite is offered as
           a safer alternative to  environment  variables.  Multiple  -e/--env
           options  are  supported  in  the  same  command,  each defining one
           key/value pair.

       --expert
           Assume the user is familiar with Testo and don't show non-essential
           messages or tips targeted at new users.

       -j NUM, --jobs=NUM
           Specify the number of jobs to run in  parallel.  By  default,  this
           value  is  set  to the number of CPUs detected on the machine. Both
           '-j0' and '-j1' ensure sequential, non-overlapping execution of the
           tests. Unlike '-j1',  '-j0'  will  not  create  a  separate  worker
           process  to  run  the  tests. The default can be changed by passing
           '~default_workers' to the  OCaml  function  'Testo.interpret_argv'.
           NOTE: Parallel executation of tests is not stable on Windows.

       --lazy
           Run only the tests that were not previously successful.

       --max-inline-log-bytes=LIMIT (absent=1000000)
           When  displaying  logs (unchecked stdout or stderr output), show at
           most that many bytes for each test. The default  limit  is  1000000
           bytes. To remove the default limit, specify 'unlimited'.

       -s SUBSTRING, --filter-substring=SUBSTRING
           Select  tests  whose  description contains SUBSTRING. Multiple '-s'
           search queries can be specified in which  case  only  one  of  them
           needs to match.

       --slice=NUM/NUM_SLICES
           Divide  the  test  suite into NUM_SLICES and work on slice NUM only
           (1-based). For example, '1/4' is the first of four slices and '4/4'
           is the last one. If multiple '--slice' options are specified,  they
           are  applied sequentially from left to right. If the original suite
           defines 23 tests,  '--slice  2/4'  selects  tests  [7,8,9,10,11,12]
           (1-based).  If  additionally '--slice 1/3' is specified after it on
           the same command line, the remaining  tests  will  be  [7,8].  This
           filter  is  meant  for  running  tests in parallel, possibly across
           multiple hosts. It is applied after any  other  filters  to  as  to
           divide the work more evenly.

       --strict
           Treat  broken  tests  as  ordinary tests. This disables the default
           behavior of ignoring failing tests that were marked  as  broken  by
           the  programmer  when  determining  the overall success of the test
           run.

       -t QUERY, --filter-tag=QUERY
           Select tests whose tags match QUERY. Filtering by tag is  generally
           more  robust  than  selecting tests by text contained in their name
           with '-s'. QUERY is a boolean  query  combining  tags  with  'and',
           'or',  'not',  and  parentheses  using  the usual precedence rules.
           Tag-like  selectors  'all'  and  'none'  are  also  supported.  For
           example,  '(foo  or bar) and not e2e' will select any test with the
           tag 'foo' or the tag 'bar' but not if it has  the  tag  'e2e'.  Run
           './test  show-tags' to see the list of tags defined for the current
           test suite.

       --test-list-checksum=STR
           Internal use only. This is a checksum used to check that  the  list
           of  tests  generated  in  a worker is the same as the list of tests
           generated by the master.

       -v, --verbose
           Print more details than by default. Currently, this  is  equivalent
           to  '--show-output'  but it may be extended in the future to bundle
           up more options.

       -w, --show-output
           Show the output of all tests rather than only showing the output of
           the failed tests. This excludes  the  output  (stdout,  stderr,  or
           both)  that  may  be  captured  explicitly  to  be compared against
           expectations.

       --worker
           Internal option used to launch a parallel worker.

COMMON OPTIONS
       --help[=FMT] (default=auto)
           Show this help in format FMT. The value FMT must be  one  of  auto,
           pager,  groff  or  plain.  With  auto, the format is pager or plain
           whenever the TERM env var is dumb or undefined.

EXIT STATUS
       test exits with:

       0   on success.

       123 on indiscriminate errors reported on standard error.

       124 on command line parsing errors.

       125 on unexpected internal errors (bugs).

Test                                                                   TEST(1)