diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2014-02-12 14:54:13 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2014-02-13 08:07:30 +1000 |
commit | 50b82c19b5c6a30e6c6a12630065c6aa0693de22 (patch) | |
tree | cb4e3da86add969a6a52cf8ad6bc2f6b0335d184 | |
parent | 0d593bff7155ad7c8b8aea156ad568d12d8bcb08 (diff) | |
download | libevdev-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.c | 2 | ||||
-rw-r--r-- | test/test-libevdev-init.c | 76 |
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); |