55 #include <sys/resource.h>
56 #include <sys/types.h>
71 #include <amxc/amxc.h>
72 #include <amxp/amxp_signal.h>
73 #include <amxd/amxd_dm.h>
74 #include <amxd/amxd_object.h>
75 #include <amxd/amxd_parameter.h>
80 #include <amxc/amxc_macros.h>
84 const char*
odl =
"include \"empty.odl\";";
100 "include \"empty.odl\";" \
102 "include \"empty.odl\";" \
104 "include \"empty.odl\";" \
106 "include \"empty.odl\";";
121 const char*
odl =
"include \"does_not_exists.odl\";";
136 const char*
odl =
"#include \"does_not_exists.odl\";";
151 const char*
odl =
"include \"test1.odl\";";
166 const char*
odl =
"include \"./recursive_dir/\";";
181 char* abs_path = realpath(
"empty.odl", NULL);
187 sprintf(
odl,
"include \"%s\";", abs_path);
191 sprintf(
odl,
"include \"/tmp/fake.odl\";");
203 char* abs_path = realpath(
"empty.odl", NULL);
209 sprintf(
odl,
"&include \"%s\";", abs_path);
213 assert_true(dm.sigmngr.enabled);
215 sprintf(
odl,
"&include \"/tmp/fake.odl\";");
221 assert_true(dm.sigmngr.enabled);
231 const char*
odl =
"include \"main.odl\";";
239 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.default"));
240 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.1"));
241 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.2"));
242 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.3"));
251 const char*
odl =
"include \"./empty_dir/\";";
265 const char*
odl =
"include \"./empty_dir/\":\"./main.odl\";";
272 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.default"));
273 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.1"));
274 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.2"));
275 assert_non_null(amxd_dm_findf(&dm,
"MainObject.InstanceObject.3"));
284 const char*
odl =
"./composite_config/config_main.odl";
291 assert_non_null(GETP_ARG(&parser.
config,
"ubus.watch-ubus-events"));
292 assert_non_null(GETP_ARG(&parser.
config,
"ubus.register-on-start-event"));
301 const char*
odl =
"./composite_config/config_main.odl";
302 amxc_var_t* requires = NULL;
303 const amxc_llist_t* rl = NULL;
305 const char* expected[] = {
"Test1",
"Test2",
"Test3" };
312 requires = GETP_ARG(&parser.
config,
"requires");
313 assert_non_null(requires);
314 assert_int_equal(amxc_var_type_of(requires), AMXC_VAR_ID_LIST);
316 rl = amxc_var_constcast(amxc_llist_t, requires);
317 assert_int_equal(amxc_llist_size(rl), 3);
319 amxc_var_for_each(r, requires) {
320 assert_string_equal(expected[index], GET_CHAR(r, NULL));
Ambiorix ODL parser header file.
int amxo_parser_parse_string(amxo_parser_t *parser, const char *text, amxd_object_t *object)
Parses a string containing a valid ODL part.
void amxo_parser_clean(amxo_parser_t *parser)
Cleans up the odl parser instance.
int amxo_parser_parse_file(amxo_parser_t *parser, const char *file_path, amxd_object_t *object)
Parses an odl file.
static amxd_status_t amxo_parser_get_status(amxo_parser_t *parser)
Get the status of the odl parser.
int amxo_parser_init(amxo_parser_t *parser)
Initializes a new odl parser instance.
int amxo_parser_invoke_entry_points(amxo_parser_t *parser, amxd_dm_t *dm, int reason)
Invokes all registered entry points.
The ODL parser structure.
void test_empty_directory(UNUSED void **state)
void test_none_existing_include_file(UNUSED void **state)
void test_post_include(UNUSED void **state)
void test_composite_config_options_are_extended(UNUSED void **state)
void test_include_absolute_path(UNUSED void **state)
void test_global_nested_include(UNUSED void **state)
void test_can_include_directory(UNUSED void **state)
void test_recursive_include_detection(UNUSED void **state)
void test_can_include_empty_file(UNUSED void **state)
void test_none_existing_optional_include_file(UNUSED void **state)
void test_conditional_include_with_empty_directory_takes_second(UNUSED void **state)
void test_recursive_dir_include_detection(UNUSED void **state)
void test_can_include_between_sections(UNUSED void **state)