In order not to break template_escape() functionality, add a test case for basic functionality testing. Signed-off-by: Gergely Nagy <algernon@balabit.hu> --- libtest/template_lib.c | 17 +++++++++++++---- libtest/template_lib.h | 5 +++-- tests/unit/test_template.c | 10 +++++++++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/libtest/template_lib.c b/libtest/template_lib.c index 38dfeff..7992608 100644 --- a/libtest/template_lib.c +++ b/libtest/template_lib.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 BalaBit IT Ltd, Budapest, Hungary + * Copyright (c) 2012-2013 BalaBit IT Ltd, Budapest, Hungary * Copyright (c) 2012 Balázs Scheidler * * This library is free software; you can redistribute it and/or @@ -53,6 +53,7 @@ create_sample_message(void) log_msg_set_value(msg, log_msg_get_value_handle("APP.STRIP3"), " value ", -1); log_msg_set_value(msg, log_msg_get_value_handle("APP.STRIP4"), "value", -1); log_msg_set_value(msg, log_msg_get_value_handle("APP.STRIP5"), "", -1); + log_msg_set_value(msg, log_msg_get_value_handle("APP.QVALUE"), "\"value\"", -1); log_msg_set_match(msg, 0, "whole-match", -1); log_msg_set_match(msg, 1, "first-match", -1); log_msg_set_tag_by_name(msg, "alma"); @@ -70,12 +71,13 @@ create_sample_message(void) } LogTemplate * -compile_template(const gchar *template) +compile_template(const gchar *template, gboolean escaping) { LogTemplate *templ = log_template_new(configuration, NULL); gboolean success; GError *error = NULL; + log_template_set_escape(templ, escaping); success = log_template_compile(templ, template, &error); assert_true(success, "template expected to compile cleanly, but it didn't, template=%s, error=%s", template, error ? error->message : "(none)"); g_clear_error(&error); @@ -86,6 +88,13 @@ compile_template(const gchar *template) void assert_template_format(const gchar *template, const gchar *expected) { + assert_template_format_with_escaping(template, FALSE, expected); +} + +void +assert_template_format_with_escaping(const gchar *template, gboolean escaping, + const gchar *expected) +{ LogMessage *msg; LogTemplate *templ; GString *res = g_string_sized_new(128); @@ -93,7 +102,7 @@ assert_template_format(const gchar *template, const gchar *expected) msg = create_sample_message(); - templ = compile_template(template); + templ = compile_template(template, escaping); log_template_format(templ, msg, NULL, LTZ_LOCAL, 999, context_id, res); assert_string(res->str, expected, "template test failed, template=%s", template); log_template_unref(templ); @@ -113,7 +122,7 @@ assert_template_format_with_context(const gchar *template, const gchar *expected msg = create_sample_message(); context[0] = context[1] = msg; - templ = compile_template(template); + templ = compile_template(template, FALSE); log_template_format_with_context(templ, context, 2, NULL, LTZ_LOCAL, 999, context_id, res); assert_string(res->str, expected, "context template test failed, template=%s", template); diff --git a/libtest/template_lib.h b/libtest/template_lib.h index 760858c..f875e4f 100644 --- a/libtest/template_lib.h +++ b/libtest/template_lib.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 BalaBit IT Ltd, Budapest, Hungary + * Copyright (c) 2012-2013 BalaBit IT Ltd, Budapest, Hungary * Copyright (c) 2012 Balázs Scheidler * * This library is free software; you can redistribute it and/or @@ -29,11 +29,12 @@ #include "templates.h" void assert_template_format(const gchar *template, const gchar *expected); +void assert_template_format_with_escaping(const gchar *template, gboolean escaping, const gchar *expected); void assert_template_format_with_context(const gchar *template, const gchar *expected); void assert_template_failure(const gchar *template, const gchar *expected_failure); LogMessage *create_sample_message(void); -LogTemplate *compile_template(const gchar *template); +LogTemplate *compile_template(const gchar *template, gboolean escaping); void init_template_tests(void); void deinit_template_tests(void); diff --git a/tests/unit/test_template.c b/tests/unit/test_template.c index e5ff1a0..8546dd4 100644 --- a/tests/unit/test_template.c +++ b/tests/unit/test_template.c @@ -53,7 +53,7 @@ assert_template_format_multi_thread(const gchar *template, const gchar *expected gint i; msg = create_sample_message(); - templ = compile_template(template); + templ = compile_template(template, FALSE); args[0] = msg; args[1] = templ; args[2] = (gpointer) expected; @@ -248,6 +248,13 @@ test_multi_thread(void) assert_template_format_multi_thread("dani $(echo $HOST $DATE $(echo huha)) balint", "dani bzorp Feb 11 10:34:56.000 huha balint"); } +static void +test_escaping(void) +{ + assert_template_format_with_escaping("${APP.QVALUE}", FALSE, "\"value\""); + assert_template_format_with_escaping("${APP.QVALUE}", TRUE, "\\\"value\\\""); +} + int main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED) { @@ -269,6 +276,7 @@ main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED) test_syntax_errors(); test_compat(); test_multi_thread(); + test_escaping(); /* multi-threaded expansion */ -- 1.7.10.4