diff options
Diffstat (limited to 'tests/libutil')
| -rw-r--r-- | tests/libutil/Makemodule.am | 6 | ||||
| -rw-r--r-- | tests/libutil/epoch.c | 67 | 
2 files changed, 72 insertions, 1 deletions
| diff --git a/tests/libutil/Makemodule.am b/tests/libutil/Makemodule.am index a3853d2..2ea2d43 100644 --- a/tests/libutil/Makemodule.am +++ b/tests/libutil/Makemodule.am @@ -27,9 +27,13 @@ test_filename_sane_w32_SOURCES += lib/util/filename_sane.c  test_filename_sane_w32_CPPFLAGS = $(AM_CPPFLAGS) -DTEST_WIN32=1  test_filename_sane_w32_LDADD = libcompat.a +test_sdate_epoch_SOURCES = tests/libutil/epoch.c +test_sdate_epoch_LDADD = libutil.a libcompat.a +  LIBUTIL_TESTS = \  	test_str_table test_rbtree test_xxhash test_threadpool test_ismemzero \ -	test_canonicalize_name test_filename_sane test_filename_sane_w32 +	test_canonicalize_name test_filename_sane test_filename_sane_w32 \ +	test_sdate_epoch  check_PROGRAMS += $(LIBUTIL_TESTS)  TESTS += $(LIBUTIL_TESTS) diff --git a/tests/libutil/epoch.c b/tests/libutil/epoch.c new file mode 100644 index 0000000..a04942e --- /dev/null +++ b/tests/libutil/epoch.c @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * epoch.c + * + * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> + */ +#include "config.h" +#include "util/util.h" +#include "util/test.h" + +#if defined(_WIN32) || defined(__WINDOWS__) +static void setenv(const char *key, const char *value, int overwrite) +{ +	char buffer[128]; +	(void)overwrite; + +	snprintf(buffer, sizeof(buffer) - 1, "%s=%s", key, value); +	buffer[sizeof(buffer) - 1] = '\0'; + +	_putenv(buffer); +} + +static void unsetenv(const char *key) +{ +	setenv(key, "", 0); +} +#endif + +int main(int argc, char **argv) +{ +	sqfs_u32 ts; +	(void)argc; (void)argv; + +	unsetenv("SOURCE_DATE_EPOCH"); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 0); + +	setenv("SOURCE_DATE_EPOCH", "1337", 1); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 1337); + +	setenv("SOURCE_DATE_EPOCH", "0xCAFE", 1); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 0); + +	setenv("SOURCE_DATE_EPOCH", "foobar", 1); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 0); + +	setenv("SOURCE_DATE_EPOCH", "-12", 1); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 0); + +	setenv("SOURCE_DATE_EPOCH", "12", 1); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 12); + +	setenv("SOURCE_DATE_EPOCH", "4294967295", 1); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 0xFFFFFFFF); + +	setenv("SOURCE_DATE_EPOCH", "4294967296", 1); +	ts = get_source_date_epoch(); +	TEST_EQUAL_UI(ts, 0); + +	return EXIT_SUCCESS; +} | 
