summaryrefslogtreecommitdiff
path: root/testgraphical
diff options
context:
space:
mode:
authorLars Langhans <lla@openoffice.org>2010-05-10 14:21:43 +0200
committerLars Langhans <lla@openoffice.org>2010-05-10 14:21:43 +0200
commit9331542d5fbcc744ba738de92a4c346d8da38e3e (patch)
treeccd80fffb743a0a14d96b12b1927d73d9001cc65 /testgraphical
parent4f869ccee0ca1a0e1c0125ece3d9c7a28c0fac46 (diff)
gfxcmp02: #159601# add graphical compare test
Diffstat (limited to 'testgraphical')
-rw-r--r--testgraphical/source/CallExternals.pm539
1 files changed, 539 insertions, 0 deletions
diff --git a/testgraphical/source/CallExternals.pm b/testgraphical/source/CallExternals.pm
new file mode 100644
index 000000000000..a0a3b1ae716a
--- /dev/null
+++ b/testgraphical/source/CallExternals.pm
@@ -0,0 +1,539 @@
+package CallExternals;
+
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+use English;
+use warnings;
+use strict;
+use loghelper;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ $VERSION = 1.00;
+ # if using RCS/CVS, this may be preferred
+ $VERSION = do { my @r = (q$Revision: 1.29 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
+ @ISA = qw(Exporter);
+ @EXPORT = qw(&callphp &getPHPExecutable &ExecSQL &callperl &getPerlExecutable &calljava &setJavaExecutable &getJavaExecutable &setToolsPath &quote &quoteIfNeed &set_logfile &close_logfile );
+ %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = ( ); # qw($Var1 %Hashit &func3);
+}
+
+# ------------------------------------------------------------------------------
+# small helper, which replaces the return code
+sub errorAdaption($)
+{
+ my $error = shift;
+ if ($error != 0)
+ {
+ $error = $error / 256;
+ }
+ if ($error > 127)
+ {
+ $error = $error - 256;
+ }
+ return $error;
+}
+# ------------------------------------------------------------------------------
+# helper to call external php with popen
+sub callphp($$$)
+{
+ local *IN_FILE;
+ my $phpexe = shift;
+ my $phpprogram = shift;
+ my $sParams = shift;
+ my $line;
+ my $error;
+ my @result;
+
+ # print "Will send: $phpexe $sParams\n";
+ # log_print("CALLPHP: $phpexe $phpprogram $sParams\n");
+# if (open(IN_FILE, "$phpexe $sParams 2>&1 |"))
+ if (open(IN_FILE, "$phpexe $phpprogram $sParams |"))
+ {
+ while ($line = <IN_FILE>)
+ {
+ chomp($line);
+ # $line .= " ";
+ push(@result, $line);
+ # print "callphp output: $line\n";
+ }
+ close(IN_FILE);
+ $error = errorAdaption($?);
+ }
+ else
+ {
+ print "callphp(): Can't popen '$phpexe' with parameter: '$sParams'\n";
+ $error = 1;
+ }
+ return $error, @result;
+}
+
+# ------------------------------------------------------------------------------
+sub getPHPExecutable()
+{
+ my $phpexe;
+ if ($OSNAME eq "solaris")
+ {
+ $phpexe = "php5";
+ }
+ elsif ($OSNAME eq "linux")
+ {
+ if ( -e "/usr/bin/php5") # Suse :-(
+ {
+ $phpexe = "php5";
+ }
+ elsif ( -e "/usr/bin/php") # Gentoo
+ {
+ $phpexe = "php";
+ }
+ else
+ {
+ print "getPHPExecutable(): no php exec found.\n";
+ }
+ }
+ elsif ( $OSNAME eq "MSWin32" )
+ {
+ $phpexe = "C:/programme/php/php.exe";
+ # add second try (xampp)
+ if (! -e $phpexe)
+ {
+ $phpexe = "C:/xampp/php/php.exe";
+ }
+ }
+ elsif ( $OSNAME eq "cygwin" )
+ {
+ $phpexe = "/cygdrive/c/programme/php/php";
+ }
+ else
+ {
+ print "getPHPExecutable(): unknown environment. ($OSNAME)\n";
+ }
+ if (! $phpexe)
+ {
+ print "getPHPExecutable(): ERROR: php executable not found.\n";
+ exit(1);
+ }
+ return $phpexe;
+}
+# ------------------------------------------------------------------------------
+# helper to call external java with popen
+sub calljava($$$)
+{
+ local *IN_FILE;
+ my $javaexe = shift;
+ my $sParams = shift;
+ my $sDebug = shift;
+ my $line;
+ my $error = 1;
+
+ if (! $javaexe)
+ {
+ log_print("ERROR: javaexe not set.\n");
+ return;
+ }
+ if (! $sDebug)
+ {
+ $sDebug = "";
+ }
+ $javaexe = quoteIfNeed($javaexe);
+ log_print ("CALLJAVA: $javaexe $sDebug $sParams\n");
+ if (open(IN_FILE, "$javaexe $sDebug $sParams 2>&1 |"))
+ {
+ while ($line = <IN_FILE>)
+ {
+ chomp($line);
+ log_print ("- $line\n");
+ }
+ close(IN_FILE);
+ $error = errorAdaption($?);
+ }
+ else
+ {
+ log_print ("calljava(): Can't popen '$javaexe' with parameter '$sParams'\n");
+ $error = 1;
+ }
+ return $error;
+}
+
+# ------------------------------------------------------------------------------
+sub getPerlExecutable()
+{
+ my $perlexe;
+ if ( $ENV{PERL} )
+ {
+ $perlexe = $ENV{PERL};
+ }
+ elsif ( $ENV{PERLEXE} )
+ {
+ $perlexe = $ENV{PERLEXE};
+ }
+ else
+ {
+ if ($OSNAME eq "MSWin32")
+ {
+ $perlexe="C:/xampp/perl/bin/perl.exe";
+ if (! -e $perlexe)
+ {
+ $perlexe="r:/btw/perl/bin/perl";
+ }
+ if (! -e $perlexe)
+ {
+ $perlexe="C:/Programme/Perl/bin/perl.exe";
+ }
+ }
+ elsif ($OSNAME eq "cygwin")
+ {
+ $perlexe = "perl";
+ }
+ elsif ($OSNAME eq "solaris")
+ {
+ $perlexe="/so/env/bt_solaris_intel/bin/perl";
+ }
+ elsif ($OSNAME eq "linux")
+ {
+ $perlexe="/so/env/bt_linux_libc2.32/DEV300/bin/perl";
+ }
+ else
+ {
+ log_print "WARNING: Use only the fallback of perl executable.\n";
+ $perlexe = "perl"; # FALLBACK
+ }
+ }
+ if ( ! -e $perlexe)
+ {
+ log_print "getPerlExecutable(): There exist no perl executable.\n";
+ exit(1);
+ }
+ return $perlexe;
+}
+# ------------------------------------------------------------------------------
+# helper to call external perl with popen
+sub callperl($$$)
+{
+ local *IN_FILE;
+ my $perlexe = shift;
+ my $perlprogram = shift;
+ my $sParams = shift;
+ my $line;
+ my $error;
+
+ log_print("CALLPERL: $perlexe $perlprogram $sParams\n");
+# if (open(IN_FILE, "$perlexe $sParams 2>&1 |"))
+ if (open(IN_FILE, "$perlexe $perlprogram $sParams |"))
+ {
+ while ($line = <IN_FILE>)
+ {
+ chomp($line);
+ log_print ("- $line\n");
+ }
+ close(IN_FILE);
+ $error = errorAdaption($?);
+ }
+ else
+ {
+ log_print ("Can't popen '$perlexe' with parameter: '$sParams'\n");
+ $error = 1;
+ }
+ return $error;
+}
+# ------------------------------------------------------------------------------
+our $sJavaExecutable;
+sub setJavaExecutable($)
+{
+ $sJavaExecutable = shift;
+}
+
+# sub getJava14()
+# {
+# my $sJava14;
+# if ($OSNAME eq "MSWin32")
+# {
+# if ($sJavaExecutable)
+# {
+# $sJava14 = $sJavaExecutable;
+# }
+# else
+# {
+# # HARDCODE!
+# $sJava14 = "C:\\Programme\\Java\\j2re1.4.2_10\\bin\\java.exe";
+# }
+# }
+# else
+# {
+# if ($sJavaExecutable)
+# {
+# $sJava14 = $sJavaExecutable;
+# }
+# else
+# {
+# # HARDCODE!
+# $sJava14 = "/opt/java14/bin/java";
+# }
+# }
+# if ( ! -e $sJava14 )
+# {
+# log_print ("Java14 not found. Is searched in '$sJava14'\n");
+# # exit(1);
+# return "";
+# }
+# return $sJava14;
+# }
+# ------------------------------------------------------------------------------
+sub getJava15()
+{
+ my $sJava15;
+ if ($sJavaExecutable)
+ {
+ $sJava15 = $sJavaExecutable;
+ }
+ else
+ {
+ if ($OSNAME eq "MSWin32")
+ {
+ # HARDCODE!
+ $sJava15 = "C:\\Programme\\Java\\jre1.5.0_22\\bin\\java.exe";
+ if ( ! -e $sJava15)
+ {
+ $sJava15 = "C:\\Program Files\\Java\\jre6\\bin\\java.exe";
+ }
+ if ( ! -e $sJava15)
+ {
+ $sJava15 = "C:\\Java\\jdk1.6\\bin\\java.exe";
+ }
+ }
+ elsif ($OSNAME eq "cygwin")
+ {
+ $sJava15 = "java";
+ }
+ else
+ {
+ # HARDCODE!
+ if ($OSNAME eq "solaris")
+ {
+ $sJava15 = "/usr/bin/java";
+ }
+ else
+ {
+ $sJava15 = "/usr/bin/java";
+ if ( ! -e $sJava15 )
+ {
+ $sJava15 = "/opt/java15/bin/java";
+ }
+ }
+ }
+ if ( ! -e $sJava15 )
+ {
+ log_print ("Java15 not found. Is searched in '$sJava15'\n");
+ # exit(1);
+ return "";
+ }
+ }
+ return $sJava15;
+}
+# ------------------------------------------------------------------------------
+sub getJava16()
+{
+ my $sJava16;
+ if ($sJavaExecutable)
+ {
+ $sJava16 = $sJavaExecutable;
+ }
+ else
+ {
+ if ($OSNAME eq "MSWin32")
+ {
+ # HARDCODE!
+ $sJava16 = "C:\\Programme\\Java\\jre1.6.0_16\\bin\\java.exe";
+ if ( ! -e $sJava16)
+ {
+ $sJava16 = "C:\\Program Files\\Java\\jre6\\bin\\java.exe";
+ }
+ if ( ! -e $sJava16)
+ {
+ $sJava16 = "C:\\Java\\jdk1.6\\bin\\java.exe";
+ }
+ # }
+ }
+ elsif ($OSNAME eq "cygwin")
+ {
+ # $sJava16 = "java";
+ $sJava16 = "C:/Program Files/Java/jdk1.6.0_16/bin/java.exe";
+ }
+ else
+ {
+ # HARDCODE!
+ if ($OSNAME eq "solaris")
+ {
+ $sJava16 = "/usr/bin/java";
+ }
+ else
+ {
+ $sJava16 = "/usr/bin/java";
+ if ( ! -e $sJava16 )
+ {
+ $sJava16 = "/opt/java16/bin/java";
+ }
+ }
+ }
+ if ( ! -e $sJava16 )
+ {
+ log_print ("Java16 not found. Is searched in '$sJava16'\n");
+ # exit(1);
+ return "";
+ }
+ }
+ return $sJava16;
+}
+
+# ------------------------------------------------------------------------------
+sub getJavaExecutable()
+{
+ return getJava16();
+}
+
+# ------------------------------------------------------------------------------
+# this function is a helper for parameters
+# if quotes the whole string with 'STR' or "STR" and replace quotes in it's content for the right.
+sub singleQuote($)
+{
+ my $sStr = shift;
+ if ( $OSNAME eq "MSWin32")
+ {
+ # we are MSWin32 (quote \" stronger)
+ # $sStr =~ s/\'/\"/g;
+ $sStr =~ s/\'/\\\"/g;
+ return "\"" . $sStr . "\"";
+ }
+ else
+ {
+ if (index($sStr, "'") >= 0)
+ {
+ # replace all single quotes ("'") by "\""
+ $sStr =~ s/\'/\"/g;
+ }
+ }
+ return "'" . $sStr . "'";
+}
+
+sub quote($)
+{
+ my $sName = shift;
+ return "\"" . $sName . "\"";
+}
+
+sub quoteIfNeed($)
+{
+ my $sName = shift;
+ if (-1 != index($sName, " "))
+ {
+ return quote($sName);
+ }
+ return $sName;
+}
+
+
+# ------------------------------------------------------------------------------
+our $sToolsPath;
+sub setToolsPath($)
+{
+ my $sNewPath = shift;
+ $sToolsPath = $sNewPath;
+}
+
+sub ExecSQL($)
+{
+ my $sSQL = shift;
+
+ my $error;
+ my @aResult;
+ my $sSQLDirect;
+ if ($sToolsPath)
+ {
+ $sSQLDirect = $sToolsPath;
+ $sSQLDirect .= "/";
+ }
+ $sSQLDirect .= "sql_direct.php";
+
+ # select(undef, undef, undef, 0.060);
+ # log_print("ExecSQL: $sSQL\n");
+ # sleep (1);
+ ($error, @aResult) = callphp(getPHPExecutable(), $sSQLDirect, singleQuote($sSQL));
+ if ($error)
+ {
+ log_print ("ExecSQL: An Error occured.\n");
+ log_print ("PHP: " . getPHPExecutable() . "\n");
+ log_print ("SQL Statement: " . singleQuote($sSQL) . "\n");
+ # exit(1);
+ }
+ # select(undef, undef, undef, 0.125);
+ # sleep (1);
+ return @aResult;
+}
+
+# ------------------------------------------------------------------------------
+# helper to call external php with popen
+# sub callexe($$$)
+# {
+# local *IN_FILE;
+# my $exe = shift;
+# my $program = shift;
+# my $sParams = shift;
+# my $line;
+# my $error;
+# my @result;
+#
+# $exe = quoteIfNeed($exe);
+# $program = quoteIfNeed($program);
+#
+# # print "Will send: $exe $sParams\n";
+# # log_print("CALLEXE: $exe $program $sParams\n");
+# if (open(IN_FILE, "$exe $program $sParams |"))
+# {
+# while ($line = <IN_FILE>)
+# {
+# chomp($line);
+# # $line .= " ";
+# push(@result, $line);
+# # print "callphp output: $line\n";
+# }
+# close(IN_FILE);
+# $error = errorAdaption($?);
+# }
+# else
+# {
+# print "Can't popen '$exe' with parameter: '$sParams'\n";
+# $error = 1;
+# }
+# return $error, @result;
+# }
+
+1;