From 036ca1f989e6bed41314f28c4064fcad2ebad026 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Sun, 19 Apr 2015 05:10:14 +0000 Subject: [PATCH] Log X errors --- features/manager/x_errors.feature | 17 +++++++++++++++++ lib/uh/wm/manager.rb | 2 +- lib/uh/wm/runner.rb | 5 +++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 features/manager/x_errors.feature diff --git a/features/manager/x_errors.feature b/features/manager/x_errors.feature new file mode 100644 index 0000000..97a39a2 --- /dev/null +++ b/features/manager/x_errors.feature @@ -0,0 +1,17 @@ +Feature: X errors logging + + Scenario: logs error details + Given a file named layout.rb with: + """ + class Layout + def register _; end + + # Focusing a client before mapping will force an error + def << client + client.focus + end + end + """ + And uhwm is running with options -v -r./layout -l Layout + When a window requests to be mapped + Then the output must match /x.*error.+x_setinputfocus.+/i diff --git a/lib/uh/wm/manager.rb b/lib/uh/wm/manager.rb index 8fdf57e..3077d76 100644 --- a/lib/uh/wm/manager.rb +++ b/lib/uh/wm/manager.rb @@ -69,7 +69,7 @@ module Uh private def handle_error *args - @dispatcher.emit :error, args: args + @events.emit :xerror, args: args end def handle_key_press event diff --git a/lib/uh/wm/runner.rb b/lib/uh/wm/runner.rb index 02443db..36774a6 100644 --- a/lib/uh/wm/runner.rb +++ b/lib/uh/wm/runner.rb @@ -101,6 +101,7 @@ module Uh end @events.on(:disconnected) { log "Disconnected from X server" } @events.on(:xevent) { |event| XEventLogger.new(env).log_event event } + @events.on(:xerror) { |*error| XEventLogger.new(env).log_xerror *error } end def register_layout_hooks @@ -143,6 +144,10 @@ module Uh complement ].compact.join ' ' end + + def log_xerror req, resource_id, msg + log_error "XERROR: #{resource_id} #{req} #{msg}" + end end end end