88 lines
2.8 KiB
Bash
88 lines
2.8 KiB
Bash
|
#!/bin/bash -p
|
||
|
|
||
|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
set -eu
|
||
|
|
||
|
# Environment sanitization. Set a known-safe PATH. Clear environment variables
|
||
|
# that might impact the interpreter's operation. The |bash -p| invocation
|
||
|
# on the #! line takes the bite out of BASH_ENV, ENV, and SHELLOPTS (among
|
||
|
# other features), but clearing them here ensures that they won't impact any
|
||
|
# shell scripts used as utility programs. SHELLOPTS is read-only and can't be
|
||
|
# unset, only unexported.
|
||
|
export PATH="/usr/bin:/bin:/usr/sbin:/sbin"
|
||
|
unset BASH_ENV CDPATH ENV GLOBIGNORE IFS POSIXLY_CORRECT
|
||
|
export -n SHELLOPTS
|
||
|
|
||
|
readonly ScriptDir=$(dirname "$(echo ${0} | sed -e "s,^\([^/]\),$(pwd)/\1,")")
|
||
|
readonly ScriptName=$(basename "${0}")
|
||
|
readonly ThisScript="${ScriptDir}/${ScriptName}"
|
||
|
readonly SimExecutable="${BUILD_DIR}/ninja-iossim/${CONFIGURATION}/iossim"
|
||
|
|
||
|
# Helper to print a line formatted for Xcodes build output parser.
|
||
|
XcodeNote() {
|
||
|
echo "${ThisScript}:${1}: note: ${2}"
|
||
|
}
|
||
|
|
||
|
# Helper to print a divider to make things stick out in a busy output window.
|
||
|
XcodeHeader() {
|
||
|
echo "note: _________________________________________________________________"
|
||
|
echo "note: _________________________________________________________________"
|
||
|
echo "note: _________________________________________________________________"
|
||
|
XcodeNote "$1" ">>>>> $2"
|
||
|
echo "note: _________________________________________________________________"
|
||
|
echo "note: _________________________________________________________________"
|
||
|
echo "note: _________________________________________________________________"
|
||
|
}
|
||
|
|
||
|
# Kills the iPhone Simulator if it is running.
|
||
|
KillSimulator() {
|
||
|
/usr/bin/killall "iPhone Simulator" 2> /dev/null || true
|
||
|
}
|
||
|
|
||
|
# Runs tests via the iPhone Simulator for multiple devices.
|
||
|
RunTests() {
|
||
|
local -r appPath="${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app"
|
||
|
|
||
|
if [[ ! -x "${SimExecutable}" ]]; then
|
||
|
echo "Unable to run tests: ${SimExecutable} was not found/executable."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
for device in 'iPhone' 'iPad'; do
|
||
|
iosVersion="6.1"
|
||
|
KillSimulator
|
||
|
local command=(
|
||
|
"${SimExecutable}" "-d${device}" "-s${iosVersion}" "${appPath}"
|
||
|
)
|
||
|
# Pass along any command line flags
|
||
|
if [[ "$#" -gt 0 ]]; then
|
||
|
command+=( "--" "${@}" )
|
||
|
fi
|
||
|
XcodeHeader ${LINENO} "Launching tests for ${device} (iOS ${iosVersion})"
|
||
|
"${command[@]}"
|
||
|
|
||
|
# If the command didn't exit successfully, abort.
|
||
|
if [[ $? -ne 0 ]]; then
|
||
|
exit $?;
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# Time to get to work.
|
||
|
|
||
|
if [[ "${PLATFORM_NAME}" != "iphonesimulator" ]]; then
|
||
|
XcodeNote ${LINENO} "Skipping running of unittests for device build."
|
||
|
else
|
||
|
if [[ "$#" -gt 0 ]]; then
|
||
|
RunTests "${@}"
|
||
|
else
|
||
|
RunTests
|
||
|
fi
|
||
|
KillSimulator
|
||
|
fi
|
||
|
|
||
|
exit 0
|