Message ID | 20210121085416.32249-1-lukma@denx.de |
---|---|
State | New |
Headers | show |
Series | tst: Provide test for ctime | expand |
* Lukasz Majewski:
> This change adds new test to assess ctime's functionality.
I think the test needs to set the time zone.
Thanks,
Florian
Hi Florian, > * Lukasz Majewski: > > > This change adds new test to assess ctime's functionality. > > I think the test needs to set the time zone. > It works as a standalone test in my local test bench. Is it by chance (that the tz was set correctly earlier)? There are also no issues when I run code in this patch in the glibc test suite: https://github.com/lmajewski/y2038_glibc/commits/y2038_edge > Thanks, > Florian Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
* Lukasz Majewski: > Hi Florian, > >> * Lukasz Majewski: >> >> > This change adds new test to assess ctime's functionality. >> >> I think the test needs to set the time zone. >> > > It works as a standalone test in my local test bench. Is it by chance > (that the tz was set correctly earlier)? The test wrappers do not set TZ, so you end up with whatever TZ points to, or the system is configured with via /etc/localtime. ctime is specified to use local time, not UTC. Thanks, Florian
Hi Florian, > * Lukasz Majewski: > > > Hi Florian, > > > >> * Lukasz Majewski: > >> > >> > This change adds new test to assess ctime's functionality. > >> > >> I think the test needs to set the time zone. > >> > > > > It works as a standalone test in my local test bench. Is it by > > chance (that the tz was set correctly earlier)? > > The test wrappers do not set TZ, so you end up with whatever TZ points > to, or the system is configured with via /etc/localtime. ctime is > specified to use local time, not UTC. I think that I got your point. Do you propose to use the same code as in ./time/tst-y2039.c test? In my use case I do use cross-test-ssh.sh script to execute this test. It would require to set TZ on the remote test machine (Vexpress CortexA9) - i.e. just modify the script to pass extra env (TZ) only for this particular test. Would it be OK, to leave things as they are now? Or do you perceive any thread with such approach? > > Thanks, > Florian Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
* Lukasz Majewski: >> The test wrappers do not set TZ, so you end up with whatever TZ points >> to, or the system is configured with via /etc/localtime. ctime is >> specified to use local time, not UTC. > > I think that I got your point. Do you propose to use the same code as > in ./time/tst-y2039.c test? Yes, please use setenv or putenv. Thanks, Florian
diff --git a/time/Makefile b/time/Makefile index 43e5821adc..486fb02ecb 100644 --- a/time/Makefile +++ b/time/Makefile @@ -51,7 +51,7 @@ tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 \ tst-adjtime tst-clock-y2038 tst-clock2-y2038 \ tst-cpuclock1-y2038 tst-clock_nanosleep-y2038 tst-clock_settime \ - tst-clock_adjtime + tst-clock_adjtime tst-ctime include ../Rules diff --git a/time/tst-ctime.c b/time/tst-ctime.c new file mode 100644 index 0000000000..7ad913bb0d --- /dev/null +++ b/time/tst-ctime.c @@ -0,0 +1,51 @@ +/* Test for ctime + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <time.h> +#include <support/check.h> + +static int +do_test (void) +{ + char *str; + time_t t; + + /* Check if the epoch time can be converted. */ + t = 0; + str = ctime (&t); + TEST_COMPARE_STRING (str, "Thu Jan 1 00:00:00 1970\n"); + + /* Check if the max time value for 32 bit time_t can be converted. */ + t = 0x7fffffff; + str = ctime (&t); + TEST_COMPARE_STRING (str, "Tue Jan 19 03:14:07 2038\n"); + + /* Check if the time is converted after 32 bit time_t overflow. */ + if (sizeof (time_t) > 4) + { + t++; + str = ctime (&t); + TEST_COMPARE_STRING (str, "Tue Jan 19 03:14:08 2038\n"); + } + else + FAIL_UNSUPPORTED ("32-bit time_t"); + + return 0; +} + +#include <support/test-driver.c>