如何测试SCons修改

3

我的团队正在基于SCons创建一个构建系统。我们在自己的site_scons/site_tools文件夹中创建了一堆辅助类。

我的任务是使用pyunit创建和运行我们代码的测试。测试代码可能位于子文件夹中,目录结构看起来像这样:

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

现在我的问题是:鉴于测试很可能需要正确的SCons环境设置(即a.py使用SCons.Environment),那么调用我们的测试的最佳方式是什么?我应该添加一个Builder还是一个Command?还是其他什么东西?
1个回答

2
我认为最好的方法是使用SCons自身的测试设置代码test setup code from SCons itself。这需要进行SCons的SVN检出,因为测试文件没有随常规SCons tarballs一起提供。这可能是可行的,因为并非您团队中的每个人都会编写工具并对其运行测试。
例如,this is the test for javac。基本上,您编写要使用的文件,运行SConstruct,然后检查结果是否符合预期。您可以使用Python脚本模拟工具,以确保它们确实使用了您期望的标志和文件。例如:
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()

swtoolkit wiki上还有更多关于编写SCons工具测试的指令,该维基似乎是Google的一个已经不再更新的SCons扩展。该维基上的信息仍然很有用,并且有一些很好的示例可以用来编写自定义SCons工具的测试。


好链接,谢谢。我们的开发还处于早期阶段,所以想法是将我们的“scons测试”集成到常规的持续集成构建中,因此不幸的是每个人都必须能够运行测试。 - Justicle
并非所有人都可以访问该工具和构建机器,只有开发者才能。 - richq
第一个链接已经失效:未知位置:trunk/QMTest/TestSCons.py - Sardathrion - against SE abuse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接