gawel.org testé et approuvé

Posté le 07/06/2007 sous python

Comme vous le savez peut-être, les données de ce site sont entièrement stockées dans un svn. Perso, éditer des documents dans un éditeur web, ça me saoul.

Bon, ça, c'était bien, mais j'y ai trouvé un autre avantage. En suivant les diverses conférences sur les tests unitaire aux JFP je me suis dis: "Hey, t'es con, tu pourrais tester tout ton site !"

En effet, il m'as suffit d'écrire ce petit bout de code:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import doctest
import unittest
import os
import sys
import glob

import zope.component
import zope.interface

flags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE |
         doctest.REPORT_ONLY_FIRST_FAILURE)

exts = ['.rst','.txt']

def test_suite(args=[]):
    suite = []
    dirname = os.path.dirname(__file__) or '.'

    for root, dirs, files in os.walk(dirname):
        if '/.' in root:
            continue
        for filename in files:
            f,ext = os.path.splitext(filename)
            if ext in exts:
                path = os.path.join(root, filename)
                if not os.path.isfile(path):
                    continue
                locales = dict(template_dir=root)
                suite.append(doctest.DocFileTest(path,
                                     optionflags=flags,
                                     globs=dict(globals(),**locales)))
    return unittest.TestSuite(suite)

if __name__ == '__main__':
    sys.argv[0] = __file__ = 'tests.py'
    unittest.main(defaultTest='test_suite')

Un peu gruik, je l'avoue. Mais ça me permet de tester l'ensemble des exemples écrit en doctest sur ce site. Ceci implique que tout les bouts de code que vous trouverez ici seront 100% valide et à jour:

gawel@cecilia:~/svn/rst% python tests.py
.........................................
----------------------------------------------------------------------
Ran 41 tests in 0.717s

OK

Elle est pas belle la vie ? Même les annonces des AFPyro vont être testées !