#/usr/bin/perl
die "\nUsage: perl RtestDTD.pl [FLAG] url_list.txt.
FLAGS:
-v = verify ( would create rtest_html.veri )
-b = baseline ( would create rtest_html.base )
-help = info. on running the script\n"
if( @ARGV[0]!~/-help/ && ((@ARGV >2 || @ARGV < 2) || ($ARGV[0]!~m/-v/ && $ARGV[0]!~m/-b/)));
if($ARGV[0]=~m/-help/) {
print "
1. \"url_list.txt\" can be generated by running UrlGen.pl
Ex. perl UrlGen.pl.
2. Run base line (-b) before making changes in your tree.
This will generate rtest_html.base file [DO NOT CHANGE THIS].
3. Run verification (-v) after making changes in your tree.
This will generate rtest_html.veri file and will compare
rtest_html.base and rtest_html.veri.
NOTE: Need perl version 5.0 or greater. \n";
exit(0);
}
use Cwd;
$ENV{"PARSER_DUMP_CONTENT"}=1;
($drive,@path)=split(/:/,`cd`);
system("$drive:\\mozilla\\dist\\win32_d.obj\\bin\\viewer.exe -f $ARGV[1]");
if($ARGV[0]=~m/-b/) {
rename("rtest_html.txt","rtest_html.base");
}
elsif($ARGV[0]=~m/-v/) {
rename("rtest_html.txt","rtest_html.veri");
@result=CompareFiles("rtest_html.base","rtest_html.veri");
Display(@result);
}
sub CompareFiles {
open(BASE,"<$_[0]") || die "Can't output $_[0] $!";
open(VERI,"<$_[1]") || die "Can't output $_[1] $!";
#Separate file contents into URL and DOCUMENT
while() {
($url,$document1)=split/;/;
push(@url1,$url);
push(@documents1,$document1);
}
while() {
($url,$document2)=split/;/;
push(@url2,$url);
push(@documents2,$document2);
}
#Search for documents that don't match
for($i=0;$i<=$#documents1+1;$i++) {
if($documents1[$i] !~ /$documents2[$i]/) {
(@string1)=split(//,$documents1[$i]);
(@string2)=split(//,$documents2[$i]);
for($j=0;$j<=$#string1;$j++) {
# Find the character that failed
if($string1[$j] !~ /$string2[$j]/) {
push(@result,$url1[$i],$string2[$j],$j);
$j=@string1; # Stop looping
}
}
}
}
close(BASE);
close(VERI);
return @result;
}
sub Display {
for($i=0;$i<@_;$i++) {
print "\n $_[$i++] failed on character '$_[$i++]' at location $_[$i]";
}
print "\n--------------------\n";
$count=@_/3;
if(($count)>0) {
print "$count url(s) failed\n";
}
else {
print "\nALL SUCCEEDED\n";
}
}