Meson:如何 运行 测试依赖于外部进程的?

Meson: How to run tests that depend on an external process?

我正在写一个 meson.build 文件,其中我 运行 几个测试。这些测试需要服务器 运行ning 在端口上才能 运行 成功。

我从这个开始:

exe = executable('tests-client', 'tests-client.c')
test('test-client', suite: 'foo')

运行 我做的测试:

$ meson test --suite foo

为了启动服务器,我 运行 在 test 调用之前编写了一个脚本:

exe = executable('tests-client', 'tests-client.c')
run_command('start-server.sh')
test('test-client', suite: 'foo')

但是,这不起作用,因为 run_script 运行 介子构建时,而不是测试 运行 时。我还尝试 运行 服务器,就好像它是一个测试一样,但尽管它可能有效,但它在语义上是不正确的。

一种可能是编写一个启动服务器并调用作为参数给出的测试的小脚本。然后你可以使用 Meson 的 add_test_setup() 和 kwarg default: true.

add_test_setup('server',                                         
  exe_wrapper: find_program('start-server-before-test.sh'),
  is_default: true,                                                
)