CppUTest TestPlugin changes


I've recently made some very kewl CppUTest changes (at least, I think they are nice). CppUTest has a TestPlugin design. This means that you can write "Plugins" and add them in your main method. The Plugins is called before every setup and after ever teardown (automatically). This enables you to add general checking of things and works especially well with stubbing out some of the OS things.

Let me give some better example. For some embedded project I wrote some MutexPlugin. We stubbed out all the mutex locks and unlocks in the unit tests. Then, instead of doings mutex locks, I'd record the lock plus filename, linenumber (using macro magic and __FILE__ and __LINE__). Then I wrote the MutexPlugin which checks the the records to see if there is no inconsistency (dangling mutex, double locked mutex etc).

Then we'll install the Plugin in the main like this:

MutexPlugin mutexPlugin;
TestRegistry::getCurrentRegistry()->installPlugin(&mutexPlugin);

Now every test you ever write will automatically have mutex consistency checking and will fail automatically if there is something not consistent. Now... this is nothing new, we added this support to CppUTest already some time ago. However, now I added support for command line options to the TestPlugin. So, via command line, you can pass options to your Plugin by the -p option (CppUtest will pass all the -p options to all the installed plugins to see if they know what they mean, if none uses them then it will report an error).

So,  what you can do with this? Well, if we take our MutexPlugin as example, we can add a -pMutexVerbose option to the plugin which will output all the mutex locks and unlocks (again, plus line and file). That's a rather handy debugging and profiling option (especially combined with the -n option to run just one test). I did the same with the MemoryLeak plugin, so that you can dump all the dynamic memory allocations on your screen by just adding a command line option. (didn't check this in yet!)

The TestPlugin code is in souceforge. Some code (related to help options) is still missing, need to add that later.

About this Entry

This page contains a single entry by Bas Vodde published on April 6, 2008 5:42 PM.

Traveling and moving was the previous entry in this blog.

Lean Product and Process Development Exchange - Denver is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.