From 88ff55667012171c688471eaa84d16311018ec9c Mon Sep 17 00:00:00 2001 From: Ton Voon Date: Wed, 7 Feb 2007 14:46:50 +0000 Subject: [PATCH] Added test files to test the parse_ini.c routines. Requires libtap git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1614 f882894a-f735-0410-b71e-b25c423dba1c --- lib/Makefile.config-opts | 2 + lib/parse_ini.c | 9 ---- lib/tests/Makefile.config-opts | 6 +++ lib/tests/config-tiny.ini | 24 ++++++++++ lib/tests/plugin.ini | 10 ++++ lib/tests/test_ini.c | 87 ++++++++++++++++++++++++++++++++++ 6 files changed, 129 insertions(+), 9 deletions(-) create mode 100644 lib/Makefile.config-opts create mode 100644 lib/tests/Makefile.config-opts create mode 100644 lib/tests/config-tiny.ini create mode 100644 lib/tests/plugin.ini create mode 100644 lib/tests/test_ini.c diff --git a/lib/Makefile.config-opts b/lib/Makefile.config-opts new file mode 100644 index 0000000..6546cb0 --- /dev/null +++ b/lib/Makefile.config-opts @@ -0,0 +1,2 @@ +parse_ini.o: parse_ini.c + gcc -I ../plugins -I ../gl -I .. -g -c -o parse_ini.o parse_ini.c diff --git a/lib/parse_ini.c b/lib/parse_ini.c index 5155b6d..b19537c 100644 --- a/lib/parse_ini.c +++ b/lib/parse_ini.c @@ -236,12 +236,3 @@ static int add_option(FILE *f, char **optbuf, size_t *bufsize){ return 0; } -int main(){ - char *optstr=NULL; - optstr=np_get_defaults("check_foo@./foo.ini", "check_bar"); - if(optstr!=NULL) { - printf("optstr:\n\t%s\n", optstr); - free(optstr); - } - return 0; -} diff --git a/lib/tests/Makefile.config-opts b/lib/tests/Makefile.config-opts new file mode 100644 index 0000000..96326d3 --- /dev/null +++ b/lib/tests/Makefile.config-opts @@ -0,0 +1,6 @@ + +test_ini: test_ini.o ../parse_ini.o + gcc -g -o test_ini test_ini.o ../parse_ini.o ../utils_base.o -L/usr/local/lib /usr/local/lib/libtap.so -Wl,--rpath -Wl,/usr/local/lib + +test_ini.o: test_ini.c + gcc -g test_ini.c -I ../../plugins -I ../../gl -I ../.. -I .. -c -o test_ini.o diff --git a/lib/tests/config-tiny.ini b/lib/tests/config-tiny.ini new file mode 100644 index 0000000..60f3dad --- /dev/null +++ b/lib/tests/config-tiny.ini @@ -0,0 +1,24 @@ +# This config file is amended from perl's Config::Tiny's testcases + +# Line below is allowed in perl's Config::Tiny, but not in our parse_ini.c +#root=something + +[section] +one=two +Foo=Bar +this=Your Mother! +blank= + +[Section Two] +something else=blah + remove = whitespace + +[ /path/to/file.txt ] +this=that + +[ section2] +this=that + +[section3 ] +this=that + diff --git a/lib/tests/plugin.ini b/lib/tests/plugin.ini new file mode 100644 index 0000000..eb869c6 --- /dev/null +++ b/lib/tests/plugin.ini @@ -0,0 +1,10 @@ + +[check_mysql] +username=operator +password=secret # Remember to change later + +[check_mysql2] +u=admin +p=secret + + diff --git a/lib/tests/test_ini.c b/lib/tests/test_ini.c new file mode 100644 index 0000000..f0e5cf4 --- /dev/null +++ b/lib/tests/test_ini.c @@ -0,0 +1,87 @@ +/****************************************************************************** + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id$ + +******************************************************************************/ + +#include "common.h" +#include "parse_ini.h" + +#include "tap.h" + +void my_free(char *string) { + if (string != NULL) { + printf("string:\n\t|%s|\n", string); + free(string); + } +} + +int +main (int argc, char **argv) +{ + char *optstr=NULL; + + plan_tests(4); + + optstr=np_get_defaults("section@./config-tiny.ini", "check_disk"); + ok( !strcmp(optstr, "--one=two --Foo=Bar --this=Your Mother! --blank="), "config-tiny.ini's section as expected"); + my_free(optstr); + + optstr=np_get_defaults("@./config-tiny.ini", "section"); + ok( !strcmp(optstr, "--one=two --Foo=Bar --this=Your Mother! --blank="), "Used default section name, without specific"); + my_free(optstr); + + /* This test currently crashes */ + /* + optstr=np_get_defaults("section_unknown@./config-tiny.ini", "section"); + ok( !strcmp(optstr, "--one=two --Foo=Bar --this=Your Mother! --blank="), "Used default section name over specified one"); + my_free(optstr); + */ + + optstr=np_get_defaults("Section Two@./config-tiny.ini", "check_disk"); + ok( !strcmp(optstr, "--something else=blah --remove=whitespace"), "config-tiny.ini's Section Two as expected"); + my_free(optstr); + + /* These tests currently crash parse_ini.c */ + /* + optstr=np_get_defaults("/path/to/file.txt@./config-tiny.ini", "check_disk"); + ok( !strcmp(optstr, "--this=that"), "config-tiny.ini's filename as section name"); + my_free(optstr); + + optstr=np_get_defaults("section2@./config-tiny.ini", "check_disk"); + ok( !strcmp(optstr, "--this=that"), "config-tiny.ini's section2 with whitespace before section name"); + my_free(optstr); + + optstr=np_get_defaults("section3@./config-tiny.ini", "check_disk"); + ok( !strcmp(optstr, "--this=that"), "config-tiny.ini's section3 with whitespace after section name"); + my_free(optstr); + */ + + optstr=np_get_defaults("check_mysql@./plugin.ini", "check_disk"); + ok( !strcmp(optstr, "--username=operator --password=secret"), "plugin.ini's check_mysql as expected"); + my_free(optstr); + + /* This test crashes at the moment. I think it is not expecting single character parameter names */ + /* + optstr=np_get_defaults("check_mysql2@./config-tiny.ini", "check_disk"); + ok( !strcmp(optstr, "-u=admin -p=secret"), "plugin.ini's check_mysql2 as expected"); + my_free(optstr); + */ + + return exit_status(); +} + -- 2.30.2