Testing Pugs and Perl 6

This is part of a series of articles I started with Quality Assurance and Automated Testing in Open Source Software.

Pugs is the implementation of Perl 6 in Haskell.

In order to build it one will need the most recent version of ghc (Glasgow Haskell Compiler), currently 6.6.1.

Development and Testing

The developers use Subversion and SVK as version control. The mode of development is very anarchistic as the lead developer puts it. They do a lot of TD - Test first Development, meaning in most cases they write unit tests before implementing features. This provides a very good test coverage of Perl 6 and the Pugs project.

Tests can be found in the t/ subdirectory of the source tree. They are written mostly in Perl 6 with some of them being in Perl 5.

There are more than 100 developers in the project, though most of them are not always active.

Most of the communication is done via an IRC channel. Even the commit messages of the version control system appear on the #perl6 IRC channel.

Building Pugs is simple (once you have Haskell installed):

    $ perl Makefile.PL
    $ make

The test can be executed using

    $ make test

Automated Testing

People can setup and schedule smoke tests freely. They need to have the above environment and also install Test::TAP::HTMLMatrix and then run something like this:

    svn up
    make clean
    perl Makefile.PL
    make smoke

This will run the tests and upload the report to the smoke server. Then people can see the reports on the smoke test status.

There is a file called smoker-example.yml in the util/ subdirectory. Based on that file you can create a smoker.yml either in the Pugs home directory or in your users home directory. This file can contain identification information about you. IMHO it is a good idea to include at least an e-mail here so developers can contact you in case you reports seem to be strange.

As the testing tools and reporting system is very similar, look at Smoked Parrot for more details.

Published on 2007-08-25 by Gabor Szabo