syslog-ng source
test_template_compile.c File Reference
#include <criterion/criterion.h>
#include "libtest/grab-logging.h"
#include "template/templates.c"
#include "template/simple-function.h"
#include "template/globals.h"
#include "logmsg/logmsg.h"
#include "apphook.h"
#include "cfg.h"
#include "plugin.h"
Include dependency graph for test_template_compile.c:

Macros

#define assert_common_element(expected)
 
#define fill_expected_template_element(element, text, default_value, spec, type, msg_ref)
 
#define assert_compiled_template(set_text, set_default_value, spec, type, msg_ref)
 

Functions

 TEMPLATE_FUNCTION_SIMPLE (hello)
 
 Test (template_compile, test_simple_string_literal)
 
 Test (template_compile, test_simple_macro)
 
 Test (template_compile, test_macro_and_text)
 
 Test (template_compile, test_macro_without_braces)
 
 Test (template_compile, test_macro_name_without_braces_are_terminated_with_non_identifier_characters)
 
 Test (template_compile, test_macro_without_at_records_that_no_msgref_was_present_by_msgref_zero)
 
 Test (template_compile, test_macro_with_at_references_a_single_msg_in_the_context_stack_by_setting_msgref)
 
 Test (template_compile, test_macro_with_invalid_msgref_are_recognized_as_the_top_element_in_the_stack)
 
 Test (template_compile, test_dollar_prefixed_with_backslash_is_a_literal_dollar)
 
 Test (template_compile, test_colon_dash_in_braces_is_parsed_as_default_value)
 
 Test (template_compile, test_double_dollars_is_a_literal_dollar)
 
 Test (template_compile, test_dollar_with_an_invalid_macro_name_without_braces_is_parsed_as_a_literal_dollar)
 
 Test (template_compile, test_backslash_without_finishing_the_escape_sequence_is_ignored)
 
 Test (template_compile, test_double_at_is_a_literal_at)
 
 Test (template_compile, test_simple_value)
 
 Test (template_compile, test_value_without_braces)
 
 Test (template_compile, test_backslash_within_braces_is_taken_literally)
 
 Test (template_compile, test_value_name_can_be_the_empty_string_when_referenced_using_braces)
 
 Test (template_compile, test_simple_template_function)
 
 Test (template_compile, test_complicated_template_function)
 
 Test (template_compile, test_simple_template_function_with_additional_text)
 
 Test (template_compile, test_qouted_string_in_name_template_function)
 
 Test (template_compile, test_invalid_macro)
 
 Test (template_compile, test_invalid_subst)
 
 Test (template_compile, test_template_function_bad1)
 
 Test (template_compile, test_template_function_bad2)
 
 Test (template_compile, test_template_function_bad3)
 
 Test (template_compile, test_unknown_function)
 
 TestSuite (template_compile,.init=setup,.fini=teardown)
 

Variables

Plugin hello_plugin = TEMPLATE_FUNCTION_PLUGIN(hello, "hello")
 

Macro Definition Documentation

◆ assert_common_element

#define assert_common_element (   expected)
Value:
cr_assert_str_eq(current_elem->text, expected.text, "%s", "Bad compiled template text"); \
if (expected.default_value) \
{ \
cr_assert_str_eq(current_elem->default_value, expected.default_value, "%s", "Bad compiled template default value"); \
} \
else \
{ \
cr_assert_null(current_elem->default_value, "%s", "Bad compiled template default value"); \
} \
cr_assert_eq(current_elem->msg_ref, expected.msg_ref, "%s", "Bad compiled template msg_ref");
guint16 msg_ref
Definition: repr.h:44
gchar * text
Definition: repr.h:42
gchar * default_value
Definition: repr.h:43

◆ assert_compiled_template

#define assert_compiled_template (   set_text,
  set_default_value,
  spec,
  type,
  msg_ref 
)
Value:
do { \
const gchar *text; \
set_text; \
gchar *text_mut = g_strdup(text); \
\
const gchar *default_value; \
set_default_value; \
gchar *default_value_mut = g_strdup(default_value); \
\
LogTemplateElem expected_elem; \
fill_expected_template_element(expected_elem, text = text_mut, \
default_value = default_value_mut, spec, type, msg_ref); \
cr_assert_eq((current_elem->type), (expected_elem.type), "%s", "Bad compiled template type"); \
assert_common_element(expected_elem); \
if ((expected_elem.type) == LTE_MACRO) cr_assert_eq(current_elem->macro, expected_elem.macro, "%s", "Bad compiled template macro"); \
if ((expected_elem.type) == LTE_VALUE) cr_assert_eq(current_elem->value_handle, expected_elem.value_handle, "%s", "Bad compiled template macro"); \
if ((expected_elem.type) == LTE_FUNC) cr_assert_eq(current_elem->func.ops, expected_elem.func.ops, "%s", "Bad compiled template macro"); \
g_free(text_mut); \
g_free(default_value_mut); \
} while (0)
@ LTE_VALUE
Definition: repr.h:35
@ LTE_MACRO
Definition: repr.h:34
@ LTE_FUNC
Definition: repr.h:36
struct LogTemplateElem::@91::@93 func
guint macro
Definition: repr.h:48
guint8 type
Definition: repr.h:45
NVHandle value_handle
Definition: repr.h:49
#define fill_expected_template_element(element, text, default_value, spec, type, msg_ref)
Definition: test_template_compile.c:59

◆ fill_expected_template_element

#define fill_expected_template_element (   element,
  text,
  default_value,
  spec,
  type,
  msg_ref 
)
Value:
{\
element.text; \
element.default_value; \
element.spec; \
element.type; \
element.msg_ref; }

Function Documentation

◆ TEMPLATE_FUNCTION_SIMPLE()

TEMPLATE_FUNCTION_SIMPLE ( hello  )

◆ Test() [1/28]

Test ( template_compile  ,
test_backslash_within_braces_is_taken_literally   
)

◆ Test() [2/28]

Test ( template_compile  ,
test_backslash_without_finishing_the_escape_sequence_is_ignored   
)

◆ Test() [3/28]

Test ( template_compile  ,
test_colon_dash_in_braces_is_parsed_as_default_value   
)

◆ Test() [4/28]

Test ( template_compile  ,
test_complicated_template_function   
)

◆ Test() [5/28]

Test ( template_compile  ,
test_dollar_prefixed_with_backslash_is_a_literal_dollar   
)

◆ Test() [6/28]

Test ( template_compile  ,
test_dollar_with_an_invalid_macro_name_without_braces_is_parsed_as_a_literal_dollar   
)

◆ Test() [7/28]

Test ( template_compile  ,
test_double_at_is_a_literal_at   
)

◆ Test() [8/28]

Test ( template_compile  ,
test_double_dollars_is_a_literal_dollar   
)

◆ Test() [9/28]

Test ( template_compile  ,
test_invalid_macro   
)

◆ Test() [10/28]

Test ( template_compile  ,
test_invalid_subst   
)

◆ Test() [11/28]

Test ( template_compile  ,
test_macro_and_text   
)

◆ Test() [12/28]

Test ( template_compile  ,
test_macro_name_without_braces_are_terminated_with_non_identifier_characters   
)

◆ Test() [13/28]

Test ( template_compile  ,
test_macro_with_at_references_a_single_msg_in_the_context_stack_by_setting_msgref   
)

◆ Test() [14/28]

Test ( template_compile  ,
test_macro_with_invalid_msgref_are_recognized_as_the_top_element_in_the_stack   
)

◆ Test() [15/28]

Test ( template_compile  ,
test_macro_without_at_records_that_no_msgref_was_present_by_msgref_zero   
)

◆ Test() [16/28]

Test ( template_compile  ,
test_macro_without_braces   
)

◆ Test() [17/28]

Test ( template_compile  ,
test_qouted_string_in_name_template_function   
)

◆ Test() [18/28]

Test ( template_compile  ,
test_simple_macro   
)

◆ Test() [19/28]

Test ( template_compile  ,
test_simple_string_literal   
)

◆ Test() [20/28]

Test ( template_compile  ,
test_simple_template_function   
)

◆ Test() [21/28]

Test ( template_compile  ,
test_simple_template_function_with_additional_text   
)

◆ Test() [22/28]

Test ( template_compile  ,
test_simple_value   
)

◆ Test() [23/28]

Test ( template_compile  ,
test_template_function_bad1   
)

◆ Test() [24/28]

Test ( template_compile  ,
test_template_function_bad2   
)

◆ Test() [25/28]

Test ( template_compile  ,
test_template_function_bad3   
)

◆ Test() [26/28]

Test ( template_compile  ,
test_unknown_function   
)

◆ Test() [27/28]

Test ( template_compile  ,
test_value_name_can_be_the_empty_string_when_referenced_using_braces   
)

◆ Test() [28/28]

Test ( template_compile  ,
test_value_without_braces   
)

◆ TestSuite()

TestSuite ( template_compile  ,
init = setup,
fini = teardown 
)

Variable Documentation

◆ hello_plugin

Plugin hello_plugin = TEMPLATE_FUNCTION_PLUGIN(hello, "hello")