| #!/bin/bash | |
| # Copyright 2015 The Bazel Authors. All rights reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| set -eu | |
| TEMP_DIR="$(mktemp -d ${TMPDIR:-/tmp}/test_temp_dir.XXXXXX)" | |
| trap 'rm -rf "${TEMP_DIR}"' ERR EXIT | |
| TEST_APP_DIR="${TEMP_DIR}/test_app_dir" | |
| mkdir "${TEST_APP_DIR}" | |
| unzip -qq -d "${TEST_APP_DIR}" "%(test_app_ipa)s" | |
| TEST_APP_DIR="${TEST_APP_DIR}/Payload/%(test_app_name)s.app" | |
| XCTEST_APP_DIR="${TEMP_DIR}/xctest_app_dir" | |
| mkdir "${XCTEST_APP_DIR}" | |
| unzip -qq -d "${XCTEST_APP_DIR}" "%(xctest_app_ipa)s" | |
| XCTEST_APP_DIR="${XCTEST_APP_DIR}/Payload/%(xctest_app_name)s.xctest" | |
| killall "iOS Simulator" >/dev/null 2>/dev/null || : | |
| SIMHOME="${TEMP_DIR}/simhome" | |
| mkdir "${SIMHOME}" | |
| LOGFILE="${TEMP_DIR}/logfile" | |
| SIMULATOR_PLATFORM="$(/usr/bin/xcrun --sdk iphonesimulator --show-sdk-platform-path)" | |
| SIMULATOR_DEV_LIBRARY="$SIMULATOR_PLATFORM/Developer/Library" | |
| "%(iossim_path)s" \ | |
| -u "${SIMHOME}" \ | |
| -d "%(device_type)s" \ | |
| -s "%(simulator_sdk)s" \ | |
| -t 60 \ | |
| -e DYLD_INSERT_LIBRARIES="$SIMULATOR_DEV_LIBRARY/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection" \ | |
| -e "XCInjectBundle=${TEST_APP_DIR}" \ | |
| -e "XCInjectBundleInto=${XCTEST_APP_DIR}" \ | |
| -e DYLD_FALLBACK_FRAMEWORK_PATH="$SIMULATOR_DEV_LIBRARY/Frameworks" \ | |
| "${XCTEST_APP_DIR}" \ | |
| -NSTreatUnknownArgumentsAsOpen NO \ | |
| -ApplePersistenceIgnoreState YES \ | |
| -XCTest All \ | |
| "${TEST_APP_DIR}" \ | |
| 2>&1 | tee "${LOGFILE}" | |
| killall "iOS Simulator" >/dev/null 2>/dev/null || : | |
| # TODO(danielwh): Much better support for detecting failures. Actually parse the log. | |
| if grep -q "with [1-9].* failure" "${LOGFILE}"; then | |
| exit 1 | |
| fi |