diff options
Diffstat (limited to 'ini/ini_parse_ut.c')
-rw-r--r-- | ini/ini_parse_ut.c | 129 |
1 files changed, 91 insertions, 38 deletions
diff --git a/ini/ini_parse_ut.c b/ini/ini_parse_ut.c index 01b7077..cc37c21 100644 --- a/ini/ini_parse_ut.c +++ b/ini/ini_parse_ut.c @@ -23,13 +23,16 @@ #include <string.h> #include <errno.h> #include <stdlib.h> +#include <limits.h> #include "ini_defines.h" #include "ini_configobj.h" +#include "ini_config_priv.h" #include "simplebuffer.h" #include "path_utils.h" #include "config.h" #define TRACE_HOME #include "trace.h" +#include "collection_tools.h" int verbose = 0; char *confdir = NULL; @@ -41,19 +44,19 @@ char *confdir = NULL; typedef int (*test_fn)(void); -int test_one_file(const char *filename) +int test_one_file(const char *in_filename, + const char *out_filename) { int error = EOK; struct ini_cfgfile *file_ctx = NULL; FILE *ff = NULL; - char new_file[100]; struct ini_cfgobj *ini_config = NULL; + struct ini_cfgobj *ini_copy = NULL; char **error_list = NULL; struct simplebuffer *sbobj = NULL; uint32_t left = 0; - char filename_base[96]; - INIOUT(printf("<==== Testing file %s ====>\n", filename)); + INIOUT(printf("<==== Testing file %s ====>\n", in_filename)); /* Create config collection */ error = ini_config_create(&ini_config); @@ -62,7 +65,7 @@ int test_one_file(const char *filename) return error; } - error = ini_config_file_open(filename, + error = ini_config_file_open(in_filename, INI_STOP_ON_NONE, 0, /* TBD */ 0, /* TBD */ @@ -83,12 +86,35 @@ int test_one_file(const char *filename) ini_config_get_filename(file_ctx))); ini_config_get_errors(file_ctx, &error_list); INIOUT(ini_print_errors(stdout, error_list)); + ini_config_free_errors(error_list); } /* We do not return here intentionally */ } ini_config_file_close(file_ctx); + INIOUT(col_debug_collection(ini_config->cfg, COL_TRAVERSE_DEFAULT)); + + /* Copy configuration */ + error = ini_config_copy(ini_config, &ini_copy); + if (error) { + printf("Failed to copy configuration. Error %d.\n", error); + ini_config_destroy(ini_config); + return error; + } + + ini_config_destroy(ini_config); + ini_config = ini_copy; + + INIOUT(col_debug_collection(ini_config->cfg, COL_TRAVERSE_DEFAULT)); + + error = ini_config_set_wrap(ini_config, 5); + if (error) { + printf("Failed to set custom wrapper. Error %d.\n", error); + ini_config_destroy(ini_config); + return error; + } + error = simplebuffer_alloc(&sbobj); if (error) { TRACE_ERROR_NUMBER("Failed to allocate dynamic string.", error); @@ -104,11 +130,8 @@ int test_one_file(const char *filename) return error; } - error = get_basename(filename_base, 96, filename); - sprintf(new_file, "%s.out", filename_base); - errno = 0; - ff = fopen(new_file, "w"); + ff = fopen(out_filename, "w"); if(!ff) { error = errno; printf("Failed to open file for writing. Error %d.\n", error); @@ -143,41 +166,79 @@ int read_save_test(void) { int error = EOK; int i = 0; - int lasterr = EOK; - char *files[5]; - - files[0] = malloc(sizeof(char)*512); - sprintf(files[0], "%s/ini.d/real.conf", confdir); - files[1] = malloc(sizeof(char)*512); - sprintf(files[1], "%s/ini.d/mysssd.conf", confdir); - files[2] = malloc(sizeof(char)*512); - sprintf(files[2], "%s/ini.d/ipa.conf", confdir); - files[3] = malloc(sizeof(char)*512); - sprintf(files[3], "%s/ini.d/test.conf", confdir); - files[4] = NULL; + char infile[PATH_MAX]; + char outfile[PATH_MAX]; + char *srcdir; + const char *files[] = { "real", + "mysssd", + "ipa", + "test", + NULL }; + + + srcdir = getenv("srcdir"); while(files[i]) { - error = test_one_file(files[i]); - INIOUT(printf("Test fo file: %s returned %d\n", files[i], error)); - if (error) lasterr = error; + + sprintf(infile, "%s/ini/ini.d/%s.conf", (srcdir == NULL) ? "." : srcdir, + files[i]); + sprintf(outfile, "%s/%s.conf.out", (srcdir == NULL) ? "." : srcdir, + files[i]); + error = test_one_file(infile, outfile); + INIOUT(printf("Test for file: %s returned %d\n", files[i], error)); i++; } - free(files[3]); - free(files[2]); - free(files[1]); - free(files[0]); + return EOK; +} + +/* Run tests for multiple files */ +int read_again_test(void) +{ + int error = EOK; + int i = 0; + char infile[PATH_MAX]; + char outfile[PATH_MAX]; + char *srcdir; + char command[PATH_MAX * 3]; + const char *files[] = { "real", + "mysssd", + "ipa", + "test", + NULL }; + - return lasterr; + srcdir = getenv("srcdir"); + + while(files[i]) { + + sprintf(infile, "%s/%s.conf.out", (srcdir == NULL) ? "." : srcdir, + files[i]); + sprintf(outfile, "%s/%s.conf.2.out", (srcdir == NULL) ? "." : srcdir, + files[i]); + error = test_one_file(infile, outfile); + INIOUT(printf("Test for file: %s returned %d\n", files[i], error)); + if (error) break; + sprintf(command,"diff -q %s %s", infile, outfile); + error = system(command); + INIOUT(printf("Comparison of %s %s returned: %d\n", + infile, outfile, error)); + if (error) break; + + i++; + } + + return error; } + /* Main function of the unit test */ int main(int argc, char *argv[]) { int error = 0; test_fn tests[] = { read_save_test, + read_again_test, NULL }; - char *srcdir; test_fn t; int i = 0; char *var; @@ -190,14 +251,6 @@ int main(int argc, char *argv[]) INIOUT(printf("Start\n")); - srcdir = getenv("srcdir"); - if(!srcdir) { - confdir = strdup("./ini"); - } else { - confdir = malloc(strlen(srcdir)+5*sizeof(char)); - sprintf(confdir, "%s/ini", srcdir); - } - while ((t = tests[i++])) { error = t(); if (error) { |