xref: /trunk/main/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1#!/usr/bin/perl
2#########################################################################
3
4 #*************************************************************************
5 #
6# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7#
8# Copyright 2000, 2010 Oracle and/or its affiliates.
9#
10# OpenOffice.org - a multi-platform office productivity suite
11#
12# This file is part of OpenOffice.org.
13#
14# OpenOffice.org is free software: you can redistribute it and/or modify
15# it under the terms of the GNU Lesser General Public License version 3
16# only, as published by the Free Software Foundation.
17#
18# OpenOffice.org is distributed in the hope that it will be useful,
19# but WITHOUT ANY WARRANTY; without even the implied warranty of
20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21# GNU Lesser General Public License version 3 for more details
22# (a copy is included in the LICENSE file that accompanied this code).
23#
24# You should have received a copy of the GNU Lesser General Public License
25# version 3 along with OpenOffice.org.  If not, see
26# <http://www.openoffice.org/license.html>
27# for a copy of the LGPLv3 License.
28#
29 #*************************************************************************
30
31$compare_home = $ENV{'QA_COMPARATOR_HOME'};
32
33if ($ENV{'CLASSPATH'})
34{
35   $classpath_val = "$compare_home:$ENV{'CLASSPATH'}";
36}
37else
38{
39   $classpath_val = "$compare_home";
40}
41
42print "classpath is $classpath_val\n";
43
44$list_file="";
45$orig_dir="";
46$new_dir="";
47$diff_type="";
48
49####### BEGIN MAIN ##############
50$cmdline_len = @ARGV;
51if ($cmdline_len <= 0)
52{
53    print_usage();
54    exit (0);
55}
56
57process_cmdline(@ARGV);
58print_env();
59open (LOGFILE, ">$logfile") || die "Cannot open log file $logfile";
60if ($test_list ne "")
61{
62    open (TESTLIST, $test_list) || die "Couldn't open diff list file $test_list";
63
64    while (<TESTLIST>)
65    {
66        chomp $_;
67        process_diff(get_file_title($_));
68    }
69}
70close TESTLIST;
71close LOGFILE;
72
73####### END MAIN ##############
74
75sub process_diff
76{
77#   $_[0] =~ tr/A-Z/a-z/;
78
79    # chdir to the output directory so the temporary files created by
80    # the java programs are put in the right place.
81    #
82    chdir ($xml_new);
83
84    if ($diff_type eq "xml")
85    {
86        # Ugly hack, probably a way to tell xerces directly that the dtd's
87        # are in $compare_home/dtd.
88        #
89        `cp $compare_home/dtd/* $xml_new`;
90
91#       $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0].sxw $xml_new/$_[0].sxw";
92        $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0] $xml_new/$_[0]";
93        print "Executing: $cmd\n";
94        $val = system($cmd)/256;
95        if ($val == 2)
96        {
97#           print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
98            print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0]|$xml_new/$_[0]\n";
99        }
100        elsif($val == 3)
101        {
102#           print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
103            print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0]|$xml_new/$_[0]\n";
104        }
105        else
106        {
107#           print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n";
108            print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0]|$xml_new/$_[0]\n";
109        }
110    }
111    elsif ($diff_type eq "pdb")
112    {
113#       $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0].pdb $pdb_new/$_[0].pdb\n";
114        $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0] $pdb_new/$_[0]\n";
115        print "Executing: $cmd\n";
116        $val = system($cmd)/256;
117        if ($val == 2)
118        {
119#           print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
120            print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0]|$pdb_new/$_[0]\n";
121        }
122        elsif($val == 3)
123        {
124#           print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
125            print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0]|$pdb_new/$_[0]\n";
126        }
127        else
128        {
129#           print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n";
130            print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0]|$pdb_new/$_[0]\n";
131        }
132    }
133    else
134    {
135        die "Don't understand test type of $diff_type.";
136    }
137}
138
139sub process_cmdline
140{
141    foreach $i (@_)
142    {
143        @arg= split('=', $i);
144        @arg[0] =~ tr/A-Z/a-z/;
145
146        if (@arg[0] eq "-pdb-orig")
147        {
148            $pdb_orig=$arg[1];
149        }
150        elsif (@arg[0] eq "-pdb-new")
151        {
152            $pdb_new=$arg[1];
153        }
154        elsif (@arg[0] eq "-xml-orig")
155        {
156            $xml_orig=$arg[1];
157        }
158        elsif (@arg[0] eq "-xml-new")
159        {
160            $xml_new=$arg[1];
161        }
162        elsif (@arg[0] eq "-env")
163        {
164            set_env_from_props($arg[1]);
165        }
166        elsif (@arg[0] eq "-list")
167        {
168            $test_list = $arg[1];
169        }
170        elsif (@arg[0] eq "-one")
171        {
172            $infile = $arg[1];
173        }
174        elsif (@arg[0] eq "-type")
175        {
176            $diff_type = $arg[1];
177            chomp $diff_type;
178        }
179        elsif (@arg[0] eq "-log")
180        {
181            $logfile = $arg[1];
182        }
183        else
184        {
185            print_usage();
186            die "Incorrect command line. Don't understand $i";
187        }
188    }
189}
190
191sub set_env_from_props
192{
193    open(PROPSFILE, $_[0]) || die "Could not open properties file";
194
195    while (<PROPSFILE>)
196    {
197        chomp $_;
198        @arg = split('=', $_);
199        @arg[0] =~ tr/a-z/A-Z/;
200        $len = @arg;
201        if ($len != 2)
202        {
203            die "Malformed property in $ARGV[0]";
204        }
205
206        if (@arg[0] eq "PDB_ORIG")
207        {
208            $pdb_orig=$arg[1];
209        }
210        elsif (@arg[0] eq "PDB_NEW")
211        {
212            $pdb_new=$arg[1];
213        }
214        elsif (@arg[0] eq "XML_ORIG")
215        {
216            $xml_orig=$arg[1];
217        }
218        elsif (@arg[0] eq "XML_NEW")
219        {
220            $xml_new=$arg[1];
221        }
222
223    }
224    close PROPSFILE;
225}
226
227sub print_usage
228{
229    print "Usage : compartor.pl - compare Office or pdb files\n";
230    print "\t-one=<file> :\t\t individual test case file to run\n";
231    print "\t-list=<file> :\t\t list of test case files\n";
232    print "\t-env=<file> :\t\t Properites like file defining env\n";
233    print "\t-pdb-orig=<path> :\t directory to hold original pdb files\n";
234    print "\t-pdb-new=<path> :\t directory to hold new pdb files\n";
235    print "\t-xml-orig=<path> :\t directory to hold original office documents\n";
236    print "\t-xml-new=<path> :\t directory to hold new office documents\n";
237    print "\t-type=<xml|pdb> :\t Invokes the merge option when converting\n";
238    print "\t-log=<logfile> :\t Save results to logfile.\n";
239}
240
241sub print_env
242{
243    print "Using the following environment:\n";
244    print "\tPDB_ORIG  = $pdb_orig\n";
245    print "\tPDB_NEW   = $pdb_new\n";
246    print "\tXML_ORIG  = $xml_orig\n";
247    print "\tXML_NEW   = $xml_new\n\n";
248}
249
250sub get_file_title
251{
252    @paths = split('\/', $_[0]);
253    $len = @paths;
254    return @paths[$len-1];
255#   @names = split('\.', @paths[$len-1]);
256#   return $names[0];
257}
258