summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Pal <dpal@redhat.com>2012-12-25 09:31:07 -0500
committerOndrej Kos <okos@redhat.com>2013-01-24 08:34:56 +0100
commit66e30c2f3862093505a8497744207d2812c95be3 (patch)
treebd8cec1d0c149420459856cab92ce508670ead4e
parent6823d7104cca0f8ac22ed9432ee8a2f1a0d9124a (diff)
downloadding-libs-66e30c2f3862093505a8497744207d2812c95be3.tar.gz
ding-libs-66e30c2f3862093505a8497744207d2812c95be3.tar.xz
ding-libs-66e30c2f3862093505a8497744207d2812c95be3.zip
Unit test for parsing flags.
Added unit test.
-rw-r--r--Makefile.am1
-rw-r--r--ini/ini.d/space.conf5
-rw-r--r--ini/ini_parse_ut.c83
3 files changed, 89 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 2b30cdc..4a50c84 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -258,6 +258,7 @@ dist_noinst_DATA += \
ini/ini.d/sexpect.conf \
ini/ini.d/first.conf \
ini/ini.d/second.conf \
+ ini/ini.d/space.conf \
ini/ini.d/mergecheck.conf
check_PROGRAMS += \
diff --git a/ini/ini.d/space.conf b/ini/ini.d/space.conf
new file mode 100644
index 0000000..1ac58c3
--- /dev/null
+++ b/ini/ini.d/space.conf
@@ -0,0 +1,5 @@
+ spaces = value
+ tab = value
+ tab_and_space = value
+ space_and_tab = value
+
diff --git a/ini/ini_parse_ut.c b/ini/ini_parse_ut.c
index e31b356..002fdd5 100644
--- a/ini/ini_parse_ut.c
+++ b/ini/ini_parse_ut.c
@@ -2520,6 +2520,88 @@ int get_test(void)
return EOK;
}
+int space_test(void)
+{
+
+ int error;
+ struct ini_cfgfile *file_ctx = NULL;
+ struct ini_cfgobj *ini_config = NULL;
+ char **error_list = NULL;
+ char infile[PATH_MAX];
+ char *srcdir = NULL;
+ unsigned errnum;
+ int i;
+ uint32_t flags[] = { INI_PARSE_NOWRAP,
+ INI_PARSE_NOWRAP |
+ INI_PARSE_NOSPACE,
+ INI_PARSE_NOWRAP |
+ INI_PARSE_NOTAB,
+ INI_PARSE_NOWRAP |
+ INI_PARSE_NOSPACE |
+ INI_PARSE_NOTAB };
+
+ INIOUT(printf("\n\n<==== SPACE TEST START =====>\n"));
+
+ srcdir = getenv("srcdir");
+ snprintf(infile, PATH_MAX, "%s/ini/ini.d/space.conf",
+ (srcdir == NULL) ? "." : srcdir);
+
+
+ for (i = 0; i < 4; i++ ) {
+
+ INIOUT(printf("Reading file %s\n", infile));
+ error = ini_config_file_open(infile,
+ 0,
+ &file_ctx);
+ if (error) {
+ printf("Failed to open file for reading. Error %d.\n", error);
+ return error;
+ }
+
+ INIOUT(printf("Creating configuration object\n"));
+ error = ini_config_create(&ini_config);
+ if (error) {
+ printf("Failed to create object. Error %d.\n", error);
+ ini_config_file_destroy(file_ctx);
+ return error;
+ }
+ INIOUT(printf("Parsing\n"));
+ error = ini_config_parse(file_ctx,
+ INI_STOP_ON_NONE,
+ 0,
+ flags[i],
+ ini_config);
+ if (error) {
+ INIOUT(printf("Failed to parse configuration. Error %d.\n", error));
+
+ errnum = ini_config_error_count(ini_config);
+ if (errnum) {
+ INIOUT(printf("Errors detected while parsing: %s\n",
+ ini_config_get_filename(file_ctx)));
+ ini_config_get_errors(ini_config, &error_list);
+ INIOUT(ini_config_print_errors(stdout, error_list));
+ ini_config_free_errors(error_list);
+ }
+ if (((i == 0) && (errnum != 0)) ||
+ ((i == 1) && (errnum != 3)) ||
+ ((i == 2) && (errnum != 3)) ||
+ ((i == 3) && (errnum != 4))) {
+ printf("Failed to open file for reading. Error %d.\n", error);
+ ini_config_file_destroy(file_ctx);
+ ini_config_destroy(ini_config);
+ return -1;
+ }
+ /* We do not return here intentionally */
+ }
+
+ INIOUT(col_debug_collection(ini_config->cfg, COL_TRAVERSE_DEFAULT));
+ ini_config_destroy(ini_config);
+ ini_config_file_destroy(file_ctx);
+ }
+
+ INIOUT(printf("\n<==== SPACE TEST END =====>\n\n"));
+ return EOK;
+}
/* Main function of the unit test */
int main(int argc, char *argv[])
@@ -2533,6 +2615,7 @@ int main(int argc, char *argv[])
startup_test,
reload_test,
get_test,
+ space_test,
NULL };
test_fn t;
int i = 0;