Index: testing/gtest_ios/run-unittest.sh |
diff --git a/testing/gtest_ios/run-unittest.sh b/testing/gtest_ios/run-unittest.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..b1d28fca4e0bdb6557fa2dcfd53583a5c412f467 |
--- /dev/null |
+++ b/testing/gtest_ios/run-unittest.sh |
@@ -0,0 +1,87 @@ |
+#!/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}/${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="5.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 |