]> git.sur5r.net Git - i3/i3status/blob - travis/run-tests.pl
release v2.11
[i3/i3status] / travis / run-tests.pl
1 #!/usr/bin/env perl
2
3 use v5.10;
4 use strict;
5 use warnings;
6 use Term::ANSIColor qw(:constants);
7 use File::Basename;
8
9 sub TestCase {
10     my ($dir) = @_;
11     my $conf = "$dir/i3status.conf";
12     my $testres = `./i3status --run-once -c $conf`;
13     my $refres = "";
14
15     if ( -f "@_/expected_output.txt") {
16         $refres = `cat "@_/expected_output.txt"`;
17     } elsif ( -f "@_/expected_output.sh") {
18         $refres = `bash @_/expected_output.sh`;
19     }
20
21     if ( "$testres" eq "$refres" ) {
22         say "Testing test case '", basename($dir), "'… ", BOLD, GREEN, "OK", RESET;
23         return 1;
24     } else {
25         say "Testing test case '", basename($dir), "'… ", BOLD, RED, "Failed!", RESET;
26         return 0;
27     }
28 }
29
30
31 my $testcases = 'testcases';
32 my $testresults = 1;
33
34 opendir(my $dir, $testcases) or die "Could not open directory $testcases: $!";
35
36 while (my $entry = readdir($dir)) {
37     next unless (-d "$testcases/$entry");
38     next if ($entry =~ m/^\./);
39     $testresults = $testresults && TestCase("$testcases/$entry");
40 }
41 closedir($dir);
42 exit 0;