From 0839545a9bc51792f40c46b52dac50c543a5cf4f Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Thu, 22 May 2025 21:53:30 +0200 Subject: [PATCH] support/testing: test_timezone: fix test by setting a fixed time Since Buildroot commit [1], the runtime test emulator infra is setting the emulated system date to the host date. While this is desired in general, this behaviour is introducing a variability in the test execution. Depending if the test is executed during winter or summer time, the output of the command "date +%Z" will produce a different output. This commit fixes the issue by setting a fixed date and time on the emulated system. The date is fixed to Unix Epoch plus one hour. This is because Linux cannot set the system date to a value less than the system uptime. So we cannot set the time back to Unix Epoch with the command "date -s @0" (this would result to a EINVAL Invalid argument). Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/9922589073 https://gitlab.com/buildroot.org/buildroot/-/jobs/9922589081 [1] https://gitlab.com/buildroot.org/buildroot/-/commit/cf8641b73e7f1577637bfef0ece78dd519b25d19 Signed-off-by: Julien Olivain --- support/testing/tests/core/test_timezone.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/support/testing/tests/core/test_timezone.py b/support/testing/tests/core/test_timezone.py index bf4a47fcde..bfb9604f66 100644 --- a/support/testing/tests/core/test_timezone.py +++ b/support/testing/tests/core/test_timezone.py @@ -9,6 +9,24 @@ def boot_armv5_cpio(emulator, builddir): options=["-initrd", img]) emulator.login() + # emulator.login() sets the emulated system date to the host + # date. In general, this is desirable (for correct SSL certificate + # behaviors, for example). + # + # This timezone runtime test checks that a Buildroot configuration + # is reflected in the generated system at runtime, using the + # standard "date" command. To make sure this test is stable in + # time (i.e. output is independent to the date/time the test is + # executed due to daylight saving time changes), we reset the + # system date to a constant value. + # + # We cannot set the system date to a value less than the system + # uptime. So we cannot set the time back to Unix Epoch with the + # command "date -s @0" (this would result to a EINVAL Invalid + # argument). Instead, we set the time at 1 hour after Epoch. This + # is sufficient as the emulated system takes few seconds to start. + emulator.run("date -s @3600") + class TestNoTimezone(infra.basetest.BRTest): config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \