http://www.logilab.org/image/20439?vid=download

What is apycot

apycot is a highly extensible test automatization tool used for Continuous Integration. It can:

  • download the project from a version controlled repository (like SVN or Hg);
  • install it from scratch with all dependencies;
  • run various checkers;
  • store the results in a CubicWeb database;
  • post-process the results;
  • display the results in various format (html, xml, pdf, mail, RSS...);
  • repeat the whole procedure with various configurations;
  • get triggered by new changesets or run periodically.

For an example, take a look at the "test reports" tab of the logilab-common project.

Setting up an apycot for Mercurial

During the mercurial sprint, we set up a proof-of-concept environment running six different checkers:

  • Check syntax of all python files.
  • Check syntax of all documentation files.
  • Run pylint on the mercurial source code with the mercurial pylintrc.
  • Run the check-code.py script included in mercurial checking style and python errors
  • Run the Mercurial's test suite.
  • Run Mercurial's benchmark on a reference repository.

The first three checkers, shipped with apycot, were set up quickly. The last three are mercurial specific and required few additional tweaks to be integrated to apycot.

The bot was setup to run with all public mercurial repositories. Five checkers immediately proved useful as they pointed out some errors or warnings (on some rarely used contrib files it even found a syntax error).

Prospectives

A public instance is being set up. It will provide features that the community is looking forward to:

  • testing all python versions;
  • running pure python or the C variant;
  • code coverage of the test suite;
  • performance history.

Conclusion

apycot proved to be highly flexible and could quickly be adapted to Mercurial's test suite even for people new to apycot. The advantages of continuously running different long running tests is obvious. So apycot seems to be a very valuable tool for improving the software development process.

blog entry of

Logilab.org - en