196 lines
6.2 KiB
Bash
Executable file
196 lines
6.2 KiB
Bash
Executable file
#!/bin/bash
|
|
#*************************************************************************
|
|
#*
|
|
# 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.
|
|
#
|
|
#########################################################################
|
|
#
|
|
# Owner : andreschnabel@openoffice.org
|
|
#
|
|
# short description : run several testscripts on unix
|
|
# list of scripts to run is read from stdin
|
|
# this script has been derived from former ooo_releasetests.sh
|
|
#
|
|
#########################################################################
|
|
|
|
|
|
# set location of testscripts (the 'qatesttool' directory)
|
|
# if this is empty, we try to parse $HOME/.testtoolrc
|
|
sLocation=""
|
|
|
|
# set location of TestTool
|
|
# (full path including executable 'testtool')
|
|
# if this is empty, we try to parse $HOME/.testtoolrc and use OOoProgramdir
|
|
# on Mac this is VCLTestTool.app/Contents/MacOS/testtool.bin
|
|
#sTestTool="/Users/sca/qa/testtool/VCLTestTool.app/Contents/MacOS/testtool.bin"
|
|
sTestTool=""
|
|
|
|
#------------------------------------------------------------------------
|
|
#--- internally used functions ---
|
|
#------------------------------------------------------------------------
|
|
function GetValueFromSection ()
|
|
# call with NameOfValue Section file
|
|
{
|
|
$AWK -v sVarName="$1" -v sSectionName="$2" \
|
|
'BEGIN { bInSection = 0}
|
|
{ if ( index ($0 ,"[" sSectionName "]") > 0 )
|
|
bInSection = 1
|
|
else if ( (bInSection == 1) && (substr ($0,1,1) == "[") )
|
|
bInSection = 0
|
|
if ( (bInSection == 1) && (index ($0 , sVarName "=") == 1)) {
|
|
sub(/\r$/,"")
|
|
print substr ($0,index ($0 ,"=") + 1)
|
|
}
|
|
}' < "$3"
|
|
}
|
|
|
|
#------------------------------------------------------------------------
|
|
#--- the main script starts here ---
|
|
#------------------------------------------------------------------------
|
|
|
|
#platform specific settings
|
|
case `uname -s` in
|
|
Darwin)
|
|
testtoolrc="$HOME/Library/Application Support/.testtoolrc"
|
|
KILLOFFICEALL="/usr/bin/killall -9 soffice.bin"
|
|
AWK=awk
|
|
;;
|
|
SunOS)
|
|
testtoolrc="$HOME/.testtoolrc"
|
|
KILLOFFICEALL="pkill -9 soffice.bin"
|
|
AWK=nawk
|
|
;;
|
|
*)
|
|
testtoolrc="$HOME/.testtoolrc"
|
|
KILLOFFICEALL="pkill -9 soffice.bin"
|
|
AWK=awk
|
|
;;
|
|
esac
|
|
|
|
# if sLocation is not set manuall try to get the location form testtoolrc
|
|
if [ -z "$sLocation" ]
|
|
then
|
|
# first read the profile
|
|
sProfile=`GetValueFromSection CurrentProfile Misc "$testtoolrc"`
|
|
# then read the BaseDir for the profile
|
|
sLocation=`GetValueFromSection BaseDir "$sProfile" "$testtoolrc"`
|
|
sLocation="$sLocation/"
|
|
fi
|
|
|
|
# set location of close-office file
|
|
# (see cvs)
|
|
sExitOfficeBas="${sLocation}global/tools/closeoffice.bas"
|
|
sResetOfficeBas="${sLocation}global/tools/resetoffice.bas"
|
|
|
|
# if sTestTool is not set manuall try to get the location form testtoolrc
|
|
if [ -z "$sTestTool" ]
|
|
then
|
|
sTestTool=`GetValueFromSection Current OOoProgramDir "$testtoolrc"`
|
|
sTestTool="$sTestTool/basis-link/program/testtool.bin"
|
|
fi
|
|
|
|
|
|
|
|
echo "****************************************************"
|
|
echo "************ STARTING ************"
|
|
echo "****************************************************"
|
|
|
|
# check if there is a virtual display available
|
|
|
|
echo "DISPLAY is set to: " $DISPLAY
|
|
echo "My name is: " $USER
|
|
|
|
# test if location exists
|
|
if [ -d "$sLocation" ]
|
|
then
|
|
echo "using scripts from $sLocation"
|
|
else
|
|
echo "test scripts not found at $sLocation"
|
|
echo "Please set sLocation in this script"
|
|
exit 1
|
|
fi
|
|
|
|
# test if testtool.bin exists
|
|
if [ -f "$sTestTool" ]
|
|
then
|
|
echo "using testtool from $sTestTool"
|
|
else
|
|
echo "testtool not found at $sTestTool"
|
|
echo "Please set sTestTool in this script"
|
|
exit 1
|
|
fi
|
|
|
|
i=0
|
|
|
|
while read x ;
|
|
do
|
|
echo "Running soffices' processes: "
|
|
# kill office, if exists
|
|
`$KILLOFFICEALL`
|
|
|
|
echo "****************************************************"
|
|
x=`echo "$x"|sed s/[[:blank:]]*$//` #cut all trailing blanks
|
|
sTest="$sLocation$x"
|
|
if [ -f "$sTest" ]; then
|
|
|
|
# two pass logic - first pass is the real test, second pass is reset office, third is closeoffice
|
|
for z in "1" "2";
|
|
do
|
|
echo "running <$sTest>"
|
|
"$sTestTool" -run "$sTest" &
|
|
sleep 5
|
|
echo " "
|
|
|
|
######### save the PID from the last Background job
|
|
testtoolpid=$!
|
|
echo "PID of Testtool: " $testtoolpid
|
|
|
|
if [ `ps -A | grep -v "grep" | grep $testtoolpid | wc -l` -gt 0 ] ; then
|
|
echo " Successfully started"
|
|
else
|
|
echo " There might be something wrong with starting the Testtool!"
|
|
fi
|
|
|
|
######### wait until Testtool has finished & closed
|
|
while [ `ps -A | grep -v "grep" | grep $testtoolpid | wc -l` -gt 0 ] ;
|
|
do
|
|
sleep 5
|
|
i=$((i+5))
|
|
done
|
|
|
|
####### for the second run use the office reset script!
|
|
case $z in
|
|
"1") sTest="$sResetOfficeBas";;
|
|
esac
|
|
done
|
|
else
|
|
echo "Error: file <$sTest> not found"
|
|
fi
|
|
done
|
|
|
|
echo "Duration:" $((i/60)) "min" $((i%60)) "sec "
|
|
|
|
echo "****************************************************"
|
|
echo "************ FINISHED ************"
|
|
echo "****************************************************"
|