diff options
Diffstat (limited to 'lib/tests')
-rw-r--r-- | lib/tests/Makefile.config-opts | 6 | ||||
-rw-r--r-- | lib/tests/config-tiny.ini | 24 | ||||
-rw-r--r-- | lib/tests/plugin.ini | 10 | ||||
-rw-r--r-- | lib/tests/test_ini.c | 87 |
4 files changed, 127 insertions, 0 deletions
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 @@ | |||
1 | |||
2 | test_ini: test_ini.o ../parse_ini.o | ||
3 | 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 | ||
4 | |||
5 | test_ini.o: test_ini.c | ||
6 | 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 @@ | |||
1 | # This config file is amended from perl's Config::Tiny's testcases | ||
2 | |||
3 | # Line below is allowed in perl's Config::Tiny, but not in our parse_ini.c | ||
4 | #root=something | ||
5 | |||
6 | [section] | ||
7 | one=two | ||
8 | Foo=Bar | ||
9 | this=Your Mother! | ||
10 | blank= | ||
11 | |||
12 | [Section Two] | ||
13 | something else=blah | ||
14 | remove = whitespace | ||
15 | |||
16 | [ /path/to/file.txt ] | ||
17 | this=that | ||
18 | |||
19 | [ section2] | ||
20 | this=that | ||
21 | |||
22 | [section3 ] | ||
23 | this=that | ||
24 | |||
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 @@ | |||
1 | |||
2 | [check_mysql] | ||
3 | username=operator | ||
4 | password=secret # Remember to change later | ||
5 | |||
6 | [check_mysql2] | ||
7 | u=admin | ||
8 | p=secret | ||
9 | |||
10 | |||
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 @@ | |||
1 | /****************************************************************************** | ||
2 | |||
3 | This program is free software; you can redistribute it and/or modify | ||
4 | it under the terms of the GNU General Public License as published by | ||
5 | the Free Software Foundation; either version 2 of the License, or | ||
6 | (at your option) any later version. | ||
7 | |||
8 | This program is distributed in the hope that it will be useful, | ||
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | GNU General Public License for more details. | ||
12 | |||
13 | You should have received a copy of the GNU General Public License | ||
14 | along with this program; if not, write to the Free Software | ||
15 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
16 | |||
17 | $Id$ | ||
18 | |||
19 | ******************************************************************************/ | ||
20 | |||
21 | #include "common.h" | ||
22 | #include "parse_ini.h" | ||
23 | |||
24 | #include "tap.h" | ||
25 | |||
26 | void my_free(char *string) { | ||
27 | if (string != NULL) { | ||
28 | printf("string:\n\t|%s|\n", string); | ||
29 | free(string); | ||
30 | } | ||
31 | } | ||
32 | |||
33 | int | ||
34 | main (int argc, char **argv) | ||
35 | { | ||
36 | char *optstr=NULL; | ||
37 | |||
38 | plan_tests(4); | ||
39 | |||
40 | optstr=np_get_defaults("section@./config-tiny.ini", "check_disk"); | ||
41 | ok( !strcmp(optstr, "--one=two --Foo=Bar --this=Your Mother! --blank="), "config-tiny.ini's section as expected"); | ||
42 | my_free(optstr); | ||
43 | |||
44 | optstr=np_get_defaults("@./config-tiny.ini", "section"); | ||
45 | ok( !strcmp(optstr, "--one=two --Foo=Bar --this=Your Mother! --blank="), "Used default section name, without specific"); | ||
46 | my_free(optstr); | ||
47 | |||
48 | /* This test currently crashes */ | ||
49 | /* | ||
50 | optstr=np_get_defaults("section_unknown@./config-tiny.ini", "section"); | ||
51 | ok( !strcmp(optstr, "--one=two --Foo=Bar --this=Your Mother! --blank="), "Used default section name over specified one"); | ||
52 | my_free(optstr); | ||
53 | */ | ||
54 | |||
55 | optstr=np_get_defaults("Section Two@./config-tiny.ini", "check_disk"); | ||
56 | ok( !strcmp(optstr, "--something else=blah --remove=whitespace"), "config-tiny.ini's Section Two as expected"); | ||
57 | my_free(optstr); | ||
58 | |||
59 | /* These tests currently crash parse_ini.c */ | ||
60 | /* | ||
61 | optstr=np_get_defaults("/path/to/file.txt@./config-tiny.ini", "check_disk"); | ||
62 | ok( !strcmp(optstr, "--this=that"), "config-tiny.ini's filename as section name"); | ||
63 | my_free(optstr); | ||
64 | |||
65 | optstr=np_get_defaults("section2@./config-tiny.ini", "check_disk"); | ||
66 | ok( !strcmp(optstr, "--this=that"), "config-tiny.ini's section2 with whitespace before section name"); | ||
67 | my_free(optstr); | ||
68 | |||
69 | optstr=np_get_defaults("section3@./config-tiny.ini", "check_disk"); | ||
70 | ok( !strcmp(optstr, "--this=that"), "config-tiny.ini's section3 with whitespace after section name"); | ||
71 | my_free(optstr); | ||
72 | */ | ||
73 | |||
74 | optstr=np_get_defaults("check_mysql@./plugin.ini", "check_disk"); | ||
75 | ok( !strcmp(optstr, "--username=operator --password=secret"), "plugin.ini's check_mysql as expected"); | ||
76 | my_free(optstr); | ||
77 | |||
78 | /* This test crashes at the moment. I think it is not expecting single character parameter names */ | ||
79 | /* | ||
80 | optstr=np_get_defaults("check_mysql2@./config-tiny.ini", "check_disk"); | ||
81 | ok( !strcmp(optstr, "-u=admin -p=secret"), "plugin.ini's check_mysql2 as expected"); | ||
82 | my_free(optstr); | ||
83 | */ | ||
84 | |||
85 | return exit_status(); | ||
86 | } | ||
87 | |||