mirror of
git://anongit.mindrot.org/openssh.git
synced 2024-12-22 18:02:20 +00:00
upstream: add some tests for parse_absolute_time(), including cases
where it is forced to the UTC timezone. bz3468 ok dtucker OpenBSD-Regress-ID: ea07ca31c2f3847a38df028ca632763ae44e8759
This commit is contained in:
parent
ec1ddb72a1
commit
b98a42afb6
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: test_convtime.c,v 1.2 2021/12/14 21:25:27 deraadt Exp $ */
|
||||
/* $OpenBSD: test_convtime.c,v 1.3 2022/08/11 01:57:50 djm Exp $ */
|
||||
/*
|
||||
* Regress test for misc time conversion functions.
|
||||
*
|
||||
@ -20,6 +20,7 @@
|
||||
|
||||
#include "log.h"
|
||||
#include "misc.h"
|
||||
#include "ssherr.h"
|
||||
|
||||
void test_convtime(void);
|
||||
|
||||
@ -27,6 +28,7 @@ void
|
||||
test_convtime(void)
|
||||
{
|
||||
char buf[1024];
|
||||
uint64_t t;
|
||||
|
||||
TEST_START("misc_convtime");
|
||||
ASSERT_INT_EQ(convtime("0"), 0);
|
||||
@ -56,4 +58,64 @@ test_convtime(void)
|
||||
ASSERT_INT_EQ(convtime("3550w5d3h14m8s"), -1);
|
||||
#endif
|
||||
TEST_DONE();
|
||||
|
||||
/* XXX timezones/DST make verification of this tricky */
|
||||
/* XXX maybe setenv TZ and tzset() to make it unambiguous? */
|
||||
TEST_START("misc_parse_absolute_time");
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101", &t), 0);
|
||||
ASSERT_INT_EQ(parse_absolute_time("200001011223", &t), 0);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101122345", &t), 0);
|
||||
|
||||
/* forced UTC TZ */
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101Z", &t), 0);
|
||||
ASSERT_U64_EQ(t, 946684800);
|
||||
ASSERT_INT_EQ(parse_absolute_time("200001011223Z", &t), 0);
|
||||
ASSERT_U64_EQ(t, 946729380);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101122345Z", &t), 0);
|
||||
ASSERT_U64_EQ(t, 946729425);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101UTC", &t), 0);
|
||||
ASSERT_U64_EQ(t, 946684800);
|
||||
ASSERT_INT_EQ(parse_absolute_time("200001011223UTC", &t), 0);
|
||||
ASSERT_U64_EQ(t, 946729380);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101122345UTC", &t), 0);
|
||||
ASSERT_U64_EQ(t, 946729425);
|
||||
|
||||
/* Bad month */
|
||||
ASSERT_INT_EQ(parse_absolute_time("20001301", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000001", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
/* Incomplete */
|
||||
ASSERT_INT_EQ(parse_absolute_time("2", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("2000", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("200001", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("2000010", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("200001010", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
/* Bad day, hour, minute, second */
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000199", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("200001019900", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("200001010099", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101000099", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
/* Invalid TZ specifier */
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101ZZ", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101PDT", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101U", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
ASSERT_INT_EQ(parse_absolute_time("20000101UTCUTC", &t),
|
||||
SSH_ERR_INVALID_FORMAT);
|
||||
|
||||
TEST_DONE();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user