summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-02-12 14:54:13 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-02-13 08:07:30 +1000
commit50b82c19b5c6a30e6c6a12630065c6aa0693de22 (patch)
treecb4e3da86add969a6a52cf8ad6bc2f6b0335d184
parent0d593bff7155ad7c8b8aea156ad568d12d8bcb08 (diff)
downloadlibevdev-50b82c19b5c6a30e6c6a12630065c6aa0693de22.tar.gz
Actually filter by log priority
If a message is higher than the current priority, filter it. And add a few tests that the priority is handled the way it should. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
-rw-r--r--libevdev/libevdev.c2
-rw-r--r--test/test-libevdev-init.c76
2 files changed, 77 insertions, 1 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index cf532e3..142d6ad 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -122,7 +122,7 @@ log_msg(enum libevdev_log_priority priority,
{
va_list args;
- if (!log_data.handler)
+ if (!log_data.handler || priority > log_data.priority)
return;
va_start(args, format);
diff --git a/test/test-libevdev-init.c b/test/test-libevdev-init.c
index 6be3d74..c2c90a5 100644
--- a/test/test-libevdev-init.c
+++ b/test/test-libevdev-init.c
@@ -120,6 +120,8 @@ START_TEST(test_log_init)
{
struct libevdev *dev = NULL;
+ libevdev_set_log_priority(LIBEVDEV_LOG_DEBUG);
+
libevdev_set_log_function(logfunc, NULL);
libevdev_set_log_function(NULL, NULL);
@@ -144,6 +146,77 @@ START_TEST(test_log_init)
libevdev_free(dev);
libevdev_set_log_function(test_logfunc_abort_on_error, NULL);
+
+ log_fn_called = 0;
+}
+END_TEST
+
+START_TEST(test_log_default_priority)
+{
+ ck_assert_int_eq(libevdev_get_log_priority(), LIBEVDEV_LOG_INFO);
+}
+END_TEST
+
+START_TEST(test_log_set_get_priority)
+{
+ enum libevdev_log_priority pri;
+
+ pri = LIBEVDEV_LOG_DEBUG;
+ libevdev_set_log_priority(pri);
+ ck_assert_int_eq(libevdev_get_log_priority(), pri);
+
+ pri = LIBEVDEV_LOG_INFO;
+ libevdev_set_log_priority(pri);
+ ck_assert_int_eq(libevdev_get_log_priority(), pri);
+
+ pri = LIBEVDEV_LOG_ERROR;
+ libevdev_set_log_priority(pri);
+ ck_assert_int_eq(libevdev_get_log_priority(), pri);
+
+ /* debug and above is clamped */
+ pri = LIBEVDEV_LOG_DEBUG + 1;
+ libevdev_set_log_priority(pri);
+ ck_assert_int_eq(libevdev_get_log_priority(), LIBEVDEV_LOG_DEBUG);
+
+ /* error and below is not clamped, we need this for another test */
+ pri = LIBEVDEV_LOG_ERROR - 1;
+ libevdev_set_log_priority(pri);
+ ck_assert_int_eq(libevdev_get_log_priority(), pri);
+}
+END_TEST
+
+START_TEST(test_log_priority)
+{
+ struct libevdev *dev = NULL;
+
+ libevdev_set_log_function(logfunc, logdata);
+
+ dev = libevdev_new();
+ ck_assert(dev != NULL);
+
+ libevdev_set_log_priority(LIBEVDEV_LOG_DEBUG);
+ libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL);
+ ck_assert_int_eq(log_fn_called, 1);
+
+ libevdev_set_log_priority(LIBEVDEV_LOG_INFO);
+ libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL);
+ ck_assert_int_eq(log_fn_called, 2);
+
+ libevdev_set_log_priority(LIBEVDEV_LOG_ERROR);
+ libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL);
+ ck_assert_int_eq(log_fn_called, 3);
+
+ /* we don't have any log msgs > ERROR at the moment, so test it by
+ setting an invalid priority. */
+ libevdev_set_log_priority(LIBEVDEV_LOG_ERROR - 1);
+ libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL);
+ ck_assert_int_eq(log_fn_called, 3);
+
+ libevdev_free(dev);
+
+ libevdev_set_log_function(test_logfunc_abort_on_error, NULL);
+
+ log_fn_called = 0;
}
END_TEST
@@ -390,6 +463,9 @@ libevdev_init_test(void)
tc = tcase_create("log init");
tcase_add_test(tc, test_log_init);
+ tcase_add_test(tc, test_log_priority);
+ tcase_add_test(tc, test_log_set_get_priority);
+ tcase_add_test(tc, test_log_default_priority);
tcase_add_test(tc, test_log_data);
suite_add_tcase(s, tc);