From af2bf44067a0ae5025f0b7738dacc14c4c1dc09a Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sat, 22 Jun 2019 23:48:14 +0200 Subject: Add very basic test case for fstree_from_file Signed-off-by: David Oberhollenzer --- tests/fstree_from_file.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tests/fstree_from_file.c (limited to 'tests/fstree_from_file.c') diff --git a/tests/fstree_from_file.c b/tests/fstree_from_file.c new file mode 100644 index 0000000..f9a9e28 --- /dev/null +++ b/tests/fstree_from_file.c @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +#include "fstree.h" + +#include +#include +#include +#include +#include + +static const char *testdesc = +"# comment line\n" +"slink /slink 0644 2 3 slinktarget\n" +"dir /dir 0755 4 5\n" +"nod /chardev 0600 6 7 c 13:37\n" +"nod /blkdev 0600 8 9 b 42:21\n" +"pipe /pipe 0644 10 11\n" +" sock /sock 0555 12 13 "; + +int main(void) +{ + tree_node_t *n; + fstree_t fs; + char *ptr; + FILE *fp; + + ptr = strdup(testdesc); + assert(ptr != NULL); + + fp = fmemopen(ptr, strlen(ptr), "r"); + assert(fp != NULL); + + assert(fstree_init(&fs, 512, 0, 0755, 0, 0) == 0); + assert(fstree_from_file(&fs, "testfile", fp) == 0); + + tree_node_sort_recursive(fs.root); + n = fs.root->data.dir->children; + + assert(n->mode == (S_IFBLK | 0600)); + assert(n->uid == 8); + assert(n->gid == 9); + assert(strcmp(n->name, "blkdev") == 0); + assert(n->data.devno == makedev(42, 21)); + + n = n->next; + assert(n->mode == (S_IFCHR | 0600)); + assert(n->uid == 6); + assert(n->gid == 7); + assert(strcmp(n->name, "chardev") == 0); + assert(n->data.devno == makedev(13, 37)); + + n = n->next; + assert(n->mode == (S_IFDIR | 0755)); + assert(n->uid == 4); + assert(n->gid == 5); + assert(strcmp(n->name, "dir") == 0); + assert(n->data.dir->children == NULL); + + n = n->next; + assert(n->mode == (S_IFIFO | 0644)); + assert(n->uid == 10); + assert(n->gid == 11); + assert(strcmp(n->name, "pipe") == 0); + + n = n->next; + assert(n->mode == (S_IFLNK | 0777)); + assert(n->uid == 2); + assert(n->gid == 3); + assert(strcmp(n->name, "slink") == 0); + assert(strcmp(n->data.slink_target, "slinktarget") == 0); + + n = n->next; + assert(n->mode == (S_IFSOCK | 0555)); + assert(n->uid == 12); + assert(n->gid == 13); + assert(strcmp(n->name, "sock") == 0); + assert(n->next == NULL); + + fclose(fp); + fstree_cleanup(&fs); + return EXIT_SUCCESS; +} -- cgit v1.2.3