如何测试SCons修改

时间:2010-06-28 17:46:48

标签: scons

我的团队正在创建一个基于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)

我是否添加了构建器或命令?或其他什么?

1 个答案:

答案 0 :(得分:2)

我认为最好的方法是使用test setup code from SCons itself。这需要SCNS的SVN签出,因为测试文件不随常规SCons tarball一起提供。这可能是可行的,因为团队中的每个人都不会编写工具并在其上运行测试。

例如,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工具编写测试的好例子。

相关问题