LLVM LIT:是否可以将用户定义的参数传递到测试脚本中?

LLVM LIT: Is it possible to pass user defined parameter into a test script?

有人知道如何参数化 llvm-lit 脚本吗?我需要将一些环境变量值传递到脚本中,以便在某些工具的命令行中使用它。

例如,测试脚本可以包含以下行:

// RUN: some-tool $SOME_ENV_VAR 

我需要以某种方式传递 SOME_ENV_VAR 值。

根据 llvm-lit 的 documentation,有一个选项 -D--param,但是不清楚如何在脚本中访问此用户定义的参数。

提前致谢。

如果您能够修改 lit.cfg 脚本(或用于生成配置的脚本),您可以在那里使用 Python 的所有灵活性。例如,您可以添加:

some_var = os.environ.get('SOME_ENV_VAR', '')

然后你可以添加查找替换元组:

config.substitutions.append(('%some_var', some_var))

现在,只要 %some_var 出现在 运行 行中,lit 就会替换环境变量的值,因为它是您的测试套件开始时的值。

Eric 的解决方案是有效的,我一直在我的 macOS 和 Linux 项目中使用它,直到我遇到传递环境变量在 Windows 上不起作用。

一种更便携的解决方案是使用 Lit 自己的 -D/--params 选项:

-D NAME[=VALUE], --param NAME[=VALUE]

Add a user defined parameter NAME with the given VALUE (or the empty string if not given). The meaning and use of these parameters is test suite dependent.

示例:lit ... --param SOME_VAR=Foo ...

lit.cfg中可以通过lit_config全局变量访问参数如下:

some_var = lit_config.params['SOME_VAR']
config.substitutions.append(('%some_var', some_var))

然后在你的测试中,你可以使用%some_var

我回答的背景:我使用 GitHub Actions(GitHub 的 CI 解决方案)在其 Windows 机器上运行 PowerShell 并且不支持PowerShell 中的环境变量。