[t/spec] Add two new tests that don't work (fudged out).
[pugs.git] / util / yaml-diff.pl
blobd5e0dd6724821c34b7956c06da50f47c20bfb873
1 #!/usr/bin/perl
3 # diff of two smoke.yml files
4 # give them as arguments on the command line, otherwise they default to
5 # "smoke.yml" and "smoke.last.yml";
7 # Written by Moritz Lenz, moritz at faui2k3 dot org
8 use warnings;
9 use strict;
10 use YAML::Syck;
11 use Data::Dumper;
13 my $fn1 = shift @ARGV || "smoke.last.yml";
14 my $fn2 = shift @ARGV || "smoke.yml";
16 my $d1 = LoadFile($fn1);
17 my $d2 = LoadFile($fn2);
19 my @f1 = @{$d1->{meat}{test_files}};
20 my @f2 = @{$d2->{meat}{test_files}};
21 my %res;
22 my (@passes, @fails);
24 my $diff = 0;
25 for (my $i = 0; $i < @f1; $i++){
26 my $f1 = $f1[$i];
27 my $f2 = $f2[$i + $diff];
28 if ($f1->{file} ne $f2->{file}){
29 for (-2 .. 2){
30 if ($f1[$i]->{file} eq $f2[$i + $diff + $_]->{file}){
31 $diff = $diff + $_;
32 last;
36 if ($f1->{file} eq $f2->{file}){
37 if (scalar @{$f1->{events}} != scalar @{$f2->{events}}){
38 print "Number of tests in $f1->{file} changed\n";
39 } else {
40 my $count = scalar @{$f1->{events}};
41 foreach my $k (0 .. $count - 1){
42 my ($ok1, $ok2) = ($f1->{events}[$k]{actual_ok}, $f2->{events}[$k]{actual_ok});
43 if ($ok1 ne $ok2){
44 print $f1->{events}[$k]{pos}, " changed from $ok1 to $ok2\n";
45 if ($ok1){
46 push @passes, $f1->{events}[$k]{pos};
47 } else {
48 push @fails, $f1->{events}[$k]{pos};
53 } else {
54 print "New test file: ", $f1->{file}, "\n";