diff options
Diffstat (limited to 'xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl')
-rwxr-xr-x | xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl b/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl new file mode 100755 index 000000000000..6cc49da3570b --- /dev/null +++ b/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl @@ -0,0 +1,257 @@ +#!/usr/bin/perl +######################################################################### + + #************************************************************************* + # +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# + #************************************************************************* + +$compare_home = $ENV{'QA_COMPARATOR_HOME'}; + +if ($ENV{'CLASSPATH'}) +{ + $classpath_val = "$compare_home:$ENV{'CLASSPATH'}"; +} +else +{ + $classpath_val = "$compare_home"; +} + +print "classpath is $classpath_val\n"; + +$list_file=""; +$orig_dir=""; +$new_dir=""; +$diff_type=""; + +####### BEGIN MAIN ############## +$cmdline_len = @ARGV; +if ($cmdline_len <= 0) +{ + print_usage(); + exit (0); +} + +process_cmdline(@ARGV); +print_env(); +open (LOGFILE, ">$logfile") || die "Cannot open log file $logfile"; +if ($test_list ne "") +{ + open (TESTLIST, $test_list) || die "Couldn't open diff list file $test_list"; + + while (<TESTLIST>) + { + chomp $_; + process_diff(get_file_title($_)); + } +} +close TESTLIST; +close LOGFILE; + +####### END MAIN ############## + +sub process_diff +{ +# $_[0] =~ tr/A-Z/a-z/; + + # chdir to the output directory so the temporary files created by + # the java programs are put in the right place. + # + chdir ($xml_new); + + if ($diff_type eq "xml") + { + # Ugly hack, probably a way to tell xerces directly that the dtd's + # are in $compare_home/dtd. + # + `cp $compare_home/dtd/* $xml_new`; + +# $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0].sxw $xml_new/$_[0].sxw"; + $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0] $xml_new/$_[0]"; + print "Executing: $cmd\n"; + $val = system($cmd)/256; + if ($val == 2) + { +# print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n"; + print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0]|$xml_new/$_[0]\n"; + } + elsif($val == 3) + { +# print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n"; + print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0]|$xml_new/$_[0]\n"; + } + else + { +# print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n"; + print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0]|$xml_new/$_[0]\n"; + } + } + elsif ($diff_type eq "pdb") + { +# $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0].pdb $pdb_new/$_[0].pdb\n"; + $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0] $pdb_new/$_[0]\n"; + print "Executing: $cmd\n"; + $val = system($cmd)/256; + if ($val == 2) + { +# print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n"; + print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0]|$pdb_new/$_[0]\n"; + } + elsif($val == 3) + { +# print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n"; + print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0]|$pdb_new/$_[0]\n"; + } + else + { +# print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n"; + print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0]|$pdb_new/$_[0]\n"; + } + } + else + { + die "Don't understand test type of $diff_type."; + } +} + +sub process_cmdline +{ + foreach $i (@_) + { + @arg= split('=', $i); + @arg[0] =~ tr/A-Z/a-z/; + + if (@arg[0] eq "-pdb-orig") + { + $pdb_orig=$arg[1]; + } + elsif (@arg[0] eq "-pdb-new") + { + $pdb_new=$arg[1]; + } + elsif (@arg[0] eq "-xml-orig") + { + $xml_orig=$arg[1]; + } + elsif (@arg[0] eq "-xml-new") + { + $xml_new=$arg[1]; + } + elsif (@arg[0] eq "-env") + { + set_env_from_props($arg[1]); + } + elsif (@arg[0] eq "-list") + { + $test_list = $arg[1]; + } + elsif (@arg[0] eq "-one") + { + $infile = $arg[1]; + } + elsif (@arg[0] eq "-type") + { + $diff_type = $arg[1]; + chomp $diff_type; + } + elsif (@arg[0] eq "-log") + { + $logfile = $arg[1]; + } + else + { + print_usage(); + die "Incorrect command line. Don't understand $i"; + } + } +} + +sub set_env_from_props +{ + open(PROPSFILE, $_[0]) || die "Could not open properties file"; + + while (<PROPSFILE>) + { + chomp $_; + @arg = split('=', $_); + @arg[0] =~ tr/a-z/A-Z/; + $len = @arg; + if ($len != 2) + { + die "Malformed property in $ARGV[0]"; + } + + if (@arg[0] eq "PDB_ORIG") + { + $pdb_orig=$arg[1]; + } + elsif (@arg[0] eq "PDB_NEW") + { + $pdb_new=$arg[1]; + } + elsif (@arg[0] eq "XML_ORIG") + { + $xml_orig=$arg[1]; + } + elsif (@arg[0] eq "XML_NEW") + { + $xml_new=$arg[1]; + } + + } + close PROPSFILE; +} + +sub print_usage +{ + print "Usage : compartor.pl - compare Office or pdb files\n"; + print "\t-one=<file> :\t\t individual test case file to run\n"; + print "\t-list=<file> :\t\t list of test case files\n"; + print "\t-env=<file> :\t\t Properites like file defining env\n"; + print "\t-pdb-orig=<path> :\t directory to hold original pdb files\n"; + print "\t-pdb-new=<path> :\t directory to hold new pdb files\n"; + print "\t-xml-orig=<path> :\t directory to hold original office documents\n"; + print "\t-xml-new=<path> :\t directory to hold new office documents\n"; + print "\t-type=<xml|pdb> :\t Invokes the merge option when converting\n"; + print "\t-log=<logfile> :\t Save results to logfile.\n"; +} + +sub print_env +{ + print "Using the following environment:\n"; + print "\tPDB_ORIG = $pdb_orig\n"; + print "\tPDB_NEW = $pdb_new\n"; + print "\tXML_ORIG = $xml_orig\n"; + print "\tXML_NEW = $xml_new\n\n"; +} + +sub get_file_title +{ + @paths = split('\/', $_[0]); + $len = @paths; + return @paths[$len-1]; +# @names = split('\.', @paths[$len-1]); +# return $names[0]; +} |