Mercurial > hg > octave-kai > gnulib-hg
changeset 16004:83b923a6f599
test-parse-datetime.c: avoid new DST-related false positive test failure
* tests/test-parse-datetime.c (gmt_offset): Determine the "gmt_offset"
based on the time/date we'll convert, not the current time.
Otherwise, the moment we cross a DST boundary like today's in
Europe, (CEST to CET), that offset ends up being one hour off.
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Sun, 30 Oct 2011 18:12:54 +0100 |
parents | ba9cbce206c3 |
children | 645961f2b4e5 |
files | ChangeLog tests/test-parse-datetime.c |
diffstat | 2 files changed, 18 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2011-10-30 Jim Meyering <meyering@redhat.com> + + test-parse-datetime.c: avoid new DST-related false positive test failure + * tests/test-parse-datetime.c (gmt_offset): Determine the "gmt_offset" + based on the time/date we'll convert, not the current time. + Otherwise, the moment we cross a DST boundary like today's in + Europe, (CEST to CET), that offset ends up being one hour off. + 2011-10-27 Bruno Haible <bruno@clisp.org> fstat: Tweak documentation.
--- a/tests/test-parse-datetime.c +++ b/tests/test-parse-datetime.c @@ -94,20 +94,17 @@ #endif /* ! HAVE_TM_GMTOFF */ static long -gmt_offset () +gmt_offset (time_t s) { - time_t now; long gmtoff; - time (&now); - #if !HAVE_TM_GMTOFF - struct tm tm_local = *localtime (&now); - struct tm tm_gmt = *gmtime (&now); + struct tm tm_local = *localtime (&s); + struct tm tm_gmt = *gmtime (&s); gmtoff = tm_diff (&tm_local, &tm_gmt); #else - gmtoff = localtime (&now)->tm_gmtoff; + gmtoff = localtime (&s)->tm_gmtoff; #endif return gmtoff; @@ -123,16 +120,17 @@ const char *p; int i; long gmtoff; + time_t ref_time = 1304250918; set_program_name (argv[0]); - gmtoff = gmt_offset (); + gmtoff = gmt_offset (ref_time); /* ISO 8601 extended date and time of day representation, 'T' separator, local time zone */ p = "2011-05-01T11:55:18"; - expected.tv_sec = 1304250918 - gmtoff; + expected.tv_sec = ref_time - gmtoff; expected.tv_nsec = 0; ASSERT (parse_datetime (&result, p, 0)); LOG (p, expected, result); @@ -142,7 +140,7 @@ /* ISO 8601 extended date and time of day representation, ' ' separator, local time zone */ p = "2011-05-01 11:55:18"; - expected.tv_sec = 1304250918 - gmtoff; + expected.tv_sec = ref_time - gmtoff; expected.tv_nsec = 0; ASSERT (parse_datetime (&result, p, 0)); LOG (p, expected, result); @@ -153,7 +151,7 @@ /* ISO 8601, extended date and time of day representation, 'T' separator, UTC */ p = "2011-05-01T11:55:18Z"; - expected.tv_sec = 1304250918; + expected.tv_sec = ref_time; expected.tv_nsec = 0; ASSERT (parse_datetime (&result, p, 0)); LOG (p, expected, result); @@ -163,7 +161,7 @@ /* ISO 8601, extended date and time of day representation, ' ' separator, UTC */ p = "2011-05-01 11:55:18Z"; - expected.tv_sec = 1304250918; + expected.tv_sec = ref_time; expected.tv_nsec = 0; ASSERT (parse_datetime (&result, p, 0)); LOG (p, expected, result);