Skip to content

Instantly share code, notes, and snippets.

@sgleadow
Created April 18, 2012 03:11
Show Gist options
  • Save sgleadow/2410839 to your computer and use it in GitHub Desktop.
Save sgleadow/2410839 to your computer and use it in GitHub Desktop.
Modified shell script to run OCUnit and Kiwi tests on the command line.
#!/bin/sh
##
# Copyright 2008 Apple Inc.
# All rights reserved.
#
# iPhoneSimulator platform
# This script runs all of the unit tests for the target test bundle specified by the passed-in environment.
# This script is generally intended to be invoked by ${DEVELOPER_TOOLS_DIR}/RunUnitTests. The interface or location of this script may change in future releases.
##
#
# Input:
# See ${DEVELOPER_TOOLS_DIR}/RunUnitTests for input variables
Message() {
# usage: Message line type message
# Echo the message to stdout as the given type of message and continue
echo "${PLATFORM_DEVELOPER_TOOLS_DIR}/Tools/RunPlatformUnitTests:${1}: ${2}: ${3}"
}
Note() {
# usage: Notify line message
# Echo the message to stdout as a note and continue
Message "${1}" note "${2}"
}
Warning() {
# usage: Warning line message
# Echo the message to stdout as a note and continue
Message "${1}" warning "${2}"
}
Error() {
# usage: Notify line message
# Echo the message to stdout as an error and continue
Message "${1}" error "${2}"
}
Fail() {
# usage: Fail line message
# Echo the message to stdout and return 1, the universal error code
Error "${1}" "${2}"
exit 1
}
### Do not run tests on anything but a "build".
if [ "${ACTION}" != "build" ]; then
exit 0
fi
### Silently skip tests if TEST_AFTER_BUILD is NO
if [ "${TEST_AFTER_BUILD}" = "NO" ]; then
exit 0
fi
### Source RunUnitTests.include functionality
if [ "${DEVELOPER_TOOLS_DIR}" = "" ]; then
Fail ${LINENO} "DEVELOPER_TOOLS_DIR is not set."
fi
if [ "${PLATFORM_DEVELOPER_TOOLS_DIR}" = "" ]; then
Fail ${LINENO} "PLATFORM_DEVELOPER_TOOLS_DIR is not set."
fi
includeFile="${DEVELOPER_TOOLS_DIR}/RunPlatformUnitTests.include"
if [ ! -r "${includeFile}" ]; then
Fail ${LINENO} "Cannot read include file ${includeFile}"
fi
source "${includeFile}"
if [ 0 != $? ]; then
Fail ${LINENO} "Could not source include file ${includeFile}"
fi
### Define a sensible default for the path to the otest
if [ "${OTEST}" = "" ]; then
OTEST="${SDKROOT}/Developer/usr/bin/otest"
fi
Main() {
# usage: Main
# Determine how tests need to be run and run them.
# GC not supported by the simulator
TEST_GC_STATES="OFF"
Configure_TEST_ARCHS
if [ "${TEST_HOST}" != "" ]; then
# SG changed based on this post:
# http://longweekendmobile.com/2011/04/17/xcode4-running-application-tests-from-the-command-line-in-ios/
#Warning ${LINENO} "Skipping tests; the iPhoneSimulator platform does not currently support application-hosted tests (TEST_HOST set)."
export OTHER_TEST_FLAGS="-RegisterForSystemEvents"
RunTestsForApplication "${TEST_HOST}" "${TEST_BUNDLE_PATH}"
else
# If no TEST_HOST is specified, assume we're running the test bundle.
RunTestsForBundle "${TEST_BUNDLE_PATH}"
fi
}
### Update the dyld environment to support running tests out of the build directory.
# Sets and exports the following environment variables:
# DYLD_ROOT_PATH
# DYLD_FRAMEWORK_PATH
# DYLD_LIBRARY_PATH
# DYLD_NEW_LOCAL_SHARED_REGIONS
# DYLD_NO_FIX_PREBINDING
if [ "${DYLD_FRAMEWORK_PATH}" != "" ]; then
DYLD_FRAMEWORK_PATH="${BUILT_PRODUCTS_DIR}:${SDKROOT}${DEVELOPER_LIBRARY_DIR}/Frameworks:${DYLD_FRAMEWORK_PATH}"
else
DYLD_FRAMEWORK_PATH="${BUILT_PRODUCTS_DIR}:${SDKROOT}${DEVELOPER_LIBRARY_DIR}/Frameworks"
fi
if [ "${DYLD_LIBRARY_PATH}" != "" ]; then
DYLD_LIBRARY_PATH="${BUILT_PRODUCTS_DIR}:${DYLD_LIBRARY_PATH}"
else
DYLD_LIBRARY_PATH="${BUILT_PRODUCTS_DIR}"
fi
if [ "${DYLD_ROOT_PATH}" != "" ]; then
DYLD_ROOT_PATH="${SDKROOT}:${DYLD_ROOT_PATH}"
else
DYLD_ROOT_PATH="${SDKROOT}"
fi
DYLD_NEW_LOCAL_SHARED_REGIONS=YES
DYLD_NO_FIX_PREBINDING=YES
IPHONE_SIMULATOR_ROOT=$SDKROOT ## rdar://6528939
CFFIXED_USER_HOME="${HOME}/Library/Application Support/iPhone Simulator/$IPHONESIMULATOR_PLATFORM_VERSION"
EXPORT_VARS=(DYLD_FRAMEWORK_PATH DYLD_LIBRARY_PATH DYLD_NEW_LOCAL_SHARED_REGIONS DYLD_NO_FIX_PREBINDING DYLD_ROOT_PATH IPHONE_SIMULATOR_ROOT CFFIXED_USER_HOME )
### Run the tests
Main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment