在TCL中执行测试
我对TCL非常陌生,但我正在编写一个脚本,它将搜索一个文件中的测试用例,过滤出带有特定关键字的测试用例,并使用在TCL中执行测试,tcl,Tcl,我对TCL非常陌生,但我正在编写一个脚本,它将搜索一个文件中的测试用例,过滤出带有特定关键字的测试用例,并使用exec运行这些测试。它可以很好地运行第一个测试,但一旦完成,它就开始再次运行同一个测试,并立即失败,导致脚本结束。这就是运行测试的脚本的外观 exec make clean exec make depends set runtests [exec bsub -I -q lin_i make test_run_test_here SEED=1 VPDDUMP=on] set test [
exec
运行这些测试。它可以很好地运行第一个测试,但一旦完成,它就开始再次运行同一个测试,并立即失败,导致脚本结束。这就是运行测试的脚本的外观
exec make clean
exec make depends
set runtests [exec bsub -I -q lin_i make test_run_test_here SEED=1 VPDDUMP=on]
set test [lsearch -all -inline $runtest "TEST COMPLETED SUCCESSFULLY: test_run_test_here"]
puts $test
它在测试中运行良好,但在我收到此消息后
<<Waiting for dispatch ...>>
<<Starting on testserver01>>
while executing
"exec bsub -I -q lin_i make test_run_test_here SEED=1 VPDDUMP=on"
invoked from within
"set runtests [exec bsub -I -q lin_i make test_run_test_here SEED=1 VPDDUMP=on]"
(file "./test.tcl" line 71)
执行时
“exec bsub-I-q lin\u我使测试运行\u测试\u这里SEED=1 VPDDUMP=on”
从内部调用
“设置运行测试[exec bsub-I-q lin\u I make test\u run\u test\u here SEED=1 VPDDUMP=on]”
(文件“/test.tcl”第71行)
如果被调用的命令向stderr输出任何内容,则exec
命令将其视为失败,即使它具有成功的退出状态:
如果任何命令写入其标准错误文件,且该标准错误未重定向且未指定-Ignoresterr,则exec将返回错误
-ignoresterr
选项
set runtests [exec -ignorestderr bsub ...
谢谢你,这正是我所需要的!它看起来很简单,我不知道我怎么会错过它…唯一真正可怕的问题是,当程序都坚持向stderr写入无错误的内容,而不一致地在出错时返回非零退出代码时。这时你必须做一些讨厌的事情,比如把所有东西读入一个字符串,然后用regexps解析它。极坏的值得作为一个bug报告给这样工作的程序的创建者(如果你认为他们会听的话…)