Home | History | Annotate | Download | only in libutil
History log of /src/tests/lib/libutil/t_parsedate.c
RevisionDateAuthorComments
 1.33  02-May-2022  christos explicitly set TZ=UTC so that we don't depend on the testing rig for it.
 1.32  23-Apr-2022  christos 1. add check for December in MM/DD/YYYY
2. unsetenv("TZ") since tests assume UTC (all relative tests and one date test
fail otherwise)
 1.31  19-Oct-2020  kre Adapt for change to parsedate() which now follows POSIX and altered the
dividing line between 21st and 20th century conversions from 69/70 to
68/69. Adapt the tests for this to conform.
 1.30  22-Mar-2017  kre Fix typo in a comment.
 1.29  22-Mar-2017  kre Add tests for "12 noon", "12 midnight".
 1.28  22-Mar-2017  kre Since PR lib/52101 is now fixed, the tests for its bug should no longer fail.
 1.27  21-Mar-2017  kre Fix a typo - it doesn't matter now, as the test fails anyway, but
it will matter when parsedate is fixed and the test is supposed to
succeed.
 1.26  21-Mar-2017  kre PR lib/52101

Add 6 extra tests for the 12am/12pm bug - all currently expected to fail.
(That is, 6 subtests of the "times" test will fail, all new ones)>

While here, when parsedate() fails (returns -1) avoid converting that
failure value (-1) to a struct tm (1969-12-31T23:59:59 UTC) and then
comparing the values with those expected by the test, and complaining
about all of those (where ANY was not permitted) that don't match...
 1.25  22-Jun-2016  kre branches: 1.25.2; 1.25.4;

Remove tests of "dawn" and "sunset" in preparation for removing
them from parsedate() itself sometime soon.
 1.24  05-May-2016  kre Make the 9 months ago test, when reverting from late November to the
end of Feburary just a little less bogus (stupid cut & paste error).
 1.23  04-May-2016  gson Reduce the step size, exposing another bug.
 1.22  03-May-2016  kre PR bin/50574 - make the tests conform to what parsedate() actually
does, so they should no longer fail. This needs parsedate.y 1.28
in order to work properly.

OK christos@
 1.21  03-May-2016  kre Whitespace. No changes. OK christos@
 1.20  01-May-2016  gson In the "relative" test case, run the tests multiple times relative to
various dates over a span of a few decades, instead of just once
relative to the current date. This makes the test fail consistently
instead of sometimes failing and sometimes not depending on when
it is run. Makes PR lib/50574 consistently reproducible.
 1.19  31-Dec-2015  dholland Fix REL_CHECK error output; it had "expected" and "obtained" swapped.
While here, improve the general legibility of the printout. Not
actually relevant to PR 50574, but anyone looking at that should be
aware of this change.
 1.18  31-Dec-2015  dholland When evaluated on a Sunday, "next Sunday" means 7 days in the future,
not 14. When evaluated on a Monday, it apparently means 13 days in the
future. There's not exactly a spec for parsedate.y, so conform to the
implementation.

PR 50574.

XXX: to me at least this is an odd notion of "next Sunday", but whatever...
 1.17  31-Dec-2015  dholland Fix the "Tuesday midnight" test to match what parsedate.y does; in
particular it doesn't add a week if evaluating that on Wednesday.

Whether that's right is an open question, but there's not exactly a
spec for parsedate.y and there's no point having the test fail one
day in seven.

PR 50574.
 1.16  08-Dec-2015  christos Kill one more REL_DEBUG, from kre
 1.15  07-Dec-2015  christos there is no REL_DEBUG
 1.14  07-Dec-2015  christos new tests from kre
 1.13  08-Oct-2014  apb 2013-07-09 was in British Summer TIme, so use tzoff=-60, not 0.
 1.12  08-Oct-2014  apb When tests fail, print all args, notjust the date string.
 1.11  08-Oct-2014  apb Add tests for PR lib/47916. Some of these fail.
 1.10  07-Oct-2014  apb Adapt to a recent change in parsedate().
"9/10/69" still refers to 2069, and "9/10/70" still refers to 1970,
but "69-09-10" and "70-09-10" now refer to the years 69 and 70.
 1.9  07-Oct-2014  apb Add comments for some non-obvious cases.
Also add a test with year=70, which is documented to be treated as 1970.
 1.8  07-Oct-2014  apb Add local parsecheck() function and use it for several tests.

Instead of just checking that parsedate(3) does not return an error,
also pass the result through localtime_r(3) or gmtime_r(3) and check the
year/month/day/hour/minute/second fields in the resulting struct tm.
 1.7  19-Jan-2013  apb branches: 1.7.8;
Test parsedate("@-2",...) (should return -2 and not set errno);
and parsedate("@junk",...) (should return -1 and set errno).
We were already testing "@-1".
 1.6  19-Jan-2013  apb * Test that parsedate("@0", ...) returns (time_t)0 regardless of timezone.
* Test that parsedate("@-1", NULL, NULL) returns (time_t)-1
without setting errno.
 1.5  18-Mar-2012  jruoho branches: 1.5.2;
To be on the safe side, use the category/number notation when referring to
PRs (otherwise third-party sed-scripts might miss the references). Also
remove white-space.
 1.4  17-Mar-2012  christos mention the PR# in the description like everyone else.
 1.3  17-Dec-2011  apb branches: 1.3.2;
Add some tests for dates several centures into the past and future.
These currently fail, but I'll fix that soon.
 1.2  21-Dec-2010  christos branches: 1.2.6;
We don't expect tests to fail anymore.
 1.1  20-Dec-2010  njoly Add testcase from PR/44255, that exercize parsedate(3) with sample
strings taken from the manpage.
 1.2.6.2  23-Jan-2013  yamt sync with head
 1.2.6.1  17-Apr-2012  yamt sync with head
 1.3.2.1  17-Apr-2015  msaitoh Pull up following revision(s) (requested by nonaka in ticket #1291):
tests/lib/libutil/t_parsedate.c: revision 1.4-1.13
lib/libutil/parsedate.y: revision 1.14-1.20
lib/libutil/parsedate.3: revision 1.11-1.14
Distinguish between a non-error result of (time_t)-1 and an error result.
Modernise the test code inside #ifdef TEST.
add rcsid
fix timezone bugs in rev.1.11 and rev.1.13. PR/47916.
Some years don't need the "maybe add 1900 or 2000" adjustment
that was designed for handling two-digit abbreviated years.
For example, "1/2/70" still refers to the year 1970, as before,
but "70-01-02" now refers to the year 70.
* Add a new yyHaveFullYear member to struct dateinfo, to record whether
or not the year needs to be adjusted.
* Code that parses years sets yyHaveFullYear=1 if they know that the
year should not be adjusted (as is the case for ISO 8601 dates), or if
they perform their own adjustment (as is the case for CVS timestamps).
* Move the year adjustment code into a new function, AdjustYear,
instead of inline in Convert().
* Make Convert() assume the year doesn't need to be adjusted,
and make Convert's callers first call AdjustYear() if appropriate.
A time like HH:MM:SS.sss says nothing about whether DST is on or off.
Add a new non-terminal "time_numericzone" for a time with
a numeric timezone. Move some productions from "time" to "time_numericzone".
Increment yyHaveZone when encountering one of these.
Previously, input of the form "HH:MM:SS +ZZZZ" would not have set the
yyhaveZone flag.
Improved handling of local times.
* A magic value USE_LOCAL_TIME (defined as 99999) may be passed as the
Timezone to Convert(), instructing it to use mktime() to work
in the local time zone, instead of using mktime_z to work in UTC
(and then adding the specified timezone offset).
* Some old code is removed now that there's no need to find the local
timezone offset.
* Allow either one or both of the now and zone arguments to
parsedate() to be NULL, treating them independently. Previously,
if either one was NULL, the other was ignored.
* If the zone argument is specified, then the current date is calculated
in the specified zone, not in local time.
Also add some disabled debug code.
This should fix PR lib/47916.
Fix capitalization and typo, from Bug Hunting.
Document that errno may be used to distinguish between a
non-error result of -1 and an error.
Document that years in ISO 8601 dates are taken literally.
"69-09-10" is in the year 69, not 2069.
The tzoff argument is in minutes (behind/west of UTC), not seconds.
While here, also say that time = NULL and tzoff = NULL are independent.
The code doesn't yet implement that, but it will soon.
mention the PR# in the description like everyone else.
To be on the safe side, use the category/number notation when referring to
PRs (otherwise third-party sed-scripts might miss the references). Also
remove white-space.
* Test that parsedate("@0", ...) returns (time_t)0 regardless of timezone.
* Test that parsedate("@-1", NULL, NULL) returns (time_t)-1
without setting errno.
Test parsedate("@-2",...) (should return -2 and not set errno);
and parsedate("@junk",...) (should return -1 and set errno).
We were already testing "@-1".
Add local parsecheck() function and use it for several tests.
Instead of just checking that parsedate(3) does not return an error,
also pass the result through localtime_r(3) or gmtime_r(3) and check the
year/month/day/hour/minute/second fields in the resulting struct tm.
Add comments for some non-obvious cases.
Also add a test with year=70, which is documented to be treated as 1970.
Adapt to a recent change in parsedate().
"9/10/69" still refers to 2069, and "9/10/70" still refers to 1970,
but "69-09-10" and "70-09-10" now refer to the years 69 and 70.
Add tests for PR lib/47916. Some of these fail.
When tests fail, print all args, notjust the date string.
2013-07-09 was in British Summer TIme, so use tzoff=-60, not 0.
 1.5.2.1  25-Feb-2013  tls resync with head
 1.7.8.6  11-Oct-2014  snj Pull up following revision(s) (requested by apb in ticket #135):
tests/lib/libutil/t_parsedate.c: revision 1.13
2013-07-09 was in British Summer TIme, so use tzoff=-60, not 0.
 1.7.8.5  11-Oct-2014  snj Pull up following revision(s) (requested by apb in ticket #135.10):
tests/lib/libutil/t_parsedate.c: revision 1.12
When tests fail, print all args, notjust the date string.
 1.7.8.4  11-Oct-2014  snj Pull up following revision(s) (requested by apb in ticket #135):
tests/lib/libutil/t_parsedate.c: revision 1.11
Add tests for PR lib/47916. Some of these fail.
 1.7.8.3  11-Oct-2014  snj Pull up following revision(s) (requested by apb in ticket #135):
tests/lib/libutil/t_parsedate.c: revision 1.10
Adapt to a recent change in parsedate().
"9/10/69" still refers to 2069, and "9/10/70" still refers to 1970,
but "69-09-10" and "70-09-10" now refer to the years 69 and 70.
 1.7.8.2  11-Oct-2014  snj Pull up following revision(s) (requested by apb in ticket #135):
tests/lib/libutil/t_parsedate.c: revision 1.9
Add comments for some non-obvious cases.
Also add a test with year=70, which is documented to be treated as 1970.
 1.7.8.1  11-Oct-2014  snj Pull up following revision(s) (requested by apb in ticket #135):
tests/lib/libutil/t_parsedate.c: revision 1.8
Add local parsecheck() function and use it for several tests.
Instead of just checking that parsedate(3) does not return an error,
also pass the result through localtime_r(3) or gmtime_r(3) and check the
year/month/day/hour/minute/second fields in the resulting struct tm.
 1.25.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.25.2.1  26-Apr-2017  pgoyette Sync with HEAD

RSS XML Feed