From: Frantisek Sumsal Date: Mon, 14 Feb 2022 19:19:51 +0000 (+0100) Subject: test: set `ReadWritePaths=$BUILD_DIR` when running w/ coverage X-Git-Tag: v251-rc1~292 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b6fc524;p=thirdparty%2Fsystemd.git test: set `ReadWritePaths=$BUILD_DIR` when running w/ coverage otherwise units using `DynamicUser=yes` won't be able to write the coverage stats (currently affecting TEST-20-MAINPIDGAMES). `DynamicUser=yes` implies `ProtectSystem=strict` and `ProtectHome=read-only` and can't be overridden hence we need to utilize `ReadWritePaths=` to work around that. --- diff --git a/test/test-functions b/test/test-functions index 2c13baab048..dbd6371622a 100644 --- a/test/test-functions +++ b/test/test-functions @@ -1163,11 +1163,13 @@ install_systemd() { mkdir "$initdir/etc/systemd/system/user@.service.d/" echo -e "[Service]\nPassEnvironment=SYSTEMD_UNIT_PATH\n" >"$initdir/etc/systemd/system/user@.service.d/override.conf" - # When built with gcov, disable ProtectSystem= and ProtectHome in the test - # images, since it prevents gcov to write the coverage reports (*.gcda files) + # When built with gcov, disable ProtectSystem= and ProtectHome= in the test + # images, since it prevents gcov to write the coverage reports (*.gcda + # files). Similarly, set ReadWritePaths= to the $BUIL_DIR in the test image + # to make the coverage work with units utilizing DynamicUser=yes. if get_bool "$IS_BUILT_WITH_COVERAGE"; then mkdir -p "$initdir/etc/systemd/system/service.d/" - echo -e "[Service]\nProtectSystem=no\nProtectHome=no\n" >"$initdir/etc/systemd/system/service.d/gcov-override.conf" + echo -e "[Service]\nProtectSystem=no\nProtectHome=no\nReadWritePaths=${BUILD_DIR:?}\n" >"$initdir/etc/systemd/system/service.d/gcov-override.conf" fi # If we're built with -Dportabled=false, tests with systemd-analyze