Since resetting the RTC on sandbox causes it to read the base time from
the system, we cannot rely on this being unchanged since it was last read.
Allow for a one-second delay.

Fixes: https://source.denx.de/u-boot/u-boot/-/issues/4
Reported-by: Bin Meng <bmeng...@gmail.com>
Reported-by: Tom Rini <tr...@konsulko.com>
Suggested-by: Rasmus Villemoes <rasmus.villem...@prevas.dk>
Signed-off-by: Simon Glass <s...@chromium.org>
---

 test/dm/rtc.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/test/dm/rtc.c b/test/dm/rtc.c
index c7f9f8f0ce7..403bf5c640a 100644
--- a/test/dm/rtc.c
+++ b/test/dm/rtc.c
@@ -245,16 +245,21 @@ static int dm_test_rtc_reset(struct unit_test_state *uts)
        ut_assertok(dm_rtc_get(dev, &now));
 
        ut_assertok(i2c_emul_find(dev, &emul));
-       ut_assert(emul != NULL);
+       ut_assertnonnull(emul);
 
        old_base_time = sandbox_i2c_rtc_get_set_base_time(emul, 0);
 
        ut_asserteq(0, sandbox_i2c_rtc_get_set_base_time(emul, -1));
 
-       /* Resetting the RTC should put he base time back to normal */
+       /*
+        * Resetting the RTC should put the base time back to normal. Allow for
+        * a one-second adjustment in case the time flips over while this
+        * test process is pre-empted, since reset_time() in i2c_rtc_emul.c
+        * reads the time from the OS.
+        */
        ut_assertok(dm_rtc_reset(dev));
        base_time = sandbox_i2c_rtc_get_set_base_time(emul, -1);
-       ut_asserteq(old_base_time, base_time);
+       ut_assert(base_time - old_base_time <= 1);
 
        return 0;
 }
-- 
2.37.1.455.g008518b4e5-goog

Reply via email to