summaryrefslogtreecommitdiffstats
path: root/ini/ini_parse_ut.c
diff options
context:
space:
mode:
Diffstat (limited to 'ini/ini_parse_ut.c')
-rw-r--r--ini/ini_parse_ut.c129
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) {