是否可以使用 filecheck 来匹配 CMAKE 项目中另一个文件的值?
Is it possible to use filecheck to match values from another file inside a CMAKE project?
我正在处理一个 LLVM pass,当 运行 超过 test.ll 文件(在 filecheck 中由 %s 表示)
这是我的 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_DIR}/Tests
文件夹有:
${PROJ_DIR}/Tests/test.ll
文件
${PROJ_DIR}/Tests/output-target.json
文件
在 ${BUILD_DIR} 文件夹和 运行ning make check
上使用 CMAKE 配置我的项目后,我遇到了 make check 找不到输出的问题-target.json
make check
能够在 ${BUILD_DIR}/Tests/
文件夹中生成 output.json
,但无法找到扩展为 ${BUILD_DIR}/Tests/Output/test.ll.tmpestdir/output-target.json
[的目标文件 %testdir/output-target.json
我应该使用不同于 %testdir
的东西吗?
您可以在 lit
中使用预定义的 substitutions,更具体地说,%p
与 test_source_root
(参见相同的 URL 提供的配置)用于测试发现的变量。
所以,我通常最后做的是为 cmake
的 configure_file
命令提供一个 lit.cfg.in
模板,以便在构建目录,类似于:
# 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)
这也允许我通过在构建目录中键入 make check
来 运行 lit
测试。
然后在我的 lit.cfg.in
中添加:
config.test_source_root = '@CMAKE_CURRENT_SOURCE_DIR@'
config.substitutions.append(('%outputdatadir', "%p/data/output"))
所以在我的例子中,%p
最终变成了 [absolute-path-to-project-test-root-dir]/data/output
,我保留了测试用例的预期文本输出。
终于在一个特定的测试用例中 .ll
我可以使用的文件:
; RUN: diff -w %t %outputdatadir/output-target.json
或类似的东西。
我正在处理一个 LLVM pass,当 运行 超过 test.ll 文件(在 filecheck 中由 %s 表示)
这是我的 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_DIR}/Tests
文件夹有:
${PROJ_DIR}/Tests/test.ll
文件${PROJ_DIR}/Tests/output-target.json
文件
在 ${BUILD_DIR} 文件夹和 运行ning make check
上使用 CMAKE 配置我的项目后,我遇到了 make check 找不到输出的问题-target.json
make check
能够在 ${BUILD_DIR}/Tests/
文件夹中生成 output.json
,但无法找到扩展为 ${BUILD_DIR}/Tests/Output/test.ll.tmpestdir/output-target.json
[的目标文件 %testdir/output-target.json
我应该使用不同于 %testdir
的东西吗?
您可以在 lit
中使用预定义的 substitutions,更具体地说,%p
与 test_source_root
(参见相同的 URL 提供的配置)用于测试发现的变量。
所以,我通常最后做的是为 cmake
的 configure_file
命令提供一个 lit.cfg.in
模板,以便在构建目录,类似于:
# 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)
这也允许我通过在构建目录中键入 make check
来 运行 lit
测试。
然后在我的 lit.cfg.in
中添加:
config.test_source_root = '@CMAKE_CURRENT_SOURCE_DIR@'
config.substitutions.append(('%outputdatadir', "%p/data/output"))
所以在我的例子中,%p
最终变成了 [absolute-path-to-project-test-root-dir]/data/output
,我保留了测试用例的预期文本输出。
终于在一个特定的测试用例中 .ll
我可以使用的文件:
; RUN: diff -w %t %outputdatadir/output-target.json
或类似的东西。