summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rwxr-xr-xtest/feh-bg-i.t (renamed from test/feh-bg.i)35
-rwxr-xr-xtest/feh-i.t461
-rwxr-xr-xtest/feh-scr-i.t (renamed from test/feh-scr.i)167
-rwxr-xr-xtest/feh.i453
-rw-r--r--test/feh.t70
-rwxr-xr-xtest/mandoc.t8
-rwxr-xr-xtest/run-interactive2
8 files changed, 583 insertions, 617 deletions
diff --git a/Makefile b/Makefile
index 94d811b..9cdf453 100644
--- a/Makefile
+++ b/Makefile
@@ -12,11 +12,11 @@ build-applications:
@${MAKE} -C share/applications
test: all
- @PACKAGE=${PACKAGE} prove test
+ @PACKAGE=${PACKAGE} prove test/feh.t test/mandoc.t
test-x11: all
test/run-interactive
- prove test/feh-bg.i
+ prove test/feh-bg-i.t
install: install-man install-doc install-bin install-font install-img
install: install-examples install-applications
diff --git a/test/feh-bg.i b/test/feh-bg-i.t
index 0e3b546..1f22c9d 100755
--- a/test/feh-bg.i
+++ b/test/feh-bg-i.t
@@ -8,12 +8,13 @@ use GD qw/:DEFAULT :cmp/;
use Test::More tests => 70;
use Time::HiRes qw/sleep/;
-my ($pid_xnest, $pid_twm);
+my $scr_dir = '/tmp/feh-test-scr';
+my ( $pid_xnest, $pid_twm );
$ENV{HOME} = 'test';
sub set_bg {
- my ($mode, $file) = @_;
+ my ( $mode, $file ) = @_;
ok(
system("feh --bg-${mode} test/bg/${file}") == 0,
@@ -22,26 +23,28 @@ sub set_bg {
}
sub same_files {
- my ($one, $two) = @_;
+ my ( $one, $two ) = @_;
my $img_one = GD::Image->new($one);
my $img_two = GD::Image->new($two);
- return( ! ($img_one->compare($img_two) & GD_CMP_IMAGE));
+ return ( !( $img_one->compare($img_two) & GD_CMP_IMAGE ) );
}
sub check_bg {
my ($file) = @_;
- system("import -silent -window root /tmp/feh_${$}.png");
+ system("import -silent -window root ${scr_dir}/feh_${$}.png");
- ok(
- same_files("test/bg/${file}", "/tmp/feh_${$}.png"),
- "Wallpaper is test/bg/${file}"
- );
+ ok( same_files( "test/bg/${file}", "${scr_dir}/feh_${$}.png" ),
+ "Wallpaper is test/bg/${file}" );
+}
+
+if ( not -d $scr_dir ) {
+ mkdir($scr_dir);
}
-if (($pid_xnest = fork()) == 0) {
+if ( ( $pid_xnest = fork() ) == 0 ) {
exec(qw( Xephyr -screen 500x500 :7 ));
}
@@ -49,7 +52,7 @@ sleep(0.5);
$ENV{'DISPLAY'} = ':7';
-if (($pid_twm = fork()) == 0) {
+if ( ( $pid_twm = fork() ) == 0 ) {
exec('twm');
}
@@ -57,23 +60,23 @@ sleep(0.5);
for my $mode (qw( center fill max scale tile )) {
- set_bg($mode, 'exact/in');
+ set_bg( $mode, 'exact/in' );
check_bg('exact/out');
for my $type (qw( exact small large )) {
for my $orientation (qw( w h )) {
- set_bg($mode, "${type}/${orientation}/in");
+ set_bg( $mode, "${type}/${orientation}/in" );
check_bg("${type}/${orientation}/${mode}");
}
}
}
-kill(15, $pid_twm);
+kill( 15, $pid_twm );
sleep(0.2);
-kill(15, $pid_xnest);
+kill( 15, $pid_xnest );
sleep(0.2);
-unlink("/tmp/feh_${$}.png");
+unlink("${scr_dir}/feh_${$}.png");
unlink('test/.fehbg');
diff --git a/test/feh-i.t b/test/feh-i.t
new file mode 100755
index 0000000..dd47ff6
--- /dev/null
+++ b/test/feh-i.t
@@ -0,0 +1,461 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.010;
+
+use Cwd;
+use Test::More tests => 103;
+use Time::HiRes qw/sleep/;
+use X11::GUITest qw/:ALL/;
+
+my $win;
+my ( $width, $height );
+my $pwd = getcwd();
+
+$ENV{HOME} = 'test';
+
+sub waitfor(&) {
+ my ($sub) = @_;
+ my $out;
+ for ( 1 .. 40 ) {
+ sleep(0.05);
+ $out = &{$sub};
+ if ($out) {
+ return $out;
+ }
+ }
+ return 0;
+}
+
+sub feh_start {
+ my ( $opts, $files ) = @_;
+ my $id;
+
+ $opts //= q{};
+ $files //= 'test/ok/png';
+
+ StartApp("feh ${opts} ${files}");
+ ($id) = WaitWindowViewable(qr{^feh});
+
+ if ( not $id ) {
+ BAIL_OUT("Unable to start feh ${opts} ${files}");
+ }
+
+ if ( not SetInputFocus($id) ) {
+ BAIL_OUT("Unable to focus window");
+ }
+
+ return $id;
+}
+
+sub feh_stop {
+ SendKeys('{ESC}');
+ if ( not waitfor { not FindWindowLike(qr{^feh}) } ) {
+ BAIL_OUT("Unclosed feh window still open, cannot continue");
+ }
+}
+
+sub test_no_win {
+ my ($reason) = @_;
+
+ if ( waitfor { not FindWindowLike(qr{^feh}) } ) {
+ pass("Window closed ($reason)");
+ }
+ else {
+ fail("Window closed ($reason)");
+ BAIL_OUT("unclosed window still open, cannot continue");
+ }
+}
+
+sub test_win_title {
+ my ( $win, $wtitle ) = @_;
+ my $rtitle;
+
+ if ( waitfor { GetWindowName($win) eq $wtitle } ) {
+ pass("Window has title: $wtitle");
+ }
+ else {
+ $rtitle = GetWindowName($win);
+ fail("Window has title: $wtitle");
+ diag("expected: $wtitle");
+ diag(" got: $rtitle");
+ }
+}
+
+sub slurp {
+ my ($file) = @_;
+ my $ret;
+ local $/ = undef;
+ open( my $fh, '<', $file ) or die("Can't open $file: $!");
+ $ret = <$fh>;
+ close($fh) or die("Can't close $file: $!");
+ return ($ret);
+}
+
+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");
+}
+
+$win = feh_start( q{}, 'test/ok/png' );
+test_win_title( $win, 'feh [1 of 1] - test/ok/png' );
+feh_stop();
+
+$win = feh_start( q{}, 'test/ok/png test/ok/jpg test/ok/gif' );
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('{RIG}');
+test_win_title( $win, 'feh [2 of 3] - test/ok/jpg' );
+SendKeys('n');
+test_win_title( $win, 'feh [3 of 3] - test/ok/gif' );
+SendKeys('{SPA}');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('{LEF}');
+test_win_title( $win, 'feh [3 of 3] - test/ok/gif' );
+SendKeys('p');
+test_win_title( $win, 'feh [2 of 3] - test/ok/jpg' );
+SendKeys('{BAC}');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('p');
+test_win_title( $win, 'feh [3 of 3] - test/ok/gif' );
+SendKeys('{DEL}');
+test_win_title( $win, 'feh [1 of 2] - test/ok/png' );
+SendKeys('{DEL}');
+test_win_title( $win, 'feh [1 of 1] - test/ok/jpg' );
+SendKeys('{DEL}');
+test_no_win("Removed all images from slideshow");
+
+$win = feh_start( '--title \'feh %m %u/%l %n\'',
+ 'test/ok/png test/ok/jpg test/ok/gif' );
+test_win_title( $win, 'feh slideshow 1/3 png' );
+SendKeys('{RIG}');
+test_win_title( $win, 'feh slideshow 2/3 jpg' );
+feh_stop();
+
+feh_start( '--cycle-once', 'test/ok/png test/ok/jpg' );
+for ( 1 .. 2 ) {
+ SendKeys('{RIG}');
+}
+test_no_win("--cycle-once -> window closed");
+
+feh_start(
+ '--cycle-once --slideshow-delay 0.5',
+ 'test/ok/png test/ok/jpg test/ok/gif'
+);
+sleep(1.5);
+test_no_win('cycle-once + slideshow-delay -> window closed');
+
+$win = feh_start(
+ '--cycle-once --slideshow-delay -0.01',
+ 'test/ok/png test/ok/jpg test/ok/gif'
+);
+
+test_win_title( $win, 'feh [1 of 3] - test/ok/png [Paused]' );
+
+SendKeys('h');
+test_no_win('cycle-once + negative delay + [h]');
+
+$win = feh_start( q{}, 'test/ok/png test/ok/gif test/ok/gif test/ok/jpg' );
+for ( 1 .. 2 ) {
+ SendKeys('{END}');
+ test_win_title( $win, 'feh [4 of 4] - test/ok/jpg' );
+}
+for ( 1 .. 2 ) {
+ SendKeys('{HOM}');
+ test_win_title( $win, 'feh [1 of 4] - test/ok/png' );
+}
+
+SendKeys('{PGU}');
+test_win_title( $win, 'feh [4 of 4] - test/ok/jpg' );
+SendKeys('{PGD}');
+test_win_title( $win, 'feh [1 of 4] - test/ok/png' );
+SendKeys('{PGD}');
+test_win_title( $win, 'feh [2 of 4] - test/ok/gif' );
+
+feh_stop();
+
+$win
+ = feh_start( '--slideshow-delay 1', 'test/ok/png test/ok/gif test/ok/jpg' );
+sleep(1.7);
+test_win_title( $win, 'feh [3 of 3] - test/ok/jpg' );
+SendKeys('h');
+test_win_title( $win, 'feh [3 of 3] - test/ok/jpg [Paused]' );
+SendKeys('{RIG}');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png [Paused]' );
+SendKeys('h');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+sleep(0.8);
+test_win_title( $win, 'feh [2 of 3] - test/ok/gif' );
+feh_stop();
+
+$win = feh_start(
+ '--action3 ";echo foo" --action7 "echo foo" '
+ . '--action8 ";touch feh_test_%u_%l" --action9 "rm feh_test_%u_%l"',
+ 'test/ok/png test/ok/gif test/ok/jpg'
+);
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('3');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('7');
+test_win_title( $win, 'feh [2 of 3] - test/ok/gif' );
+SendKeys('8');
+test_win_title( $win, 'feh [2 of 3] - test/ok/gif' );
+ok( -e 'feh_test_2_3',
+ 'feh action created file with correct format specifiers' );
+SendKeys('9');
+ok( waitfor { not -e 'feh_test_2_3' }, 'feh action removed file' );
+test_win_title( $win, 'feh [3 of 3] - test/ok/jpg' );
+feh_stop();
+
+# .config/feh/keys
+# Action Unbinding + non-conflicting none/shift/control/meta modifiers
+
+$ENV{XDG_CONFIG_HOME} = 'test/config/keys';
+
+$win = feh_start(
+ '--action1 "touch a1" --action2 "touch a2" '
+ . '--action3 "touch a3" --action4 "touch a4" '
+ . '--action5 "touch a5" --action6 "touch a6" ',
+ 'test/ok/png test/ok/jpg test/ok/pnm'
+);
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('6');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('{RIG}');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('a');
+test_win_title( $win, 'feh [2 of 3] - test/ok/jpg' );
+SendKeys('b');
+test_win_title( $win, 'feh [3 of 3] - test/ok/pnm' );
+SendKeys('c');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('d');
+test_win_title( $win, 'feh [3 of 3] - test/ok/pnm' );
+SendKeys('e');
+test_win_title( $win, 'feh [2 of 3] - test/ok/jpg' );
+SendKeys('f');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('1');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+SendKeys('x');
+ok( waitfor { -e 'a1' }, 'action 1 = X ok' );
+SendKeys('X');
+ok( waitfor { -e 'a2' }, 'action 2 = Shift+X ok' );
+SendKeys('^(x)');
+ok( waitfor { -e 'a3' }, 'action 3 = Ctrl+X ok' );
+SendKeys('^(X)');
+ok( waitfor { -e 'a4' }, 'action 4 = Ctrl+Shift+X ok' );
+SendKeys('%(x)');
+ok( waitfor { -e 'a5' }, 'action 5 = Alt+X ok' );
+
+for my $f (qw(a1 a2 a3 a4 a5)) {
+ unlink($f);
+}
+feh_stop();
+
+$ENV{XDG_CONFIG_HOME} = 'test/config/themes';
+
+$win = feh_start( '-Ttest_general', 'test/ok/png test/ok/jpg' );
+SendKeys('1');
+ok( waitfor { -e 'a1' }, 'theme: action 1 okay' );
+unlink('a1');
+feh_stop();
+
+$win = feh_start( '-Ttest_general --action1 "touch c1"',
+ 'test/ok/png test/ok/jpg' );
+SendKeys('1');
+ok( waitfor { -e 'c1' }, 'theme: commandline overrides theme' );
+unlink('c1');
+feh_stop();
+
+$win = feh_start( '-Ttest_multiline', 'test/ok/png test/ok/jpg' );
+SendKeys('1');
+ok( waitfor { -e 'a1' }, 'multiline theme: first line ok' );
+SendKeys('2');
+ok( waitfor { -e 'a2' }, 'multiline theme: second line ok' );
+SendKeys('3');
+ok( waitfor { -e 'a3' }, 'multiline theme: last line ok' );
+for my $f (qw(a1 a2 a3)) {
+ unlink($f);
+}
+feh_stop();
+
+delete $ENV{XDG_CONFIG_HOME};
+
+$win = feh_start( q{}, 'test/ok/png ' x 100 );
+test_win_title( $win, 'feh [1 of 100] - test/ok/png' );
+SendKeys('{PGD}');
+test_win_title( $win, 'feh [6 of 100] - test/ok/png' );
+SendKeys('{PGD}');
+test_win_title( $win, 'feh [11 of 100] - test/ok/png' );
+SendKeys('{HOM PGU}');
+test_win_title( $win, 'feh [96 of 100] - test/ok/png' );
+feh_stop();
+
+$win = feh_start( '--thumbnails -H 300 -W 310 --thumb-title "feh [%l] %f"',
+ 'test/ok/png test/ok/gif test/ok/jpg' );
+test_win_title( $win, 'feh [thumbnail mode]' );
+( $width, $height ) = ( GetWindowPos($win) )[ 2, 3 ];
+is( $width, 310, 'thumbnail win: Set correct width' );
+is( $height, 300, 'thumbnail win: Set correct height' );
+MoveMouseAbs( 30, 30 );
+ClickMouseButton(M_BTN1);
+($win) = WaitWindowViewable(qr{test/ok/png$});
+ok( $win, 'Thumbnail mode: Window opened' );
+test_win_title( $win, 'feh [3] test/ok/png' );
+SetInputFocus($win);
+SendKeys('x');
+ok( waitfor { not FindWindowLike(qr{^ok/png$}) }, 'Thumbnail mode: closed' );
+
+MoveMouseAbs( 90, 30 );
+ClickMouseButton(M_BTN1);
+($win) = WaitWindowViewable(qr{test/ok/gif$});
+ok( $win, 'Thumbnail mode: Window opened' );
+test_win_title( $win, 'feh [3] test/ok/gif' );
+
+MoveMouseAbs( 150, 30 );
+ClickMouseButton(M_BTN1);
+($win) = WaitWindowViewable(qr{test/ok/jpg$});
+ok( $win, 'Thumbnail mode: Other window opened' );
+test_win_title( $win, 'feh [3] test/ok/jpg' );
+
+feh_stop();
+
+feh_start( '--multiwindow', 'test/ok/png test/ok/gif test/ok/jpg' );
+ok( waitfor { FindWindowLike(qr{^feh - test/ok/png$}) }, 'multiwindow 1/3' );
+ok( waitfor { FindWindowLike(qr{^feh - test/ok/gif$}) }, 'multiwindow 2/3' );
+ok( waitfor { FindWindowLike(qr{^feh - test/ok/jpg$}) }, 'multiwindow 3/3' );
+
+($win) = FindWindowLike(qr{^feh - test/ok/gif$});
+SetInputFocus($win);
+SendKeys('x');
+ok( waitfor { not FindWindowLike(qr{^feh - test/ok/gif$}) }, 'win 1 closed' );
+ok( FindWindowLike(qr{^feh - test/ok/png$}), 'multiwindow 1/2' );
+ok( FindWindowLike(qr{^feh - test/ok/jpg$}), 'multiwindow 2/2' );
+
+($win) = FindWindowLike(qr{^feh - test/ok/jpg$});
+SetInputFocus($win);
+SendKeys('x');
+ok( waitfor { not FindWindowLike(qr{^feh - test/ok/jpg$}) }, 'win 2 closed' );
+
+($win) = FindWindowLike(qr{^feh - test/ok/png$});
+SetInputFocus($win);
+SendKeys('x');
+test_no_win('all multiwindows closed');
+
+$win = feh_start( '--start-at test/ok/jpg',
+ 'test/ok/png test/ok/gif test/ok/jpg' );
+test_win_title( $win, 'feh [3 of 3] - test/ok/jpg' );
+SendKeys('{RIG}');
+test_win_title( $win, 'feh [1 of 3] - test/ok/png' );
+feh_stop();
+
+feh_start( '--caption-path .captions', 'test/ok/png' );
+SendKeys('cFoo Bar Quux Moep~');
+feh_stop();
+ok( -d 'test/ok/.captions', 'autocreated captions directory' );
+is(
+ slurp('test/ok/.captions/png.txt'),
+ 'Foo Bar Quux Moep',
+ 'Correct caption saved'
+);
+
+feh_start( '--caption-path .captions', 'test/ok/png' );
+SendKeys('c');
+SendKeys( '{BKS}' x length('Foo Bar Quux Moep') );
+SendKeys('Foo Bar^(~)miep~');
+feh_stop();
+is(
+ slurp('test/ok/.captions/png.txt'),
+ "Foo Bar\nmiep",
+ 'Caption with newline + correct backspace'
+);
+
+unlink('test/ok/.captions/png.txt');
+rmdir('test/ok/.captions');
+
+$win = feh_start( '--filelist test/filelist',
+ 'test/ok/png test/ok/gif test/ok/png test/ok/jpg' );
+SendKeys('{DEL}');
+test_win_title( $win, "feh [1 of 3] - ${pwd}/test/ok/gif" );
+feh_stop();
+
+is( slurp('test/filelist'), <<"EOF", 'Filelist saved' );
+${pwd}/test/ok/gif
+${pwd}/test/ok/png
+${pwd}/test/ok/jpg
+EOF
+
+$win = feh_start( '--filelist test/filelist', q{} );
+test_win_title( $win, "feh [1 of 3] - ${pwd}/test/ok/gif" );
+feh_stop();
+unlink('test/filelist');
+
+$win = feh_start('--geometry 423x232');
+( undef, undef, $width, $height ) = GetWindowPos($win);
+is( $width, 423, '--geometry: correct width' );
+is( $height, 232, '--geometry: correct height' );
+feh_stop();
+
+$win = feh_start('--fullscreen');
+( undef, undef, $width, $height ) = GetWindowPos($win);
+ok( [ ( GetWindowPos($win) )[ 2, 3 ] ] ~~ [ GetScreenRes() ],
+ 'fullscreen uses full screen size' );
+feh_stop();
+
+$win = feh_start( q{}, 'test/ok/png ' . 'test/fail/png ' x 7 . 'test/ok/gif' );
+test_win_title( $win, 'feh [1 of 9] - test/ok/png' );
+SendKeys('{RIG}');
+test_win_title( $win, 'feh [2 of 2] - test/ok/gif' );
+SendKeys('{LEF}');
+test_win_title( $win, 'feh [1 of 2] - test/ok/png' );
+SendKeys('{LEF}');
+test_win_title( $win, 'feh [2 of 2] - test/ok/gif' );
+feh_stop();
+
+$win = feh_start();
+( undef, undef, $width, $height ) = GetWindowPos($win);
+is( $width, 16, 'correct default window width' );
+is( $height, 16, 'correct default window height' );
+
+ResizeWindow( $win, 25, 30 );
+( undef, undef, $width, $height ) = GetWindowPos($win);
+
+SKIP: {
+ if ( not( [ $width, $height ] ~~ [ 25, 30 ] ) ) {
+ skip( 'ResizeWindow failed', 2 );
+ }
+ PressKey('w');
+ ok( waitfor { [ ( GetWindowPos($win) )[ 2, 3 ] ] ~~ [ 16, 16 ] },
+ 'w key resizes correctly' );
+}
+feh_stop();
+
+$win = feh_start( q{}, 'test/huge.png' );
+ok(
+ waitfor {
+ ( GetWindowPos($win) )[2] == ( GetScreenRes() )[0]
+ || ( GetWindowPos($win) )[3] == ( GetScreenRes() )[1];
+ },
+ 'Large window limited to screen size'
+);
+feh_stop();
+
+$win = feh_start( '--no-screen-clip', 'test/huge.png' );
+ok(
+ waitfor {
+ [ ( GetWindowPos($win) )[ 2, 3 ] ] ~~ [ 4000, 3000 ];
+ },
+ 'disabled screen clip'
+);
+feh_stop();
+
+# GH-35 "Custom window title crashes feh on unloadable files"
+$win = feh_start( '--title "feh %h"', 'test/ok/png test/fail/png test/ok/jpg' );
+SendKeys('{RIG}');
+test_win_title( $win, 'feh 16' );
+feh_stop();
diff --git a/test/feh-scr.i b/test/feh-scr-i.t
index d6d55b1..8f0cb09 100755
--- a/test/feh-scr.i
+++ b/test/feh-scr-i.t
@@ -10,18 +10,19 @@ use Test::More tests => 54;
use Time::HiRes qw/sleep/;
use X11::GUITest qw/:ALL/;
-my ($pid_xnest, $pid_twm);
+my ( $pid_xnest, $pid_twm );
my $win;
-my ($width, $height);
-my $pwd = getcwd();
+my ( $width, $height );
+my $pwd = getcwd();
my $test_id = 0;
+my $scr_dir = '/tmp/feh-test-scr';
$ENV{HOME} = 'test';
sub waitfor(&) {
my ($sub) = @_;
my $out;
- for (1 .. 10) {
+ for ( 1 .. 10 ) {
sleep(0.05);
$out = &{$sub};
if ($out) {
@@ -32,20 +33,20 @@ sub waitfor(&) {
}
sub feh_start {
- my ($opts, $files) = @_;
+ my ( $opts, $files ) = @_;
my $id;
- $opts //= q{};
+ $opts //= q{};
$files //= 'test/ok/png';
StartApp("feh ${opts} ${files}");
($id) = WaitWindowViewable(qr{^feh});
- if (not $id) {
+ if ( not $id ) {
BAIL_OUT("Unable to start feh ${opts} ${files}");
}
- if (not SetInputFocus($id)) {
+ if ( not SetInputFocus($id) ) {
BAIL_OUT("Unable to focus window");
}
@@ -54,30 +55,30 @@ sub feh_start {
sub feh_stop {
SendKeys('{ESC}');
- if (not waitfor { not FindWindowLike(qr{^feh}) }) {
+ if ( not waitfor { not FindWindowLike(qr{^feh}) } ) {
BAIL_OUT("Unclosed feh window still open, cannot continue");
}
}
sub same_files {
- my ($one, $two) = @_;
+ my ( $one, $two ) = @_;
my $img_one = GD::Image->new($one);
my $img_two = GD::Image->new($two);
- if (not defined $img_one or not defined $img_two) {
+ if ( not defined $img_one or not defined $img_two ) {
return 0;
}
- return( ! ($img_one->compare($img_two) & GD_CMP_IMAGE));
+ return ( !( $img_one->compare($img_two) & GD_CMP_IMAGE ) );
}
sub check_scr {
my ($file) = @_;
- system("import -silent -window root /tmp/feh_${$}.png");
+ system("import -silent -window root ${scr_dir}/feh_${$}.png");
- return same_files("test/scr/${file}", "/tmp/feh_${$}.png");
+ return same_files( "test/scr/${file}", "${scr_dir}/feh_${$}.png" );
}
sub test_scr {
@@ -86,22 +87,27 @@ sub test_scr {
$test_id++;
- if (waitfor { check_scr($file) }) {
+ if ( waitfor { check_scr($file) } ) {
pass($msg);
}
else {
fail($msg);
- rename("/tmp/feh_${$}.png", "/tmp/feh_${$}_${test_id}_${file}.png");
+ rename( "${scr_dir}/feh_${$}.png",
+ "${scr_dir}/feh_${$}_${test_id}_${file}.png" );
}
}
-if (FindWindowLike(qr{^feh})) {
+if ( FindWindowLike(qr{^feh}) ) {
BAIL_OUT('It appears you have an open feh window. Please close it.');
}
+if ( not -d $scr_dir ) {
+ mkdir($scr_dir);
+}
+
feh_start(
"--draw-actions --draw-filename --info 'echo foo; echo bar' "
- . '--action quux --action5 baz --action8 "nrm \'%f\'"',
+ . '--action quux --action5 baz --action8 "nrm \'%f\'"',
'test/bg/exact/in test/bg/large/w/in test/bg/large/h/in'
);
test_scr('draw_all_multi');
@@ -109,23 +115,17 @@ feh_stop();
feh_start(
"--draw-actions --draw-filename --info 'echo foo; echo bar' "
- . '--action quux --action5 baz --action8 "nrm \'%f\'"',
+ . '--action quux --action5 baz --action8 "nrm \'%f\'"',
'test/bg/exact/in'
);
test_scr('draw_all_one');
feh_stop();
-feh_start(
- '--fullscreen',
- 'test/bg/large/w/in'
-);
+feh_start( '--fullscreen', 'test/bg/large/w/in' );
test_scr('feh_full_lwi');
feh_stop();
-feh_start(
- q{},
- 'test/bg/large/w/in'
-);
+feh_start( q{}, 'test/bg/large/w/in' );
test_scr('feh_lwi');
SendKeys('^({RIG})');
@@ -145,31 +145,21 @@ test_scr('feh_lwi_scroll_rdrul');
feh_stop();
-feh_start(
- '--scale-down',
- 'test/bg/large/w/in'
-);
+feh_start( '--scale-down', 'test/bg/large/w/in' );
test_scr('feh_scaledown_lwi');
feh_stop();
-feh_start(
- '--thumbnails',
- 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm'
-);
+feh_start( '--thumbnails', 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm' );
test_scr('thumbnail_default');
feh_stop();
-feh_start(
- '--index --limit-width 400',
- 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm'
-);
+feh_start( '--index --limit-width 400',
+ 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm' );
test_scr('index_w400');
feh_stop();
-feh_start(
- '--fullindex --limit-width 400',
- 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm'
-);
+feh_start( '--fullindex --limit-width 400',
+ 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm' );
test_scr('index_full_w400');
feh_stop();
@@ -180,37 +170,28 @@ feh_start(
test_scr('index_full_w400');
feh_stop();
-feh_start(
- '--index --limit-height 400',
- 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm'
-);
+feh_start( '--index --limit-height 400',
+ 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm' );
test_scr('index_h400');
feh_stop();
-feh_start(
- '--fullindex --limit-height 400',
- 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm'
-);
+feh_start( '--fullindex --limit-height 400',
+ 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm' );
test_scr('index_full_h400');
feh_stop();
-feh_start(
- '--geometry +10+20',
- 'test/ok/png'
-);
+feh_start( '--geometry +10+20', 'test/ok/png' );
test_scr('geometry_offset_only');
feh_stop();
-feh_start(
- '--caption-path .tc',
- 'test/bg/exact/in'
-);
+feh_start( '--caption-path .tc', 'test/bg/exact/in' );
test_scr('caption_none');
SendKeys('c');
test_scr('caption_new');
-SendKeys('Picknick im Zenit metaphysischen Wiederscheins der astralen Kuhglocke');
+SendKeys(
+ 'Picknick im Zenit metaphysischen Wiederscheins der astralen Kuhglocke');
test_scr('caption_while');
SendKeys('~');
@@ -219,7 +200,7 @@ test_scr('caption_done');
SendKeys('c');
test_scr('caption_while');
-SendKeys('{BKS}' x 80);
+SendKeys( '{BKS}' x 80 );
test_scr('caption_new');
SendKeys('~');
@@ -230,66 +211,43 @@ test_scr('caption_none');
feh_stop();
-feh_start(
- '--info "echo \'%f\n%wx%h\'"',
- 'test/bg/exact/in'
-);
+feh_start( '--info "echo \'%f\n%wx%h\'"', 'test/bg/exact/in' );
test_scr('draw_info');
feh_stop();
-feh_start(
- '--info "echo \'%f\n%wx%h\'" --draw-tinted',
- 'test/bg/exact/in'
-);
+feh_start( '--info "echo \'%f\n%wx%h\'" --draw-tinted', 'test/bg/exact/in' );
test_scr('draw_info_tinted');
feh_stop();
-feh_start(
- '--draw-actions --action8 "nrm \'%f\'"',
- 'test/bg/exact/in'
-);
+feh_start( '--draw-actions --action8 "nrm \'%f\'"', 'test/bg/exact/in' );
test_scr('draw_action');
feh_stop();
-feh_start(
- '--draw-actions --action8 "nrm \'%f\'" --draw-tinted',
- 'test/bg/exact/in'
-);
+feh_start( '--draw-actions --action8 "nrm \'%f\'" --draw-tinted',
+ 'test/bg/exact/in' );
test_scr('draw_action_tinted');
feh_stop();
-feh_start(
- '--draw-filename',
- 'test/bg/exact/in'
-);
+feh_start( '--draw-filename', 'test/bg/exact/in' );
test_scr('draw_filename');
feh_stop();
-feh_start(
- '--draw-filename --draw-tinted',
- 'test/bg/exact/in'
-);
+feh_start( '--draw-filename --draw-tinted', 'test/bg/exact/in' );
test_scr('draw_filename_tinted');
feh_stop();
-feh_start(
- '--draw-filename --draw-actions --action8 "nrm \'%f\'"',
- 'test/bg/exact/in'
-);
+feh_start( '--draw-filename --draw-actions --action8 "nrm \'%f\'"',
+ 'test/bg/exact/in' );
test_scr('draw_filename_action');
feh_stop();
feh_start(
'--draw-filename --draw-actions --action8 "nrm \'%f\'" --draw-tinted',
- 'test/bg/exact/in'
-);
+ 'test/bg/exact/in' );
test_scr('draw_filename_action_tinted');
feh_stop();
-feh_start(
- '--action8 "nrm \'%f\'"',
- 'test/bg/exact/in'
-);
+feh_start( '--action8 "nrm \'%f\'"', 'test/bg/exact/in' );
test_scr('draw_nothing');
SendKeys('d');
@@ -306,14 +264,11 @@ test_scr('draw_nothing');
feh_stop();
-feh_start(
- '--draw-tinted',
- 'test/bg/exact/in'
-);
+feh_start( '--draw-tinted', 'test/bg/exact/in' );
test_scr('draw_nothing');
feh_stop();
-feh_start(q{}, 'test/bg/large/h/in');
+feh_start( q{}, 'test/bg/large/h/in' );
test_scr('feh_lhi');
SendKeys('{UP}');
@@ -336,7 +291,7 @@ test_scr('feh_lhi_iirrio');
feh_stop();
-feh_start(q{}, 'test/bg/large/h/in');
+feh_start( q{}, 'test/bg/large/h/in' );
test_scr('feh_lhi');
SendKeys('{DOW}');
@@ -350,22 +305,22 @@ test_scr('feh_lhi_ooo');
feh_stop();
-feh_start(q{}, 'test/bg/transparency');
+feh_start( q{}, 'test/bg/transparency' );
test_scr('feh_ibg_default');
feh_stop();
-feh_start('--image-bg checks', 'test/bg/transparency');
+feh_start( '--image-bg checks', 'test/bg/transparency' );
test_scr('feh_ibg_default');
feh_stop();
-feh_start('--image-bg black', 'test/bg/transparency');
+feh_start( '--image-bg black', 'test/bg/transparency' );
test_scr('feh_ibg_black');
feh_stop();
-feh_start('--image-bg white', 'test/bg/transparency');
+feh_start( '--image-bg white', 'test/bg/transparency' );
test_scr('feh_ibg_white');
feh_stop();
unlink('test/bg/exact/.tc/in.txt');
rmdir('test/bg/exact/.tc');
-unlink("/tmp/feh_${$}.png");
+unlink("${scr_dir}/feh_${$}.png");
diff --git a/test/feh.i b/test/feh.i
deleted file mode 100755
index f9dddfb..0000000
--- a/test/feh.i
+++ /dev/null
@@ -1,453 +0,0 @@
-#!/usr/bin/env perl
-use strict;
-use warnings;
-use 5.010;
-
-use Cwd;
-use Test::More tests => 103;
-use Time::HiRes qw/sleep/;
-use X11::GUITest qw/:ALL/;
-
-my $win;
-my ($width, $height);
-my $pwd = getcwd();
-
-$ENV{HOME} = 'test';
-
-sub waitfor(&) {
- my ($sub) = @_;
- my $out;
- for (1 .. 40) {
- sleep(0.05);
- $out = &{$sub};
- if ($out) {
- return $out;
- }
- }
- return 0;
-}
-
-sub feh_start {
- my ($opts, $files) = @_;
- my $id;
-
- $opts //= q{};
- $files //= 'test/ok/png';
-
- StartApp("feh ${opts} ${files}");
- ($id) = WaitWindowViewable(qr{^feh});
-
- if (not $id) {
- BAIL_OUT("Unable to start feh ${opts} ${files}");
- }
-
- if (not SetInputFocus($id)) {
- BAIL_OUT("Unable to focus window");
- }
-
- return $id;
-}
-
-sub feh_stop {
- SendKeys('{ESC}');
- if (not waitfor { not FindWindowLike(qr{^feh}) }) {
- BAIL_OUT("Unclosed feh window still open, cannot continue");
- }
-}
-
-sub test_no_win {
- my ($reason) = @_;
-
- if (waitfor { not FindWindowLike(qr{^feh}) }) {
- pass("Window closed ($reason)");
- }
- else {
- fail("Window closed ($reason)");
- BAIL_OUT("unclosed window still open, cannot continue");
- }
-}
-
-sub test_win_title {
- my ($win, $wtitle) = @_;
- my $rtitle;
-
- if (waitfor { GetWindowName($win) eq $wtitle }) {
- pass("Window has title: $wtitle");
- }
- else {
- $rtitle = GetWindowName($win);
- fail("Window has title: $wtitle");
- diag("expected: $wtitle");
- diag(" got: $rtitle");
- }
-}
-
-sub slurp {
- my ($file) = @_;
- my $ret;
- local $/ = undef;
- open(my $fh, '<', $file) or die("Can't open $file: $!");
- $ret = <$fh>;
- close($fh) or die("Can't close $file: $!");
- return($ret);
-}
-
-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");
-}
-
-$win = feh_start(q{}, 'test/ok/png');
-test_win_title($win, 'feh [1 of 1] - test/ok/png');
-feh_stop();
-
-$win = feh_start(q{}, 'test/ok/png test/ok/jpg test/ok/gif');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('{RIG}');
-test_win_title($win, 'feh [2 of 3] - test/ok/jpg');
-SendKeys('n');
-test_win_title($win, 'feh [3 of 3] - test/ok/gif');
-SendKeys('{SPA}');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('{LEF}');
-test_win_title($win, 'feh [3 of 3] - test/ok/gif');
-SendKeys('p');
-test_win_title($win, 'feh [2 of 3] - test/ok/jpg');
-SendKeys('{BAC}');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('p');
-test_win_title($win, 'feh [3 of 3] - test/ok/gif');
-SendKeys('{DEL}');
-test_win_title($win, 'feh [1 of 2] - test/ok/png');
-SendKeys('{DEL}');
-test_win_title($win, 'feh [1 of 1] - test/ok/jpg');
-SendKeys('{DEL}');
-test_no_win("Removed all images from slideshow");
-
-$win = feh_start('--title \'feh %m %u/%l %n\'',
- 'test/ok/png test/ok/jpg test/ok/gif');
-test_win_title($win, 'feh slideshow 1/3 png');
-SendKeys('{RIG}');
-test_win_title($win, 'feh slideshow 2/3 jpg');
-feh_stop();
-
-feh_start('--cycle-once', 'test/ok/png test/ok/jpg');
-for (1 .. 2) {
- SendKeys('{RIG}');
-}
-test_no_win("--cycle-once -> window closed");
-
-feh_start('--cycle-once --slideshow-delay 0.5',
- 'test/ok/png test/ok/jpg test/ok/gif');
-sleep(1.5);
-test_no_win('cycle-once + slideshow-delay -> window closed');
-
-$win = feh_start('--cycle-once --slideshow-delay -0.01',
- 'test/ok/png test/ok/jpg test/ok/gif');
-
-test_win_title($win, 'feh [1 of 3] - test/ok/png [Paused]');
-
-SendKeys('h');
-test_no_win('cycle-once + negative delay + [h]');
-
-$win = feh_start(q{}, 'test/ok/png test/ok/gif test/ok/gif test/ok/jpg');
-for (1 .. 2) {
- SendKeys('{END}');
- test_win_title($win, 'feh [4 of 4] - test/ok/jpg');
-}
-for (1 .. 2) {
- SendKeys('{HOM}');
- test_win_title($win, 'feh [1 of 4] - test/ok/png');
-}
-
-SendKeys('{PGU}');
-test_win_title($win, 'feh [4 of 4] - test/ok/jpg');
-SendKeys('{PGD}');
-test_win_title($win, 'feh [1 of 4] - test/ok/png');
-SendKeys('{PGD}');
-test_win_title($win, 'feh [2 of 4] - test/ok/gif');
-
-feh_stop();
-
-$win = feh_start('--slideshow-delay 1', 'test/ok/png test/ok/gif test/ok/jpg');
-sleep(1.7);
-test_win_title($win, 'feh [3 of 3] - test/ok/jpg');
-SendKeys('h');
-test_win_title($win, 'feh [3 of 3] - test/ok/jpg [Paused]');
-SendKeys('{RIG}');
-test_win_title($win, 'feh [1 of 3] - test/ok/png [Paused]');
-SendKeys('h');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-sleep(0.8);
-test_win_title($win, 'feh [2 of 3] - test/ok/gif');
-feh_stop();
-
-$win = feh_start(
- '--action3 ";echo foo" --action7 "echo foo" ' .
- '--action8 ";touch feh_test_%u_%l" --action9 "rm feh_test_%u_%l"',
- 'test/ok/png test/ok/gif test/ok/jpg'
-);
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('3');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('7');
-test_win_title($win, 'feh [2 of 3] - test/ok/gif');
-SendKeys('8');
-test_win_title($win, 'feh [2 of 3] - test/ok/gif');
-ok(-e 'feh_test_2_3', 'feh action created file with correct format specifiers');
-SendKeys('9');
-ok(waitfor { not -e 'feh_test_2_3' }, 'feh action removed file');
-test_win_title($win, 'feh [3 of 3] - test/ok/jpg');
-feh_stop();
-
-
-# .config/feh/keys
-# Action Unbinding + non-conflicting none/shift/control/meta modifiers
-
-$ENV{XDG_CONFIG_HOME} = 'test/config/keys';
-
-$win = feh_start(
- '--action1 "touch a1" --action2 "touch a2" ' .
- '--action3 "touch a3" --action4 "touch a4" ' .
- '--action5 "touch a5" --action6 "touch a6" ',
- 'test/ok/png test/ok/jpg test/ok/pnm'
-);
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('6');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('{RIG}');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('a');
-test_win_title($win, 'feh [2 of 3] - test/ok/jpg');
-SendKeys('b');
-test_win_title($win, 'feh [3 of 3] - test/ok/pnm');
-SendKeys('c');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('d');
-test_win_title($win, 'feh [3 of 3] - test/ok/pnm');
-SendKeys('e');
-test_win_title($win, 'feh [2 of 3] - test/ok/jpg');
-SendKeys('f');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('1');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-SendKeys('x');
-ok(waitfor { -e 'a1' }, 'action 1 = X ok');
-SendKeys('X');
-ok(waitfor { -e 'a2' }, 'action 2 = Shift+X ok');
-SendKeys('^(x)');
-ok(waitfor { -e 'a3' }, 'action 3 = Ctrl+X ok');
-SendKeys('^(X)');
-ok(waitfor { -e 'a4' }, 'action 4 = Ctrl+Shift+X ok');
-SendKeys('%(x)');
-ok(waitfor { -e 'a5' }, 'action 5 = Alt+X ok');
-for my $f (qw(a1 a2 a3 a4 a5)) {
- unlink($f);
-}
-feh_stop();
-
-$ENV{XDG_CONFIG_HOME} = 'test/config/themes';
-
-$win = feh_start(
- '-Ttest_general',
- 'test/ok/png test/ok/jpg'
-);
-SendKeys('1');
-ok(waitfor { -e 'a1' }, 'theme: action 1 okay');
-unlink('a1');
-feh_stop();
-
-$win = feh_start(
- '-Ttest_general --action1 "touch c1"',
- 'test/ok/png test/ok/jpg'
-);
-SendKeys('1');
-ok(waitfor { -e 'c1' }, 'theme: commandline overrides theme');
-unlink('c1');
-feh_stop();
-
-$win = feh_start(
- '-Ttest_multiline',
- 'test/ok/png test/ok/jpg'
-);
-SendKeys('1');
-ok(waitfor { -e 'a1' }, 'multiline theme: first line ok');
-SendKeys('2');
-ok(waitfor { -e 'a2' }, 'multiline theme: second line ok');
-SendKeys('3');
-ok(waitfor { -e 'a3' }, 'multiline theme: last line ok');
-for my $f (qw(a1 a2 a3)) {
- unlink($f);
-}
-feh_stop();
-
-delete $ENV{XDG_CONFIG_HOME};
-
-
-$win = feh_start(q{}, 'test/ok/png ' x 100);
-test_win_title($win, 'feh [1 of 100] - test/ok/png');
-SendKeys('{PGD}');
-test_win_title($win, 'feh [6 of 100] - test/ok/png');
-SendKeys('{PGD}');
-test_win_title($win, 'feh [11 of 100] - test/ok/png');
-SendKeys('{HOM PGU}');
-test_win_title($win, 'feh [96 of 100] - test/ok/png');
-feh_stop();
-
-$win = feh_start('--thumbnails -H 300 -W 310 --thumb-title "feh [%l] %f"',
- 'test/ok/png test/ok/gif test/ok/jpg');
-test_win_title($win, 'feh [thumbnail mode]');
-($width, $height) = (GetWindowPos($win))[2,3];
-is($width, 310, 'thumbnail win: Set correct width');
-is($height, 300, 'thumbnail win: Set correct height');
-MoveMouseAbs(30, 30);
-ClickMouseButton(M_BTN1);
-($win) = WaitWindowViewable(qr{test/ok/png$});
-ok($win, 'Thumbnail mode: Window opened');
-test_win_title($win, 'feh [3] test/ok/png');
-SetInputFocus($win);
-SendKeys('x');
-ok(waitfor { not FindWindowLike(qr{^ok/png$}) }, 'Thumbnail mode: closed');
-
-MoveMouseAbs(90, 30);
-ClickMouseButton(M_BTN1);
-($win) = WaitWindowViewable(qr{test/ok/gif$});
-ok($win, 'Thumbnail mode: Window opened');
-test_win_title($win, 'feh [3] test/ok/gif');
-
-MoveMouseAbs(150,30);
-ClickMouseButton(M_BTN1);
-($win) = WaitWindowViewable(qr{test/ok/jpg$});
-ok($win, 'Thumbnail mode: Other window opened');
-test_win_title($win, 'feh [3] test/ok/jpg');
-
-feh_stop();
-
-feh_start('--multiwindow', 'test/ok/png test/ok/gif test/ok/jpg');
-ok(waitfor { FindWindowLike(qr{^feh - test/ok/png$}) }, 'multiwindow 1/3');
-ok(waitfor { FindWindowLike(qr{^feh - test/ok/gif$}) }, 'multiwindow 2/3');
-ok(waitfor { FindWindowLike(qr{^feh - test/ok/jpg$}) }, 'multiwindow 3/3');
-
-($win) = FindWindowLike(qr{^feh - test/ok/gif$});
-SetInputFocus($win);
-SendKeys('x');
-ok(waitfor { not FindWindowLike(qr{^feh - test/ok/gif$}) }, 'win 1 closed');
-ok(FindWindowLike(qr{^feh - test/ok/png$}), 'multiwindow 1/2');
-ok(FindWindowLike(qr{^feh - test/ok/jpg$}), 'multiwindow 2/2');
-
-($win) = FindWindowLike(qr{^feh - test/ok/jpg$});
-SetInputFocus($win);
-SendKeys('x');
-ok(waitfor { not FindWindowLike(qr{^feh - test/ok/jpg$}) }, 'win 2 closed');
-
-($win) = FindWindowLike(qr{^feh - test/ok/png$});
-SetInputFocus($win);
-SendKeys('x');
-test_no_win('all multiwindows closed');
-
-$win = feh_start('--start-at test/ok/jpg', 'test/ok/png test/ok/gif test/ok/jpg');
-test_win_title($win, 'feh [3 of 3] - test/ok/jpg');
-SendKeys('{RIG}');
-test_win_title($win, 'feh [1 of 3] - test/ok/png');
-feh_stop();
-
-feh_start('--caption-path .captions', 'test/ok/png');
-SendKeys('cFoo Bar Quux Moep~');
-feh_stop();
-ok(-d 'test/ok/.captions', 'autocreated captions directory');
-is(slurp('test/ok/.captions/png.txt'), 'Foo Bar Quux Moep',
- 'Correct caption saved');
-
-feh_start('--caption-path .captions', 'test/ok/png');
-SendKeys('c');
-SendKeys('{BKS}' x length('Foo Bar Quux Moep'));
-SendKeys('Foo Bar^(~)miep~');
-feh_stop();
-is(slurp('test/ok/.captions/png.txt'), "Foo Bar\nmiep",
- 'Caption with newline + correct backspace');
-
-unlink('test/ok/.captions/png.txt');
-rmdir('test/ok/.captions');
-
-$win = feh_start('--filelist test/filelist',
- 'test/ok/png test/ok/gif test/ok/png test/ok/jpg');
-SendKeys('{DEL}');
-test_win_title($win, "feh [1 of 3] - ${pwd}/test/ok/gif");
-feh_stop();
-
-is(slurp('test/filelist'), <<"EOF", 'Filelist saved');
-${pwd}/test/ok/gif
-${pwd}/test/ok/png
-${pwd}/test/ok/jpg
-EOF
-
-$win = feh_start('--filelist test/filelist', q{});
-test_win_title($win, "feh [1 of 3] - ${pwd}/test/ok/gif");
-feh_stop();
-unlink('test/filelist');
-
-$win = feh_start('--geometry 423x232');
-(undef, undef, $width, $height) = GetWindowPos($win);
-is($width, 423, '--geometry: correct width');
-is($height, 232, '--geometry: correct height');
-feh_stop();
-
-$win = feh_start('--fullscreen');
-(undef, undef, $width, $height) = GetWindowPos($win);
-ok([(GetWindowPos($win))[2, 3]] ~~ [GetScreenRes()],
- 'fullscreen uses full screen size');
-feh_stop();
-
-$win = feh_start(q{}, 'test/ok/png ' . 'test/fail/png ' x 7 . 'test/ok/gif');
-test_win_title($win, 'feh [1 of 9] - test/ok/png');
-SendKeys('{RIG}');
-test_win_title($win, 'feh [2 of 2] - test/ok/gif');
-SendKeys('{LEF}');
-test_win_title($win, 'feh [1 of 2] - test/ok/png');
-SendKeys('{LEF}');
-test_win_title($win, 'feh [2 of 2] - test/ok/gif');
-feh_stop();
-
-$win = feh_start();
-(undef, undef, $width, $height) = GetWindowPos($win);
-is($width, 16, 'correct default window width');
-is($height, 16, 'correct default window height');
-
-ResizeWindow($win, 25, 30);
-(undef, undef, $width, $height) = GetWindowPos($win);
-
-SKIP: {
- if (not ([$width, $height] ~~ [25, 30])) {
- skip('ResizeWindow failed', 2)
- }
- PressKey('w');
- ok(waitfor { [(GetWindowPos($win))[2, 3]] ~~ [16, 16] },
- 'w key resizes correctly');
-}
-feh_stop();
-
-$win = feh_start(q{}, 'test/huge.png');
-ok(waitfor {
- (GetWindowPos($win))[2] == (GetScreenRes())[0]
- || (GetWindowPos($win))[3] == (GetScreenRes())[1]
- },
- 'Large window limited to screen size');
-feh_stop();
-
-$win = feh_start('--no-screen-clip', 'test/huge.png');
-ok(waitfor {
- [(GetWindowPos($win))[2, 3]] ~~ [4000, 3000]
- },
- 'disabled screen clip');
-feh_stop();
-
-# GH-35 "Custom window title crashes feh on unloadable files"
-$win = feh_start('--title "feh %h"', 'test/ok/png test/fail/png test/ok/jpg');
-SendKeys('{RIG}');
-test_win_title($win, 'feh 16');
-feh_stop();
diff --git a/test/feh.t b/test/feh.t
index e530087..a9d2a04 100644
--- a/test/feh.t
+++ b/test/feh.t
@@ -6,11 +6,11 @@ use Test::Command tests => 71;
$ENV{HOME} = 'test';
-my $feh = "src/feh";
-my $images_ok = 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm';
+my $feh = "src/feh";
+my $images_ok = 'test/ok/gif test/ok/jpg test/ok/png test/ok/pnm';
my $images_fail = 'test/fail/gif test/fail/jpg test/fail/png test/fail/pnm';
-my $images = "${images_ok} ${images_fail}";
-my $has_help = 0;
+my $images = "${images_ok} ${images_fail}";
+my $has_help = 0;
my $feh_name = $ENV{'PACKAGE'};
@@ -30,118 +30,115 @@ If you absolutely need to run it the other way, use
EOF
-if (length($feh_name) == 0) {
+if ( length($feh_name) == 0 ) {
die($err_no_env);
}
my $version = qx{$feh --version};
-if ($version =~ m{ Compile-time \s switches : \s .* help }ox) {
+if ( $version =~ m{ Compile-time \s switches : \s .* help }ox ) {
$has_help = 1;
}
-my $re_warning =
- qr{${feh_name} WARNING: test/fail/... \- No Imlib2 loader for that file format\n};
-my $re_loadable = qr{test/ok/...};
-my $re_unloadable = qr{test/fail/...};
+my $re_warning
+ = qr{${feh_name} WARNING: test/fail/... \- No Imlib2 loader for that file format\n};
+my $re_loadable = qr{test/ok/...};
+my $re_unloadable = qr{test/fail/...};
my $re_list_action = qr{test/ok/... 16x16};
-my $cmd = Test::Command->new(cmd => "$feh --version");
+my $cmd = Test::Command->new( cmd => "$feh --version" );
$cmd->exit_is_num(0);
$cmd->stderr_is_eq('');
-$cmd = Test::Command->new(cmd => "$feh --loadable $images");
+$cmd = Test::Command->new( cmd => "$feh --loadable $images" );
$cmd->exit_is_num(1);
$cmd->stdout_like($re_loadable);
$cmd->stderr_is_eq('');
$cmd = Test::Command->new(
- cmd => "$feh --loadable --action 'echo touch %f' $images"
-);
+ cmd => "$feh --loadable --action 'echo touch %f' $images" );
$cmd->exit_is_num(1);
$cmd->stdout_is_file('test/nx_action/loadable_action');
$cmd->stderr_is_eq('');
$cmd = Test::Command->new(
- cmd => "$feh --loadable --action ';echo touch %f' $images"
-);
+ cmd => "$feh --loadable --action ';echo touch %f' $images" );
$cmd->exit_is_num(1);
$cmd->stdout_is_file('test/nx_action/loadable_naction');
$cmd->stderr_is_eq('');
$cmd = Test::Command->new(
- cmd => "$feh --unloadable --action 'echo rm %f' $images"
-);
+ cmd => "$feh --unloadable --action 'echo rm %f' $images" );
$cmd->exit_is_num(1);
$cmd->stdout_is_file('test/nx_action/unloadable_action');
$cmd->stderr_is_eq('');
$cmd = Test::Command->new(
- cmd => "$feh --unloadable --action ';echo rm %f' $images"
-);
+ cmd => "$feh --unloadable --action ';echo rm %f' $images" );
$cmd->exit_is_num(1);
$cmd->stdout_is_file('test/nx_action/unloadable_naction');
$cmd->stderr_is_eq('');
-$cmd = Test::Command->new(cmd => "$feh --unloadable $images");
+$cmd = Test::Command->new( cmd => "$feh --unloadable $images" );
$cmd->exit_is_num(1);
$cmd->stdout_like($re_unloadable);
$cmd->stderr_is_eq('');
-$cmd = Test::Command->new(cmd => "$feh --list $images");
+$cmd = Test::Command->new( cmd => "$feh --list $images" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/default');
$cmd->stderr_like($re_warning);
for my $sort (qw/name filename width height pixels size format/) {
- $cmd = Test::Command->new(cmd => "$feh --list $images --sort $sort");
+ $cmd = Test::Command->new( cmd => "$feh --list $images --sort $sort" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file("test/list/$sort");
$cmd->stderr_like($re_warning);
}
-$cmd = Test::Command->new(cmd => "$feh --list $images --sort format --reverse");
+$cmd
+ = Test::Command->new( cmd => "$feh --list $images --sort format --reverse" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/format_reverse');
$cmd->stderr_like($re_warning);
$cmd = Test::Command->new(
- cmd => "$feh --list --recursive --sort filename test/ok"
-);
+ cmd => "$feh --list --recursive --sort filename test/ok" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/filename_recursive');
$cmd->stderr_is_eq('');
-$cmd = Test::Command->new(cmd => "$feh --customlist '%f; %h; %l; %m; %n; %p; "
- . "%s; %t; %u; %w' $images");
+$cmd = Test::Command->new( cmd => "$feh --customlist '%f; %h; %l; %m; %n; %p; "
+ . "%s; %t; %u; %w' $images" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/custom');
$cmd->stderr_like($re_warning);
-$cmd = Test::Command->new(cmd => "$feh --list --quiet $images");
+$cmd = Test::Command->new( cmd => "$feh --list --quiet $images" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/default');
$cmd->stderr_is_eq('');
-$cmd = Test::Command->new(cmd =>
- "$feh --quiet --list --action 'echo \"%f %wx%h\" >&2' $images");
+$cmd = Test::Command->new(
+ cmd => "$feh --quiet --list --action 'echo \"%f %wx%h\" >&2' $images" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/default');
$cmd->stderr_like($re_list_action);
-$cmd = Test::Command->new(cmd => "$feh --list --min-dimension 20x20 $images_ok");
+$cmd
+ = Test::Command->new( cmd => "$feh --list --min-dimension 20x20 $images_ok" );
$cmd->exit_is_num(1);
$cmd->stdout_is_eq('');
@@ -152,7 +149,8 @@ else {
$cmd->stderr_is_file('test/no-loadable-files');
}
-$cmd = Test::Command->new(cmd => "$feh --list --max-dimension 10x10 $images_ok");
+$cmd
+ = Test::Command->new( cmd => "$feh --list --max-dimension 10x10 $images_ok" );
$cmd->exit_is_num(1);
$cmd->stdout_is_eq('');
@@ -163,13 +161,15 @@ else {
$cmd->stderr_is_file('test/no-loadable-files');
}
-$cmd = Test::Command->new(cmd => "$feh --list --min-dimension 16x16 $images_ok");
+$cmd
+ = Test::Command->new( cmd => "$feh --list --min-dimension 16x16 $images_ok" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/default');
$cmd->stderr_is_eq('');
-$cmd = Test::Command->new(cmd => "$feh --list --max-dimension 16x16 $images_ok");
+$cmd
+ = Test::Command->new( cmd => "$feh --list --max-dimension 16x16 $images_ok" );
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list/default');
diff --git a/test/mandoc.t b/test/mandoc.t
index d664289..3740809 100755
--- a/test/mandoc.t
+++ b/test/mandoc.t
@@ -8,13 +8,13 @@ use Test::More tests => 3;
SKIP: {
qx{mandoc -V};
- if ($? != 0) {
+ if ( $? != 0 ) {
diag('mandoc not installed, test skipped. This is NOT fatal.');
- skip('mandoc not installed', 3);
+ skip( 'mandoc not installed', 3 );
}
- for my $file ('feh', 'feh-cam', 'gen-cam-menu') {
+ for my $file ( 'feh', 'feh-cam', 'gen-cam-menu' ) {
qx{mandoc -Tlint man/${file}.1};
- is($?, 0, "${file}.1: Valid mdoc syntax");
+ is( $?, 0, "${file}.1: Valid mdoc syntax" );
}
}
diff --git a/test/run-interactive b/test/run-interactive
index d801ac6..a342c22 100755
--- a/test/run-interactive
+++ b/test/run-interactive
@@ -3,7 +3,7 @@
Xephyr -screen 500x500 :7 > /dev/null 2>&1 &
pid=${!}
-DISPLAY=:7 prove test/feh-scr.i test/feh.i
+DISPLAY=:7 prove test/feh-scr-i.t test/feh-i.t
ret=${?}
kill ${pid}