diff options
author | Dmitri Pal <dpal@redhat.com> | 2012-12-25 09:31:07 -0500 |
---|---|---|
committer | Ondrej Kos <okos@redhat.com> | 2013-01-24 08:34:56 +0100 |
commit | 66e30c2f3862093505a8497744207d2812c95be3 (patch) | |
tree | bd8cec1d0c149420459856cab92ce508670ead4e | |
parent | 6823d7104cca0f8ac22ed9432ee8a2f1a0d9124a (diff) | |
download | ding-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.am | 1 | ||||
-rw-r--r-- | ini/ini.d/space.conf | 5 | ||||
-rw-r--r-- | ini/ini_parse_ut.c | 83 |
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; |