#!/usr/bin/perl # rgdAnalyze - pulls out style data mismatches from regression test # verification, outputs each one, then presents the "net # mismatches" after a horizontal rule. # this messy script created by Fantasai Rainne # http://fantasai.tripod.com/Mozilla/Tools # comments, bug reports, suggestions, etc. are all welcome # to do: summary-only option, nicer output formatting, Anything else? use strict; unless ($ARGV[0]) { print "Usage: rgdAnalyze filename\n"; print " where filename is result of regression test 'verify' output\n"; exit; } my @abstract; # 2D array: list of net mismatches # 1 row = [ style group number, data position number, original value, new value ] open(RGFILE,"$ARGV[0]") || die "can't open $ARGV[0]: $!"; while () { if (/^file/) { print; } elsif (/^regression test/) { print; } elsif (/^frame style/) { &AnalyzeStyleMismatch($_); } } print "=======================================================================\n"; &PrintAbstract; print "\ndone\n"; sub AnalyzeStyleMismatch { my($data) = @_; print "frame style data mismatch: \n"; chomp($data); $data =~ s/frame style data mismatch: \| *//; my ($origData,$newData) = split(/ vs\. \|/,$data); my @origDataGroups = split(/ *\| */,$origData); my @newDataGroups = split(/ *\| */,$newData); for (my $sg = 0; $sg < @origDataGroups; $sg++) { my @origVals = split(/\s+/,$origDataGroups[$sg]); my @newVals = split(/\s+/,$newDataGroups[$sg]); for (my $dp = 0; $dp < @origVals; $dp++) { if ($origVals[$dp] ne $newVals[$dp]) { print ' [', $sg+1,',', $dp+1, "]: $origVals[$dp] ne $newVals[$dp]\n"; &AddMismatch($sg, $dp, $origVals[$dp], $newVals[$dp]); } } } } sub AddMismatch { my ($sg, $dp, $ov, $nv) = @_; my $row; foreach $row (@abstract) { if ($sg == $$row[0] && $dp == $$row[1] && $ov eq $$row[2] && $nv eq $$row[3]) { return; } } push(@abstract, [$sg, $dp, $ov, $nv]); } sub PrintAbstract { my $row; foreach $row (@abstract) { print ' [',$$row[0]+1,',',$$row[1]+1,"]: $$row[2] ne $$row[3]\n"; } }