starter: Ingore %default conn and ca sections

This commit is contained in:
Tobias Brunner 2014-06-26 12:23:05 +02:00
parent d96328fbc4
commit 04ff5e58e3
2 changed files with 60 additions and 0 deletions

View File

@ -292,12 +292,20 @@ static dictionary_t *section_dictionary_create(private_conf_parser_t *parser,
static bool conn_filter(void *unused, section_t **section, char **name)
{
if (streq((*section)->name, "%default"))
{
return FALSE;
}
*name = (*section)->name;
return TRUE;
}
static bool ca_filter(void *unused, void *key, char **name, section_t **section)
{
if (streq((*section)->name, "%default"))
{
return FALSE;
}
*name = (*section)->name;
return TRUE;
}
@ -326,6 +334,10 @@ METHOD(conf_parser_t, get_section, dictionary_t*,
{
section_t *section = NULL;
if (name && streq(name, "%default"))
{
return NULL;
}
switch (type)
{
case CONF_PARSER_CONFIG_SETUP:

View File

@ -372,6 +372,49 @@ START_TEST(test_refcounting)
}
END_TEST
START_TEST(test_default)
{
enumerator_t *enumerator;
dictionary_t *dict;
char *name;
create_parser(chunk_from_str(
"conn %default\n"
" key=valdef\n"
" unset=set\n"
"conn A\n"
" key=vala\n"
" unset=\n"
"conn B\n"
" keyb=valb\n"
""));
ck_assert(parser->parse(parser));
dict = parser->get_section(parser, CONF_PARSER_CONN, "%default");
ck_assert(!dict);
enumerator = parser->get_sections(parser, CONF_PARSER_CONN);
ck_assert(enumerator);
ck_assert(enumerator->enumerate(enumerator, &name));
ck_assert_str_eq("A", name);
ck_assert(enumerator->enumerate(enumerator, &name));
ck_assert_str_eq("B", name);
ck_assert(!enumerator->enumerate(enumerator, &name));
enumerator->destroy(enumerator);
dict = parser->get_section(parser, CONF_PARSER_CONN, "A");
ck_assert(dict);
ck_assert_str_eq("vala", dict->get(dict, "key"));
ck_assert(!dict->get(dict, "unset"));
dict->destroy(dict);
dict = parser->get_section(parser, CONF_PARSER_CONN, "B");
ck_assert(dict);
ck_assert_str_eq("valdef", dict->get(dict, "key"));
ck_assert_str_eq("valb", dict->get(dict, "keyb"));
ck_assert_str_eq("set", dict->get(dict, "unset"));
dict->destroy(dict);
}
END_TEST
START_TEST(test_also)
{
dictionary_t *dict;
@ -517,6 +560,11 @@ Suite *parser_suite_create()
tcase_add_test(tc, test_refcounting);
suite_add_tcase(s, tc);
tc = tcase_create("%default");
tcase_add_checked_fixture(tc, NULL, teardown_parser);
tcase_add_test(tc, test_default);
suite_add_tcase(s, tc);
tc = tcase_create("also=");
tcase_add_checked_fixture(tc, NULL, teardown_parser);
tcase_add_test(tc, test_also);