【问题标题】:How to test SCons modifications如何测试 SCons 修改
【发布时间】:2011-03-09 06:24:27
【问题描述】:

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

我是添加构建器还是命令?还是别的什么?

【问题讨论】:

    标签: scons


    【解决方案1】:

    我认为最好的方法是使用test setup code from SCons itself。这需要对 SCons 进行 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 扩展。 wiki 上的信息仍然有用,并且有一些关于如何为自定义 SCons 工具编写测试的很好的示例。

    【讨论】:

    • 不错的链接,谢谢。我们处于开发的早期阶段,因此我们的想法是将我们的“scons 测试”集成到常规的持续集成构建中,所以不幸的是每个人都必须能够运行测试。
    • 好吧,不是所有人——工具+构建机器的开发者。
    • 第一个链接坏了:Unknown location: trunk/QMTest/TestSCons.py
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2010-11-29
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多