This patch add a README file in reStructuredText format and a Makefile to
build a PDF and HTML manual from it. A test target is included too to
compile and run the samples.
Remove nm's -p switch so alphabetic order is used to get the test suite
symbols (test cases and initialization/termination functions). This way
execution order can be deterministic.
This patch add some C++ support by catching exceptions in mu_check() and
mu_ensure() macros (when compiled with a C++ compiler, of course). In
addition to this, it adds 2 new macros for checking that some expression
throws a particular exception: mu_echeck() and mu_eensure().
A sample test suite for the new features is added too.
Implement test suite initialization and termination
This patch adds test suite initialization and termination support to both
C/bash and Python implementations.
Any exported function in a test suite that starts with "mu_init" is used
as an initialization function (returning 0 if the initialization
succeeded) and any function starting with "mu_term" is used as
a termination function. If initialization fails (any initialization
funtion fails), the test suite is skipped.
This makes easier to improve the tester code, without having to code it as
a shell script embedded string. Now the only generated code is the one
that runs the test suites. You can also implement your own test suites
execution function; just write it in a separated C module and don't use
the mkmutest generator.
A new implementation is added. This implementation is dynamic. Test suites
must be compiled as dynamically linked shared objects (.so) and a Python
program (using ctypes module) inspects the shared objects, looking for
test cases, running them and collecting statistics.
The advantage of this implementation is that test suites are completely
isolated, name clashes between test suites can't be possible. The testing
program is completely decoupled from the test suites, and is less
"hackish", in the sense that no code-generation is needed. You compile
your test suites as shared object, and run the tester on them, that's it.
Is much easier to extend too, since is implemented in Python.
The downside is that the test suites are less "debuggeable", you can't
easily plug a gdb to see what's going on there (AFAIK). tmp