177 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| useage() 
 | |
| {
 | |
| 	echo './runone.sh keystroke_file.py [application_name] [0|1]'
 | |
| echo 'application_name is the name of the application to run'
 | |
| echo '0 = start and stop cthulhu inside this shell script'
 | |
| echo '1 = assume cthulhu is already running'
 | |
| echo " " # for a blank line
 | |
| 	echo 'See http://live.gnome.org/Cthulhu/RegressionTesting for more info.'
 | |
| 
 | |
| exit 1
 | |
| }
 | |
| 
 | |
| #
 | |
| # Set up our accessibility environment for those apps that
 | |
| # don't do it on their own.
 | |
| #
 | |
| export GTK_MODULES=:gail:atk-bridge:
 | |
| export PATH=/usr/lib/openoffice/program:$PATH
 | |
| export PS1='$ '
 | |
| 
 | |
| foo=`dirname $0`
 | |
| harnessDir=`cd $foo; pwd`
 | |
| export PYTHONPATH=$harnessDir:$PYTHONPATH
 | |
| export PATH=$harnessDir/bin:$PATH
 | |
| 
 | |
| # Switch off i18n transformation.
 | |
| export LANG=C
 | |
| export LC_ALL=C
 | |
| 
 | |
| if [ "$1" = "-h" -o "$1" = "-?" -o "$1" = "--help" -o $# -eq 0 ]
 | |
| then
 | |
| 	useage
 | |
| fi
 | |
| 
 | |
| debugFile=`basename $1 .py`
 | |
| 
 | |
| cp `dirname $0`/cthulhu-customizations.py.in cthulhu-customizations.py
 | |
| CUSTOMIZATIONS_FILE=`dirname $1`/$debugFile.customizations
 | |
| if [ -f $CUSTOMIZATIONS_FILE ]
 | |
| then
 | |
|     cat $CUSTOMIZATIONS_FILE >> cthulhu-customizations.py
 | |
| fi
 | |
| 
 | |
| SETTINGS_FILE=`dirname $1`/$debugFile.settings
 | |
| if [ ! -f $SETTINGS_FILE ]
 | |
| then
 | |
|     SETTINGS_FILE=`dirname $0`/user-settings.conf.in
 | |
| fi
 | |
| cp $SETTINGS_FILE user-settings.conf
 | |
| 
 | |
| 
 | |
| # Allow us to pass parameters to the command line of the application.
 | |
| #
 | |
| # If a <testfilename>.params file exists, it contains parameters to
 | |
| # pass to the command line of the application.
 | |
| #
 | |
| PARAMS_FILE=`dirname $1`/$debugFile.params
 | |
| if [ -f $PARAMS_FILE ]
 | |
| then
 | |
|     if [ "x$JDK_DEMO_DIR" == "x" ]
 | |
|     then
 | |
|         JDK_DEMO_DIR="/usr/jdk/latest/demo"
 | |
|     fi
 | |
|     TEST_DIR=`dirname $1`
 | |
|     source $PARAMS_FILE
 | |
| fi
 | |
| 
 | |
| # Run the app (or gtk-demo if no app was given) and let it settle in.
 | |
| #
 | |
| ARGS=""
 | |
| if [ -n "$3" ]
 | |
| then
 | |
|     APP_NAME=$2
 | |
|     cthulhuRunning=$3
 | |
| else
 | |
|    APP_NAME=gtk-demo
 | |
|    if [ -n "$2" ]
 | |
|    then
 | |
|        cthulhuRunning=$2
 | |
|    else
 | |
|        cthulhuRunning=0
 | |
|    fi
 | |
| fi
 | |
| 
 | |
| if [ "$APP_NAME" == "swriter" ] || [ "$APP_NAME" == "oowriter" ] || [ "$APP_NAME" == "scalc" ] || [ "$APP_NAME" == "oocalc" ] || [ "$APP_NAME" == "simpress" ] || [ "$APP_NAME" == "ooimpress" ] || [ "$APP_NAME" == "sbase" ] || [ "$APP_NAME" == "oobase" ] || [ "$APP_NAME" == "soffice" ] || [ "$APP_NAME" == "ooffice" ]
 | |
| then
 | |
|     SOFFICE=1
 | |
| fi
 | |
| 
 | |
| # If we're using Firefox, give it a known profile to work from.
 | |
| #
 | |
| if [ "$APP_NAME" = "firefox" ]
 | |
| then
 | |
|     FF_PROFILE_DIR=/tmp/FirefoxProfile
 | |
|     mkdir -p $FF_PROFILE_DIR
 | |
|     cp $harnessDir/../html/FirefoxProfile/prefs.js $FF_PROFILE_DIR
 | |
|     cp $harnessDir/../html/FirefoxProfile/bookmarks.html $FF_PROFILE_DIR
 | |
|     cp $harnessDir/../html/FirefoxProfile/extensions.rdf $FF_PROFILE_DIR
 | |
|     ARGS="-profile $FF_PROFILE_DIR -width 1000 -height 650"
 | |
| fi
 | |
| 
 | |
| # Consistent profile for testing Epiphany.
 | |
| #
 | |
| if [ "$APP_NAME" = "epiphany" ]
 | |
| then
 | |
|     EWB_PROFILE_DIR=/tmp/EpiphanyProfile
 | |
|     mkdir -p $EWB_PROFILE_DIR
 | |
|     cp $harnessDir/../html/EpiphanyProfile/bookmarks.rdf $EWB_PROFILE_DIR
 | |
|     cp $harnessDir/../html/EpiphanyProfile/states.xml $EWB_PROFILE_DIR
 | |
|     ARGS="-p --profile=$EWB_PROFILE_DIR"
 | |
| fi
 | |
| 
 | |
| if [ "x$SOFFICE" == "x1" ]
 | |
| then
 | |
|     LO_PROFILE_DIR=/tmp/soffice-profile
 | |
|     ARGS="--norestore --nologo --nolockcheck -env:UserInstallation=file://$LO_PROFILE_DIR"
 | |
| fi
 | |
| 
 | |
| if [ "$APP_NAME" = "gnome-terminal" ]
 | |
| then
 | |
|     TERMINAL_WORKING_DIR=/tmp/gnome-terminal-wd
 | |
|     mkdir $TERMINAL_WORKING_DIR
 | |
|     ARGS="--working-directory=$TERMINAL_WORKING_DIR"
 | |
| fi
 | |
| 
 | |
| if [ $cthulhuRunning -eq 0 ]
 | |
| then
 | |
|     $harnessDir/runcthulhu.py --user-prefs `pwd` --debug-file $debugFile &
 | |
|     sleep 4
 | |
| fi
 | |
| 
 | |
| # Start the test application and let it settle in. Two processes
 | |
| # are started for OpenOffice.
 | |
| #
 | |
| echo starting test application $APP_NAME $ARGS $PARAMS ...
 | |
| $APP_NAME $ARGS $PARAMS &
 | |
| APP_PID=$!
 | |
| 
 | |
| # Play the keystrokes.
 | |
| #
 | |
| python3 $1
 | |
| 
 | |
| if [ $cthulhuRunning -eq 0 ]
 | |
| then
 | |
|     pkill -9 cthulhu > /dev/null 2>&1
 | |
| fi
 | |
| 
 | |
| # Terminate the running application
 | |
| if [ "x$SOFFICE" == "x1" ]
 | |
| then
 | |
|     APP_PID=$(ps -eo pid,ruid,args | grep norestore | grep -v grep | awk '{ print $1 }')
 | |
|     kill $APP_PID > /dev/null 2>&1
 | |
|     rm -rf $LO_PROFILE_DIR
 | |
| fi
 | |
| 
 | |
| if [ "$APP_NAME" == "gnome-terminal" ]
 | |
| then
 | |
|     pkill $APP_NAME > /dev/null 2>&1
 | |
|     rm -rf $TERMINAL_WORKING_DIR
 | |
| fi
 | |
| 
 | |
| if [ "$APP_NAME" == "epiphany" ]
 | |
| then
 | |
|     pkill epiphany > /dev/null 2>&1
 | |
|     rm -rf $EWB_PROFILE_DIR
 | |
| fi
 | |
| 
 | |
| if [ "$APP_NAME" == "firefox" ]
 | |
| then
 | |
|     pkill firefox > /dev/null 2>&1
 | |
|     rm -rf $FF_PROFILE_DIR
 | |
| else
 | |
|     pkill $APP_NAME > /dev/null 2>&1
 | |
| fi
 |