2010-06-28 7 views
3

Mon équipe crée un système de construction basé sur SCons. Nous avons créé un tas de classes auxiliaires dans notre propre dossier site_scons/site_tools.Comment tester les modifications SCons

Ma tâche consiste à créer et exécuter des tests sur notre code, en utilisant pyunit. Le code de test serait probablement vivre dans un sous-dossier, avec la mise en page du répertoire à la recherche quelque chose comme:

SConstruct 
our_source_code/ 
    Sconscript 
site_scons/ 
    site_tools/ 
     a.py 
     b.py 
     c.py 
     tests/ 
      test_a.py 
      test_b.py 
      test_c.py 

Maintenant, ma question est: Quelle est la meilleure façon d'invoquer nos tests, étant donné qu'ils auront probablement besoin de l'environnement SCons correct ensemble en haut? (c'est-à-dire a.py utilise SCons.Environment)

Est-ce que j'ajoute un générateur ou une commande? Ou autre chose?

Répondre

2

Je pense que la meilleure approche serait d'utiliser le test setup code from SCons itself. Cela nécessite une extraction SVN de SCons, car les fichiers de test ne sont pas fournis avec les fichiers tar SCons standard. C'est probablement réalisable, car tout le monde dans votre équipe ne serait pas écrire des outils et des tests sur eux.

Par exemple, this is the test for javac. Fondamentalement, vous écrivez les fichiers que vous voulez, exécutez un SConstruct, puis vérifiez les résultats sont ce que vous attendiez. Vous pouvez simuler des outils avec des scripts Python, pour vous assurer qu'ils sont vraiment appelés avec les drapeaux et les fichiers que vous attendez. Par exemple:

import TestSCons 
test = TestSCons.TestSCons() 
test.write('SConstruct', '''env = Environment(tools = ["yourtool"]) 
env.RunYourTool()''') 

test.write('sourcefile.x', 'Content goes here') 
test.run(arguments = '.', stderr = None) 

test.must_match('outputfile', 'desired contents') 
test.pass_test() 

Il y a aussi plus d'instructions sur les outils d'écriture des tests sur le swtoolkit wiki, ce qui est une SCons apparemment défunte l'extension de Google. L'information sur le wiki est toujours utile, et il y a de bons exemples sur la façon d'écrire des tests pour les outils personnalisés de SCons.

+0

Joli lien, merci. Nous sommes très tôt dans le développement, donc l'idée serait d'intégrer nos "tests de scons" dans la construction régulière de l'intégration continue, donc malheureusement tout le monde doit être capable de faire les tests. – Justicle

+0

Eh bien, pas tout le monde - le développeur de l'outil + build machine. – richq

+0

Le premier lien est rompu: 'Unknown location: trunk/QMTest/TestSCons.py' – Sardathrion