[geeklog-devel] Introducing Geeklog Unit Tests and Continuous Integration

Tom websitemaster at cogeco.net
Mon Aug 16 10:39:40 EDT 2010

Thanks for the info Dirk.

When I get some time in the next week or so I will check it out and create a
few tests.


-----Original Message-----
From: geeklog-devel-bounces at lists.geeklog.net
[mailto:geeklog-devel-bounces at lists.geeklog.net] On Behalf Of Dirk Haun
Sent: August-14-10 9:13 AM
To: Geeklog Development
Subject: [geeklog-devel] Introducing Geeklog Unit Tests and Continuous

We have quite the backlog of GSoC projects that we still have to integrate
into Geeklog or otherwise adopt. So it's my pleasure to announce that a
project from GSoC 2009 has quietly been put into use:

Sean Clark developed a unit test framework for Geeklog, based on PHPUnit and
with its own GUI.

The plan was to set it up to run automatically on one of our servers so that
the tests would be run for every new commit to the Geeklog repository (aka
Continuous Integration). Well, we (i.e. mostly: I) never got it to work in
the somewhat restricted environment on our servers and so it was put aside.
A few weeks ago, I decided to give it another go, this time using a tool
that I'm more familiar with: Hudson.

Hudson is now running on <http://project.geeklog.net:8080/>, monitoring the
Geeklog repository and running the unit test framework for every commit.

Right now, it's only running some 200 unit tests, mostly for the files in
system/classes and lib-mbyte.php. Sean also wrote some tests for
lib-common.php, including the infrastructure to use an XML database instead
of the real one. I haven't set that part up yet but will do so at a later
point (after FrOSCon).

What does this all mean? As a Geeklog developer, your commit will now be run
against a set of unit tests. If you make a change to one of the files under
test, you may very well break a test - in which case you should look into
the problem and fix it. I haven't set up Hudson to send out emails yet, but
there are a couple of RSS feeds that you can subscribe to to stay informed.

200 tests doesn't sound like much. But hey, that's 200 more than we had
until now. That's also 200 fewer cases where we could accidentally break
something without noticing it. Once we get into the habit of adding tests
for changes or new functionality that we introduce, that number will
steadily go up, covering more and more of Geeklog's code.

So, I'd like to encourage people to write new unit tests. Personally, I find
writing unit test quite enjoyable. They're usually just a couple of lines,
so you can easily crank out a few at a time. Even if you don't find any
bugs[1] in the code you're testing, it's very satisfying to see the total
number of tests go up and to know that you did something to improve the
overall quality of Geeklog.

To get started, you need the unit test framework project:


Installation instructions are included. Note that you don't need Hudson! You
can run the tests from the command line or use the included GUI. Next, read
Sean's introduction:


Run a few tests. Review some of the existing ones. Try to think of tests to
add (for an existing test class or start a new one). Happy testing!

bye, Dirk


geeklog-devel mailing list
geeklog-devel at lists.geeklog.net

__________ Information from ESET NOD32 Antivirus, version of virus signature
database 5366 (20100814) __________

The message was checked by ESET NOD32 Antivirus.



__________ Information from ESET NOD32 Antivirus, version of virus signature
database 5370 (20100816) __________

The message was checked by ESET NOD32 Antivirus.


More information about the geeklog-devel mailing list