Greg regression testing framework --------------------------------- Greg is a framework for testing other programs and libraries - it's a replacement for DejaGNU that lets you use the `Guile' programming language to write testcases, rather than having to deal with `TcL' Its purpose is to provide a single front end for all tests and to be a small, simple framework for writing tests. Greg leverages off the Guile language to provide all the power (and more) of other test frameworks with greater simplicity and ease of use. The simplicity of the Greg framework makes it easy to write tests for any program, but it was specifically written for use with GNUstep-Guile to permit direct testing of the GNUstep (see http://www.gnustep.org/) libraries without the necessity to run a separate driver program. The core functionality of Greg is a Guile module which can be loaded into any software with an embedded Guile interpreter. Any program which uses Guile as it's scripting language can therefore use Greg to test itself directly! For testing external programs, Greg provides a compiled module that may be dynamically linked into Guile to permit you to run an application as a child process on a pseudo-terminal. In conjunction with the standard Guile `expect' module, this lets you test terminal-based programs. Also provided is `greg' - a Guile script to invoke the Greg test framework in much the same way that `runtest' is used in DejaGNU. All tests have the same output format (enforced by the `greg-testcase' procedure). Greg's output is designed to be both readable and readily parsed by other software, so that it can be used as input to customised testing processes. Greg provides most of the functionality of DejaGNU but is rather simpler. It omits specific support for cross-platform/remote testing since this is really rather trivial to add where required and tends to vary from site to site so much that an attempt at a generic solution is pretty pointless. What Greg does do, is provide hooks to let you easily introduce site specific code for handling those sorts of situations.