URL:
https://github.com/SSSD/sssd/pull/226
Title: #226: Config check regex
lslebodn commented:
"""
Actually, it would not be complicated to write unit test either.
```C
struct sss_ini_initdata {
char **error_list;
struct ref_array *ra_success_list;
struct ref_array *ra_error_list;
struct ini_cfgobj *sssd_config;
struct value_obj *obj;
const struct stat *cstat;
struct ini_cfgfile *file;
};
#include "util/sss_ini.h"
#include <ini_configobj.h>
static void test_config_validation(void **state)
{
int ret;
size_t num_errors;
char **strs = NULL;
struct sss_ini_initdata *ini_data = sss_ini_initdata_init(NULL);
assert_non_null(ini_data);
char config[] = "[domain/tesst_~^domain]\n";
ret = ini_config_file_from_mem(config,
sizeof(config),
&ini_data->file);
assert_int_equal(ret, EOK);
ret = ini_config_create(&(ini_data->sssd_config));
assert_int_equal(ret, EOK);
ret = ini_config_parse(ini_data->file,
INI_STOP_ON_ANY,
INI_MV1S_OVERWRITE,
INI_PARSE_NOWRAP,
ini_data->sssd_config);
assert_int_equal(ret, EOK);
char *rules_path = talloc_asprintf(NULL, "%s/src/config/cfg_rules.ini",
getenv("ABS_TOP_SRCDIR"));
assert_non_null(rules_path);
ret = sss_ini_call_validators_strs(NULL, ini_data, rules_path,
&strs, &num_errors);
assert_int_equal(ret, EOK);
assert_int_equal(num_errors, 0);
}
```
Just use `#ifdef HAVE_LIBINI_CONFIG_V1_3`. Unit tests are usually more faster :-)
"""
See the full comment at
https://github.com/SSSD/sssd/pull/226#issuecomment-293557171