diff --git a/Makefile b/Makefile index 2a881924be0f9607a95afceb456c8807bc44838d..6acb9708b36cac970bca9aaa26c62b102b2ec013 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,17 @@ all: test: all @PACKAGE=${PACKAGE} VERSION=${VERSION} prove test +test-interactive: all + @if [ "$$(whoami)" != derf ]; then \ + echo "Note: This will do stuff with your X and take a while"; \ + echo "If you don't know what's going on, hit ^C now"; \ + sleep 5; \ + echo "Okay, running test"; \ + fi + @if [ "$$(whoami)" = derf ]; then setxkbmap us; fi + @prove test/*.i + @if [ "$$(whoami)" = derf ]; then setxkbmap greedy; fi + install: install-man install-doc install-bin install-font install-img install-man: diff --git a/test/feh.i b/test/feh.i new file mode 100755 index 0000000000000000000000000000000000000000..0a38bf1ca34326d69c677733bde4684a5418a02c --- /dev/null +++ b/test/feh.i @@ -0,0 +1,48 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.010; + +use Test::More tests => 3; +use X11::GUITest qw/ + FindWindowLike + StartApp + SendKeys + WaitWindowViewable +/; + +sub feh_start { + my ($opts, $files) = @_; + + $opts //= q{}; + $files //= 'test/ok.png'; + + StartApp("feh ${opts} ${files}"); + if (WaitWindowViewable(qr{^feh}) == 0) { + BAIL_OUT("Unable to start feh ${opts} ${files}"); + } +} + +sub test_no_win { + my ($reason) = @_; + + for (1 .. 10) { + sleep(0.1); + if (FindWindowLike(qr{^feh}) == 0) { + pass("Window closed ($reason)"); + return; + } + } + fail("Window closed ($reason)"); + BAIL_OUT("unclosed window still open, cannot continue"); +} + +if (FindWindowLike(qr{^feh})) { + BAIL_OUT('It appears you have an open feh window. Please close it.'); +} + +for my $key (qw/q x {ESC}/) { + feh_start(); + SendKeys($key); + test_no_win("$key pressed"); +}