From 1e902c3463024bb328bf0d01a5d58a69e1ccf739 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 26 Jan 2024 00:22:38 +0000 Subject: [PATCH 1/2] test: unset TZ before timezone-sensitive unit tests are run Some tests have hard-coded results that need to match, and change if the caller has a timezone set via the TZ= environment variable, as it is the case during reproducible build tests. Unset it. --- src/test/test-calendarspec.c | 9 ++++++++- src/test/test-date.c | 3 +++ src/test/test-time-util.c | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c index db64142f01c..18a0f8f8bfd 100644 --- a/src/test/test-calendarspec.c +++ b/src/test/test-calendarspec.c @@ -254,4 +254,11 @@ TEST(calendar_spec_from_string) { assert_se(calendar_spec_from_string("*:4,30:*\n", &c) == -EINVAL); } -DEFINE_TEST_MAIN(LOG_INFO); +static int intro(void) { + /* Tests have hard-coded results that do not expect a specific timezone to be set by the caller */ + assert_se(unsetenv("TZ") >= 0); + + return EXIT_SUCCESS; +} + +DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); diff --git a/src/test/test-date.c b/src/test/test-date.c index a7058a33d42..162ac342f50 100644 --- a/src/test/test-date.c +++ b/src/test/test-date.c @@ -62,6 +62,9 @@ static void test_one_noutc(const char *p) { } int main(int argc, char *argv[]) { + /* Tests have hard-coded results that do not expect a specific timezone to be set by the caller */ + assert_se(unsetenv("TZ") >= 0); + test_setup_logging(LOG_DEBUG); test_one("17:41"); diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c index d29afa38dd2..9ce014dc9e3 100644 --- a/src/test/test-time-util.c +++ b/src/test/test-time-util.c @@ -1171,6 +1171,9 @@ TEST(timezone_offset_change) { } static int intro(void) { + /* Tests have hard-coded results that do not expect a specific timezone to be set by the caller */ + assert_se(unsetenv("TZ") >= 0); + log_info("realtime=" USEC_FMT "\n" "monotonic=" USEC_FMT "\n" "boottime=" USEC_FMT "\n", From 431f836bd482ad9895195bcf7b3e262819850a23 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 26 Jan 2024 00:25:04 +0000 Subject: [PATCH 2/2] CI: set TZ= in a unit test run to ensure tests don't break --- .github/workflows/unit_tests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unit_tests.sh b/.github/workflows/unit_tests.sh index dc5bf5dd4fc..c1a5ede3833 100755 --- a/.github/workflows/unit_tests.sh +++ b/.github/workflows/unit_tests.sh @@ -73,7 +73,8 @@ for phase in "${PHASES[@]}"; do MESON_ARGS+=(--fatal-meson-warnings) run_meson -Dnobody-group=nogroup --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true "${MESON_ARGS[@]}" build ninja -C build -v - meson test -C build --print-errorlogs + # Ensure setting a timezone (like the reproducible build tests do) does not break time/date unit tests + TZ=GMT+12 meson test -C build --print-errorlogs ;; RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN_NO_DEPS) MESON_ARGS=(--optimization=1)