SYNOPSIS

       testme
           --chdir dir
           --clean
           --clobber
           --compile
           --continue
           --debug
           --depth level
           --ide
           --log logSpec
           --noserver
           --projects
           --quiet
           --rebuild
           --show
           --trace traceSpec
           --version
           --verbose
           --why
           [filters ...]


DESCRIPTION

       TestMe is a dynamic unit test runner. It will traverse a directory tree
       and automatically build required unit tests and run them with output to
       the console.


       Unit tests are stand-alone programs that have a '.tst' extension after
       the normal file extension. For example, a C unit test file would be named
       'file.c.tst', while an Ejscript unit test file would be named
       'file.es.tst' and a shell script test would be named 'file.sh.tst'.


       Test parameters are passed to unit tests as environment strings with a
       'TM_' prefix.  Unit tests emit results to their standard output and are
       captured by TestMe.  Unit tests emit results via a 'pass' or 'fail'
       command depending on the test results.  Unit tests can control the
       subsequent execution of tests via a 'skip' command and can write output
       to the TestMe console via a 'write' command.  Unit tests can define
       values in the environment for subsequent tests by emitting a 'set'
       command (see below).


       TestMe will automatically compile and recompile C unit tests as required.
       Ejscript unit tests can be run directly without recompilation.



OPERATION

       When TestMe is invoked, testme traverses the current directory tree
       looking for unit test files.  At each directory level, it first runs any
       setup test files that have a '*.set' extension. The purpose of setup


       When all is ready, TestMe will run all unit tests with a '*.tst'
       extension. For subdirectories, TestMe will recurse and run unit tests in
       those subdirectories. The aggregated environment is passed down to unit
       tests in subdirectories.  Note that if a unit tests uses the 'set'
       command to define a key value in the environment, it will only be passed
       to unit tests at that directory level or below.



TEST ENVIRONMENT

       TestMe communicates test parameters to unit tests via the environment.

             TM_INB      -- Set to the local binary directory.
             TM_DEBUG    -- Set if testme invoked with --debug. Run in debug
            mode.
             TM_DEPTH    -- Set to the test depth instructed via --depth.
             TM_DIR      -- Set to the directory containing the test.
             TM_NOSERVER -- Set if testme invoked with --noserver. Do not run
            server-side programs.
             TM_OUT      -- Set to the build output configuration directory.
             TM_PHASE    -- Set to 'Setup', 'Finalize' or 'Test'.
             TM_TOP      -- Set to the top directory for the project.
             TM_*        -- All defines in the me.h are converted to TM_
            defines.


TEST OUTPUT

       A unit test should emit results to the standard out. The following
       commands are supported.

             fail reason ...
             info message ...
             pass
             set key value
             skip reason ...
             write message ...

       A 'fail' command will typically terminate a test run unless testme is
       invoked with --continue.  A 'pass' command will be counted and if no
       'fail' commands are emitted by the unit test, the unit test will be
       PASSED.  An 'info' command will echo information message to the testme
       output. A 'write' message will write raw messages to the testme output. A
       'set' command will define a key in the environment that is passed to
       subsequent unit tests. The 'skip' command will cause all subsequent unit
       tests in or below the current directory to be skipped.



TESTME UNIT TEST C API

       The follow C API is supported for C unit tests.

             bool  ttrue(expression);
             bool  tfalse(expression);
              Clean the contents of all generated 'testme' directories.


       --clobber
              Remove all generated 'testme' directories.


       --compile
              Compile required C unit tests but do not run. Use --rebuild to
              force a recompile regardless of whether the unit test file has
              been updated or not.


       --continue
              Continue to run tests despite any previous errors. Normal
              operation is to stop testing if any tests fail.


       --debug
              Run in debug mode. Sets TM_DEBUG in the environment.


       --depth level
              Set the unit test depth level.


       --ide  Run the specified test in an IDE debugger. Supported on Mac OSX
              only.


       --log logName[:logLevel]
              Specify a file to log test messages. TestMe will normally display
              test output to the console. The --log option will redirect this
              output to the specified log file. The log level specifies the
              desired verbosity of output. Level 0 is the least verbose and
              level 5 is the most.


       --noserver
              Do not run server side support code. This emits TM_NOSERVER into
              the environment for unit tests.

              --projects Generate IDE projects for the specified unit tests. At
              least one test must be specified by name on the command line.  The
              IDE projects are generated in the 'testme' directory.


       --quiet
              Run in quiet mode without trace.


       --rebuild


       --verbose
              Run in verbose mode with more trace about TestMe activities.


       --why  Display why various tests were run or not and why actions were
              taken.



REPORTING BUGS

       Report bugs to dev@embedthis.com.


COPYRIGHT

       Copyright © Embedthis Software. TestMe and Ejscript are a trademarks of
       Embedthis Software.


SEE ALSO

       me pak



testme                            January 2014                         TESTME(1)

Man(1) output converted with man2html