On 03.12.24 17:01, Andres Freund wrote:
Hi,
On 2024-12-02 11:10:56 +0100, Peter Eisentraut wrote:
I have noticed that under meson many tests don't have dependencies on the
build artifacts that they are testing. As an example among many, if you
make a source code change in contrib/cube/cube.c (see patch 0001 for a demo)
and then run
make -C contrib/cube check
the test run will reflect the changed code, because the "check" targets
typically depend on the "all" targets. But if you do this under meson with
meson test -C build --suite setup --suite cube
the code will not be rebuilt first, and the test run will not reflect the
changed code.
That's unfortunately a very partial fix - because we insist on tests being run
against a temporary install, we don't just need to rebuild the code, we also
need to re-install it. Without that you don't, e.g., see server changes.
Right, I was willing to accept that as a compromise, but see below.
However, it looks like the tmp_install test *does* miss dependencies too and I
see no reason to not fix that.
diff --git i/meson.build w/meson.build
index ff3848b1d85..55b751a0c6b 100644
--- i/meson.build
+++ w/meson.build
@@ -3263,6 +3263,7 @@ test('tmp_install',
priority: setup_tests_priority,
timeout: 300,
is_parallel: false,
+ depends: all_built,
suite: ['setup'])
test('install_test_files',
Yes, that addresses my cube example.
But it doesn't address the test_json_parser example, because in that
case the test executables are not installed. So in that case we still
need to manually add the dependencies. But those are only a few cases
(maybe just test_json_parser and libpq_pipeline).