在scons中,我试图建立一个UnitTest系统(见下面的代码),基于这里的一个很好的例子:http://spacepants.org/blog/scons-unit-test
然而,由于最近的scons 2.0.1及更新版本中存在问题,这会产生依赖性循环,如下所述:http://old.nabble.com/AddPostAction-executes-on-first-build-but-not-subsequent- td18360675.html(和其他地方).
有谁知道这个问题的良好解决方案或替代解决方案?
码:
def UnitTest(env, target, source, **kwargs):
curTest = env.Program(target, source, **kwargs)
env.AddPostAction(curTest, curTest[0].abspath)
env.Alias('unit_tests', curTest)
env.AlwaysBuild(curTest)
return curTest
SConsEnvironment.UnitTest = UnitTest
mandolineTest = env.UnitTest(target='./codeTest',
source = mix(['test.cc', 'base.cc'),
LIBS = default_libs + ['bgl',],
LIBPATH = default_libs_path,
CPPPATH = default_includes )
Run Code Online (Sandbox Code Playgroud)
我找到了解决这个问题的方法.通过使用:
env.AddPostAction(curTest, curTest[0].abspath)
Run Code Online (Sandbox Code Playgroud)
似乎SCons试图变得聪明并为curTest[0].abspath自己添加构建依赖,导致这种循环依赖问题.解决方案是从SCons"隐藏"命令的执行,这样就无法弄清楚你在做什么:
env.AddPostAction(curTest, lambda *_, **__: os.system(curTest[0].abspath))
Run Code Online (Sandbox Code Playgroud)
对于我的单元测试系统(与您的系统略有不同但有相同的问题),这可以在任何依赖项发生变化时运行单元测试,如果没有任何相关变化则不运行单元测试.
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |