From 63aa6c5d07a82ef4530e9d298409a8f26e117332 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Mon, 6 Jun 2016 17:55:06 +0200 Subject: [PATCH] Add unit test for dir() Signed-off-by: Joachim Nilsson --- dir.c | 101 ---------------------------------------------- dir.mk | 4 -- tests/.gitignore | 1 + tests/Makefile.am | 1 + tests/dir.c | 98 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 100 insertions(+), 105 deletions(-) delete mode 100644 dir.mk create mode 100644 tests/dir.c diff --git a/dir.c b/dir.c index 0e5f5d0..0183584 100644 --- a/dir.c +++ b/dir.c @@ -124,109 +124,8 @@ int dir(const char *dir, const char *type, int (*filter) (const char *file), cha return num; } -#ifdef UNITTEST -#include -#include -#include -#include "lite.h" - -#define DIR_TYPE_IMAGE ".img" -#define DIR_TYPE_SYSLOG "" -#define DIR_TYPE_CONFIG ".cfg" -#define STARTUP_CONFIG "startup-config.cfg" - -int simulate_files(int creat) -{ - int i; - char *files[] = - { "config0.cfg", "config1.cfg", "config2.cfg", "config3.cfg", - "rr109.img", "rx100.img", "rx107.img", "rm957.img", "messages" - }; - - for (i = 0; i < NELEMS(files); i++) { - if (creat) - touch(files[i]); - else - erase(files[i]); - } - - if (creat) - symlink("config2.cfg", STARTUP_CONFIG); - else - erase(STARTUP_CONFIG); - - return 0; -} - -static int cfg_dir_filter(const char *file) -{ - /* Skip the STARTUP_CONFIG file, it is a symbolic link to the - * current startup configuration. */ - return ! !strcmp(file, STARTUP_CONFIG); -} - -int main(int argc, char *argv[]) -{ - int i, num; - char *type = DIR_TYPE_CONFIG; - char **files; - int once = 1; - - int is_startup_config(const char *entry) { - static char file[80]; - - if (once) { - int len = readlink(STARTUP_CONFIG, file, sizeof(file)); - - if (len == -1) - return 0; - - file[len] = 0; - once = 0; /* Only once per call to dir() */ - } - //printf ("Comparing link %s with entry %s\n", file, entry); - return !strcmp(file, entry); - } - - simulate_files(1); - - if (argc >= 2) { - if (!strcasecmp("CONFIG", argv[1])) { - type = DIR_TYPE_CONFIG; - system("ls -l *" DIR_TYPE_CONFIG); - } - if (!strcasecmp("IMAGE", argv[1])) { - type = DIR_TYPE_IMAGE; - system("ls -l *" DIR_TYPE_IMAGE); - } - if (!strcasecmp("SYSLOG", argv[1])) { - type = DIR_TYPE_SYSLOG; - system("ls -l *"); - } - } - - num = dir(NULL, type, cfg_dir_filter, &files, 0); - if (num) { - for (i = 0; i < num; i++) { - printf("%s", files[i]); - if (is_startup_config(files[i])) - printf(" --> startup-config"); - printf("\n"); - - free(files[i]); - } - free(files); - } - - simulate_files(0); - - return 0; -} -#endif /* UNITTEST */ - /** * Local Variables: - * compile-command: "make V=1 -f dir.mk" * indent-tabs-mode: t * c-file-style: "linux" * End: diff --git a/dir.mk b/dir.mk deleted file mode 100644 index 91fd361..0000000 --- a/dir.mk +++ /dev/null @@ -1,4 +0,0 @@ -OBJS = -TARGET = dir.test clean - -include rules.mk diff --git a/tests/.gitignore b/tests/.gitignore index 7b27f36..9fb93c5 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1,5 +1,6 @@ *.log *.trs +dir fexist fisdir fsendfile diff --git a/tests/Makefile.am b/tests/Makefile.am index 9829d01..5a6b362 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -2,6 +2,7 @@ EXTRA_DIST = check.h CLEANFILES = *~ *.trs *.log TESTS = +TESTS += dir TESTS += fexist TESTS += fisdir TESTS += fsendfile diff --git a/tests/dir.c b/tests/dir.c new file mode 100644 index 0000000..d9bb8b5 --- /dev/null +++ b/tests/dir.c @@ -0,0 +1,98 @@ +#include +#include +#include +#include +#include "check.h" + +#define DIR_TYPE_IMAGE ".img" +#define DIR_TYPE_SYSLOG "" +#define DIR_TYPE_CONFIG ".cfg" +#define STARTUP_CONFIG "startup-config.cfg" + +int simulate_files(int creat) +{ + size_t i; + char *files[] = + { "config0.cfg", "config1.cfg", "config2.cfg", "config3.cfg", + "rr109.img", "rx100.img", "rx107.img", "rm957.img", "messages" + }; + + for (i = 0; i < NELEMS(files); i++) { + if (creat) + touch(files[i]); + else + erase(files[i]); + } + + if (creat) + symlink("config2.cfg", STARTUP_CONFIG); + else + erase(STARTUP_CONFIG); + + return 0; +} + +static int cfg_dir_filter(const char *file) +{ + /* Skip the STARTUP_CONFIG file, it is a symbolic link to the + * current startup configuration. */ + return ! !strcmp(file, STARTUP_CONFIG); +} + +int main(int argc, char *argv[]) +{ + int i, num; + char *type = DIR_TYPE_CONFIG; + char **files; + int once = 1; + + int is_startup_config(const char *entry) { + static char file[80]; + + if (once) { + int len = readlink(STARTUP_CONFIG, file, sizeof(file)); + + if (len == -1) + return 0; + + file[len] = 0; + once = 0; /* Only once per call to dir() */ + } + //printf ("Comparing link %s with entry %s\n", file, entry); + return !strcmp(file, entry); + } + + simulate_files(1); + + if (argc >= 2) { + if (!strcasecmp("CONFIG", argv[1])) { + type = DIR_TYPE_CONFIG; + system("ls -l *" DIR_TYPE_CONFIG); + } + if (!strcasecmp("IMAGE", argv[1])) { + type = DIR_TYPE_IMAGE; + system("ls -l *" DIR_TYPE_IMAGE); + } + if (!strcasecmp("SYSLOG", argv[1])) { + type = DIR_TYPE_SYSLOG; + system("ls -l *"); + } + } + + num = dir(NULL, type, cfg_dir_filter, &files, 0); + if (num) { + for (i = 0; i < num; i++) { + printf("%s", files[i]); + if (is_startup_config(files[i])) + printf(" --> startup-config"); + printf("\n"); + + free(files[i]); + } + free(files); + } + + simulate_files(0); + + return 0; +}