Testing 是否可以使用filecheck来匹配CMAKE项目中另一个文件的值?
我正在处理一个LLVM过程,该过程在运行test.ll文件(在filecheck中由%s表示)时将json文件转储为其输出之一 下面是test.ll文件中的命令Testing 是否可以使用filecheck来匹配CMAKE项目中另一个文件的值?,testing,automated-tests,tdd,llvm,Testing,Automated Tests,Tdd,Llvm,我正在处理一个LLVM过程,该过程在运行test.ll文件(在filecheck中由%s表示)时将json文件转储为其输出之一 下面是test.ll文件中的命令 ; RUN: opt-load %bindir/MY-PASS.so -json-filename output.json -run-my-pass %s -S -disable-output ; RUN: cat output.json | FileCheck %testdir/output-target.json 我的${PROJ
; RUN: opt-load %bindir/MY-PASS.so -json-filename output.json -run-my-pass %s -S -disable-output
; RUN: cat output.json | FileCheck %testdir/output-target.json
我的${PROJ_DIR}/Tests
文件夹有:
文件${PROJ_DIR}/Tests/test.ll
文件${PROJ_DIR}/Tests/output target.json
make check
后,我面临make check找不到output-target.json的问题
make check
能够在${BUILD\u DIR}/Tests/
文件夹中生成output.json
,但无法找到目标文件%testdir/output target.json
,该文件扩展为${BUILD\u DIR}/Tests/output/test.ll.tmpestdir/output target.json
我应该使用与
%testdir
不同的东西吗?您可以使用中预定义的lit
,更具体地说是%p
以及测试源根目录
(请参阅提供的相同URL)配置变量进行测试发现
因此,我通常最后要做的是为cmake
的configure\u file
命令提供lit.cfg.in
模板,以便在build目录中获得lit.cfg
,大致如下:
# aggregate unit test targets under a pseudo-target
add_custom_target(check)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.in" "lit.cfg")
add_custom_target(lit_tests
COMMAND ${PYTHON_EXECUTABLE} -m lit.main "${CMAKE_CURRENT_BINARY_DIR}" -v)
add_dependencies(lit_tests ${TESTEE_LIB})
add_dependencies(check lit_tests)
这还允许我通过在build目录中键入makecheck
来运行lit
测试
然后在我的lit.cfg.in
中添加以下内容:
config.test_source_root = '@CMAKE_CURRENT_SOURCE_DIR@'
config.substitutions.append(('%outputdatadir', "%p/data/output"))
所以在我的例子中,%p
最终成为[项目测试根目录的绝对路径]/data/output
,在这里我保留了测试用例的预期文本输出
最后,在一个特定的测试用例.ll
文件中,我可以使用:
; RUN: diff -w %t %outputdatadir/output-target.json
或者类似的东西。感谢您指出
%p
和替换链接。真的很有帮助。