2012-05-30 59 views

回答

3

如果你需要分析外部应用程序的返回代码(如果你打电话测试,例如),您需要使用Command()+ python子流程模块。 如果您仅使用Command,则无法获取应用程序的返回代码。

例如:

if 'test' in COMMAND_LINE_TARGETS: 
    runTestsCmd = env.Command('runTests', None, Action(runTests, "Running tests")) 
    AlwaysBuild(runTestsCmd) 
    Alias('test', runTestsCmd) 

runTests功能例如:

def runTests(target = None, source = None, env = None) : 
    # fill args 
    retCode = subprocess.call(args, env = env['ENV'], cwd = cwd, shell = True) 
    Exit(retCode) 

此外,您还可以runTestsCmd设置额外的依赖。

Depends(runTestsCmd, [appAndLibsToBuild]) 
1

我不知道鼻子的框架,但也有执行与SCons的外部应用程序两种方式(还有其他的方式与Python做到这一点,但没有必要提及那些)如下:

  • Execute () - 总是执行,而分析SConscript文件
  • Command() - 就像一个目标,只有执行根据其依赖

我想你可能需要使用命令()选项ONL如果其中一个相关依赖项发生变化,则启动单元测试。

关于目录列表,那么你可以使用一些Python编程,就像这样:

dirs = ['dir1', 'dir2', 'dir3'] 
for dir in dirs: 
    cmd = 'theScriptToExecute $SOURCE $TARGET' 
    env.Command(target = 'whatever', source = dir, action = cmd)