test-journal-importer: add a test case with broken input

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-11-06 01:01:17 -04:00
parent 48ccb60d45
commit f06a6bcd76
3 changed files with 19 additions and 2 deletions

View File

@ -2470,7 +2470,8 @@ test_journal_importer_LDADD = \
libsystemd-shared.la libsystemd-shared.la
EXTRA_DIST += \ EXTRA_DIST += \
test/journal-data/journal-1.txt test/journal-data/journal-1.txt \
test/journal-data/journal-2.txt
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
## .PHONY so it always rebuilds it ## .PHONY so it always rebuilds it

View File

@ -44,7 +44,7 @@ static void test_basic_parsing(void) {
do do
r = journal_importer_process_data(&imp); r = journal_importer_process_data(&imp);
while (r == 0); while (r == 0 && !journal_importer_eof(&imp));
assert_se(r == 1); assert_se(r == 1);
/* We read one entry, so we should get EOF on next read, but not yet */ /* We read one entry, so we should get EOF on next read, but not yet */
@ -64,11 +64,27 @@ static void test_basic_parsing(void) {
assert_se(journal_importer_eof(&imp)); assert_se(journal_importer_eof(&imp));
} }
static void test_bad_input(void) {
_cleanup_(journal_importer_cleanup) JournalImporter imp = {};
int r;
imp.fd = open(TEST_DATA_DIR("/journal-data/journal-2.txt"), O_RDONLY|O_CLOEXEC);
assert_se(imp.fd >= 0);
do
r = journal_importer_process_data(&imp);
while (!journal_importer_eof(&imp));
assert_se(r == 0); /* If we don't have enough input, 0 is returned */
assert_se(journal_importer_eof(&imp));
}
int main(int argc, char **argv) { int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG); log_set_max_level(LOG_DEBUG);
log_parse_environment(); log_parse_environment();
test_basic_parsing(); test_basic_parsing();
test_bad_input();
return 0; return 0;
} }

Binary file not shown.