From: Yu Watanabe Date: Mon, 6 Jan 2025 10:16:23 +0000 (+0900) Subject: test: add test cases for parsing SYSTEMD_WANTS=/SYSTEMD_USER_WANTS= X-Git-Tag: v258-rc1~1517^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4c9da4dc91c6f875683a6c9fc00df19686f242cc;p=thirdparty%2Fsystemd.git test: add test cases for parsing SYSTEMD_WANTS=/SYSTEMD_USER_WANTS= --- diff --git a/src/test/test-extract-word.c b/src/test/test-extract-word.c index 1bc4088fb42..4c18a45231b 100644 --- a/src/test/test-extract-word.c +++ b/src/test/test-extract-word.c @@ -547,6 +547,49 @@ TEST(extract_first_word) { ASSERT_STREQ(t, "가너도루"); free(t); assert_se(isempty(p)); + + /* For issue #16735. */ + p = "test1@foo\\x2dbar\\x2dbaz.service test2@aaa\\x2dbbb\\x2dccc.service test3@escaped-path-like-data.service test4@/pure/path/like/data.service"; + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE)); + ASSERT_STREQ(t, "test1@foox2dbarx2dbaz.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE)); + ASSERT_STREQ(t, "test2@aaax2dbbbx2dccc.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE)); + ASSERT_STREQ(t, "test3@escaped-path-like-data.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE)); + ASSERT_STREQ(t, "test4@/pure/path/like/data.service"); + free(t); + + p = "test1@foo\\x2dbar\\x2dbaz.service test2@aaa\\x2dbbb\\x2dccc.service test3@escaped-path-like-data.service test4@/pure/path/like/data.service"; + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_RETAIN_ESCAPE)); + ASSERT_STREQ(t, "test1@foo\\x2dbar\\x2dbaz.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_RETAIN_ESCAPE)); + ASSERT_STREQ(t, "test2@aaa\\x2dbbb\\x2dccc.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_RETAIN_ESCAPE)); + ASSERT_STREQ(t, "test3@escaped-path-like-data.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_RETAIN_ESCAPE)); + ASSERT_STREQ(t, "test4@/pure/path/like/data.service"); + free(t); + + p = "test1@foo\\x2dbar\\x2dbaz.service test2@aaa\\x2dbbb\\x2dccc.service test3@escaped-path-like-data.service test4@/pure/path/like/data.service"; + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_CUNESCAPE)); + ASSERT_STREQ(t, "test1@foo-bar-baz.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_CUNESCAPE)); + ASSERT_STREQ(t, "test2@aaa-bbb-ccc.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_CUNESCAPE)); + ASSERT_STREQ(t, "test3@escaped-path-like-data.service"); + free(t); + ASSERT_OK_POSITIVE(extract_first_word(&p, &t, NULL, EXTRACT_UNQUOTE | EXTRACT_CUNESCAPE)); + ASSERT_STREQ(t, "test4@/pure/path/like/data.service"); + free(t); } TEST(extract_first_word_and_warn) { diff --git a/test/units/TEST-17-UDEV.SYSTEMD_WANTS-escape.sh b/test/units/TEST-17-UDEV.SYSTEMD_WANTS-escape.sh new file mode 100755 index 00000000000..709161aa64f --- /dev/null +++ b/test/units/TEST-17-UDEV.SYSTEMD_WANTS-escape.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +# shellcheck disable=SC2317 +set -ex +set -o pipefail + +# shellcheck source=test/units/util.sh +. "$(dirname "$0")"/util.sh + +# This is a test case for #16735. + +IFNAME=test-netif-foo + +at_exit() { + set +e + + rm -f /tmp/output-i /tmp/output-I + + rm -rf /run/udev/rules.d/ + udevadm control --reload + + rm -f /run/systemd/system/test@.service + systemctl daemon-reload + + ip link del "$IFNAME" +} + +trap at_exit EXIT + +udevadm settle --timeout 30 + +mkdir -p /run/systemd/system/ +cat >/run/systemd/system/test@.service </tmp/output-i; echo "I=/%I" >/tmp/output-I' +RemainAfterExit=yes +EOF + +systemctl daemon-reload + +mkdir -p /run/udev/rules.d/ +cat >/run/udev/rules.d/99-testsuite.rules <