4afdaedc837de53e52a286d043c03cfef08362bd
[imager-graph.git] / t / x90cmp_version.t
1 #!perl
2 # inspired by perl's cmpVERSION
3 use strict;
4 use warnings;
5 use Test::More;
6 use ExtUtils::MakeMaker;
7 use File::Spec::Functions 'devnull';
8
9 -d ".git"
10    or plan skip_all => "Not a git tree";
11
12 chomp(my $base_tag = `git describe --abbrev=0`);
13
14 my @changed = grep /\.pm$/ && m(/),
15   `git diff --name-only $base_tag --diff-filter=ACMRTUXB`;
16
17 chomp @changed;
18
19 plan tests => 1;
20
21 my @need_update;
22 for my $file (@changed) {
23   my $orig_content = get_file_from_git($file, $base_tag);
24   my $orig_version = eval { MM->parse_version(\$orig_content) };
25   my $curr_version = eval { MM->parse_version($file) };
26
27   if ($curr_version ne "undef" && $orig_version ne "undef") {
28     push @need_update, "$file - out of date"
29       if $curr_version < $orig_version;
30   }
31   elsif ($orig_version ne "undef") {
32     push @need_update, "$file - version was removed";
33   }
34   elsif ($curr_version eq "undef") {
35     push @need_update, "$file - has no version";
36   }
37 }
38
39 ok(@need_update == 0, "check versions updated");
40 diag $_ for @need_update;
41
42 sub get_file_from_git {
43     my ($file, $tag) = @_;
44     local $/;
45     my $null = devnull();
46     return scalar `git --no-pager show $tag:$file 2>$null`;
47 }