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