summaryrefslogtreecommitdiff
path: root/test/test.pl
blob: 4b18ccc06d2700bad3c22f5a4444f20950ab784b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
use Test::Command tests => 48;

my $feh = 'src/feh';
my $images = 'test/ok.* test/fail.*';

my ($feh_name, $feh_version) = @ARGV;

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 \(${feh_name}\)};

my $cmd = Test::Command->new(cmd => $feh);

# Insufficient Arguments -> Usage should return failure
$cmd->exit_is_num(1, 'missing arguments return 1');
$cmd->stdout_is_eq('', 'missing arguments print usage (!stdout)');
$cmd->stderr_is_eq(<<"EOF", 'missing arguments print usage (stderr)');
${feh_name} - No loadable images specified.
Use ${feh_name} --help for detailed usage information
EOF

$cmd = Test::Command->new(cmd => "$feh --version");

$cmd->exit_is_num(0);
$cmd->stdout_is_eq("${feh_name} version ${feh_version}\n");
$cmd->stderr_is_eq('');

$cmd = Test::Command->new(cmd => "$feh --loadable $images");

$cmd->exit_is_num(0);
$cmd->stdout_like($re_loadable);
$cmd->stderr_is_eq('');

$cmd = Test::Command->new(cmd => "$feh --unloadable $images");

$cmd->exit_is_num(0);
$cmd->stdout_like($re_unloadable);
$cmd->stderr_is_eq('');

$cmd = Test::Command->new(cmd => "$feh --list $images");

$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list');
$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->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->exit_is_num(0);
$cmd->stdout_is_file('test/list_format_reverse');
$cmd->stderr_like($re_warning);

$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/customlist');
$cmd->stderr_like($re_warning);

$cmd = Test::Command->new(cmd => "$feh --list --quiet $images");
$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list');
$cmd->stderr_is_eq('');

$cmd = Test::Command->new(cmd =>
	"$feh --quiet --list --action 'echo \"%f %wx%h (%P)\" >&2' $images");

$cmd->exit_is_num(0);
$cmd->stdout_is_file('test/list');
$cmd->stderr_like($re_list_action);