#!/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