Testing LibTracker::Client So you downloaded LibTracker::Client and you even managed to compile it. But all good modules have tests and so does LT::C. What makes LT::C a little different is that it needs a running trackerd to test stuff. And it would want to change some properties on an entry (path) indexed by tracker to test out most of its functionality. If LT::C were a regular old module, we could get around by using Test::MockObject. But it isn't and we can't. Well, we _can_, but it would be pointless. LT::C is essentially an XS wrapper around libtrackerclient, and we would have to bypass the very XS-ish behaviour that we want to test, if we go via the Test::MockObject route. Another option is to mock the libtrackerclient library and build against that, specifically for testing, but communicating with a real trackerd instance is far easier and more real-world. So - here's what the LT::C test interface assumes/expects : $ENV{LTC_TRACKER_RUNNING} : if this is defined, LT::C will try connecting to the trackerd instance. $ENV{LTC_TEST_PATH} : a path which is indexed by tracker. LT::C will try to make (and revert) changes to this, but naturally - tests might fail. It is good to keep this as a test path. If this is not defined, LT::C will skip all tests which require a path. $ENV{LTC_META_FIELD} : A string type metadata field that the test scripts can play with. If this is not defined, the test scripts assume 'File:Other'.