diff --git a/Makefile b/Makefile index fff6c0d0d10f7d01dcbb86c815e2cd017e79c8fe..85cb60057bae6db03cbf693f7b3c5568ceefe7d8 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,9 @@ test: all @PACKAGE=${PACKAGE} VERSION=${VERSION} prove test test-x11: all - @test/run-interactive + test/run-interactive + sleep 3 + test/run-bg install: install-man install-doc install-bin install-font install-img diff --git a/README b/README index cc382c2588e7180731f68f4b322a398b7aa3399c..a1db52487bdc337eac5fff24cea71babc07cc36b 100644 --- a/README +++ b/README @@ -43,9 +43,9 @@ work without X, so they can safely be run even on a headless buildserver. Testing (X): Requires - * perl >= 5.10 - * Test::More - * X11::GUITest + * import (usually supplied by imagemagick) + * perl >= 5.10 with GD, Test::More and X11::GUITest + * twm * Xnest $ make test-x11 diff --git a/test/bg.png b/test/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1f09f37845b599ca6dc619e313d4cf19d3a746 Binary files /dev/null and b/test/bg.png differ diff --git a/test/bg_451x500.png b/test/bg_451x500.png new file mode 100644 index 0000000000000000000000000000000000000000..3b64670fbbf03e1aa58eea2ed6e4dc05188d14a2 Binary files /dev/null and b/test/bg_451x500.png differ diff --git a/test/bg_451x500_center.png b/test/bg_451x500_center.png new file mode 100644 index 0000000000000000000000000000000000000000..99555af610a95e0e6ecf8c7618f44a2aaebfe075 Binary files /dev/null and b/test/bg_451x500_center.png differ diff --git a/test/bg_451x500_fill.png b/test/bg_451x500_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..18e1da94d5a42717c73be92ce3182b6f638828d0 Binary files /dev/null and b/test/bg_451x500_fill.png differ diff --git a/test/bg_451x500_max.png b/test/bg_451x500_max.png new file mode 120000 index 0000000000000000000000000000000000000000..47218274f420e56352920254e57219be2d648dab --- /dev/null +++ b/test/bg_451x500_max.png @@ -0,0 +1 @@ +bg_451x500_center.png \ No newline at end of file diff --git a/test/bg_451x500_scale.png b/test/bg_451x500_scale.png new file mode 100644 index 0000000000000000000000000000000000000000..fd884f6fe860699e3e9647ae68c6a3942e4e501f Binary files /dev/null and b/test/bg_451x500_scale.png differ diff --git a/test/bg_451x500_tile.png b/test/bg_451x500_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..1fcc1dd30bc77e703e66f7f1aa617d1b2325c87d Binary files /dev/null and b/test/bg_451x500_tile.png differ diff --git a/test/bg_500x333.png b/test/bg_500x333.png new file mode 100644 index 0000000000000000000000000000000000000000..8fad57c5cca2632db603c09f3a7f5c4426c86d18 Binary files /dev/null and b/test/bg_500x333.png differ diff --git a/test/bg_500x333_center.png b/test/bg_500x333_center.png new file mode 100644 index 0000000000000000000000000000000000000000..7db957173e9f2cbdaa7c9f25f49aa5812ace9d76 Binary files /dev/null and b/test/bg_500x333_center.png differ diff --git a/test/bg_500x333_fill.png b/test/bg_500x333_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..eeec8ca0cb8dc1c8aa9d4e54acd786c0f58b5cfc Binary files /dev/null and b/test/bg_500x333_fill.png differ diff --git a/test/bg_500x333_max.png b/test/bg_500x333_max.png new file mode 120000 index 0000000000000000000000000000000000000000..13547b7b1424dd8296ea441e181f557c54961bb4 --- /dev/null +++ b/test/bg_500x333_max.png @@ -0,0 +1 @@ +bg_500x333_center.png \ No newline at end of file diff --git a/test/bg_500x333_scale.png b/test/bg_500x333_scale.png new file mode 100644 index 0000000000000000000000000000000000000000..fee06475cfe22de6f31cb9197501f9a0cf898c0c Binary files /dev/null and b/test/bg_500x333_scale.png differ diff --git a/test/bg_500x333_tile.png b/test/bg_500x333_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8e1a44c484a55278c7199ee2f4cf20c5cd64ca Binary files /dev/null and b/test/bg_500x333_tile.png differ diff --git a/test/bg_all.png b/test/bg_all.png new file mode 100644 index 0000000000000000000000000000000000000000..5903c3429587f2abc4ff856acbdbf9d0ce2f4337 Binary files /dev/null and b/test/bg_all.png differ diff --git a/test/feh-bg.i b/test/feh-bg.i new file mode 100755 index 0000000000000000000000000000000000000000..b26feff963cb1a827e119fd693f235f97a4d7ffc --- /dev/null +++ b/test/feh-bg.i @@ -0,0 +1,52 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.010; + +use GD qw/:DEFAULT :cmp/; +use Test::More tests => 30; +use Time::HiRes qw/sleep/; + +sub set_bg { + my ($mode, $file) = @_; + + $file //= 'bg.png'; + + ok( + system("feh --bg-${mode} test/${file}") == 0, + "Ran feh --bg-${mode} test/${file}" + ); +} + +sub same_files { + 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)); +} + +sub check_bg { + my ($file) = @_; + + system("import -silent -window root /tmp/feh_${$}.png"); + + ok( + same_files("test/${file}", "/tmp/feh_${$}.png"), + "Wallpaper is test/${file}" + ); +} + +for my $mode (qw( center fill max scale tile )) { + set_bg($mode); + check_bg('bg_all.png'); + + set_bg($mode, 'bg_500x333.png'); + check_bg("bg_500x333_${mode}.png"); + + set_bg($mode, 'bg_451x500.png'); + check_bg("bg_451x500_${mode}.png"); +} + +unlink("/tmp/feh_${$}.png"); diff --git a/test/run-bg b/test/run-bg new file mode 100755 index 0000000000000000000000000000000000000000..df5d6acceed615e65f220772a6620ba73869109b --- /dev/null +++ b/test/run-bg @@ -0,0 +1,11 @@ +#!/bin/sh + +Xnest -geometry 500x500 :7 > /dev/null 2>&1 & +pid=${!} + +# Wallpaper setting requires a window manager to work reliably +DISPLAY=:7 twm > /dev/null 2>&1 & + +DISPLAY=:7 prove -v test/feh-bg.i + +kill ${pid}