| Index: third_party/protobuf/objectivec/Tests/CocoaPods/run_tests.sh
|
| diff --git a/third_party/protobuf/objectivec/Tests/CocoaPods/run_tests.sh b/third_party/protobuf/objectivec/Tests/CocoaPods/run_tests.sh
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..6d3e12be30f28d304cf726d627d3d18b97c994e3
|
| --- /dev/null
|
| +++ b/third_party/protobuf/objectivec/Tests/CocoaPods/run_tests.sh
|
| @@ -0,0 +1,150 @@
|
| +#!/bin/bash
|
| +#
|
| +# Helper to run the pods tests.
|
| +
|
| +set -eu
|
| +
|
| +readonly ScriptDir=$(dirname "$(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")")
|
| +
|
| +printUsage() {
|
| + NAME=$(basename "${0}")
|
| + cat << EOF
|
| +usage: ${NAME} [OPTIONS]
|
| +
|
| +This script runs some test to check the CocoaPods integration.
|
| +
|
| +OPTIONS:
|
| +
|
| + General:
|
| +
|
| + -h, --help
|
| + Show this message
|
| + --skip-static
|
| + Skip the static based pods tests.
|
| + --skip-framework
|
| + Skip the framework based pods tests.
|
| + --skip-ios
|
| + Skip the iOS pods tests.
|
| + --skip-osx
|
| + Skip the OS X pods tests.
|
| +
|
| +EOF
|
| +}
|
| +
|
| +TEST_MODES=( "static" "framework" )
|
| +TEST_NAMES=( "iOSCocoaPodsTester" "OSXCocoaPodsTester" )
|
| +while [[ $# != 0 ]]; do
|
| + case "${1}" in
|
| + -h | --help )
|
| + printUsage
|
| + exit 0
|
| + ;;
|
| + --skip-static )
|
| + TEST_MODES=(${TEST_MODES[@]/static})
|
| + ;;
|
| + --skip-framework )
|
| + TEST_MODES=(${TEST_MODES[@]/framework})
|
| + ;;
|
| + --skip-ios )
|
| + TEST_NAMES=(${TEST_NAMES[@]/iOSCocoaPodsTester})
|
| + ;;
|
| + --skip-osx )
|
| + TEST_NAMES=(${TEST_NAMES[@]/OSXCocoaPodsTester})
|
| + ;;
|
| + -*)
|
| + echo "ERROR: Unknown option: ${1}" 1>&2
|
| + printUsage
|
| + exit 1
|
| + ;;
|
| + *)
|
| + echo "ERROR: Unknown argument: ${1}" 1>&2
|
| + printUsage
|
| + exit 1
|
| + ;;
|
| + esac
|
| + shift
|
| +done
|
| +
|
| +# Sanity check.
|
| +if [[ "${#TEST_NAMES[@]}" == 0 ]] ; then
|
| + echo "ERROR: Need to run at least iOS or OS X tests." 1>&2
|
| + exit 2
|
| +fi
|
| +if [[ "${#TEST_MODES[@]}" == 0 ]] ; then
|
| + echo "ERROR: Need to run at least static or frameworks tests." 1>&2
|
| + exit 2
|
| +fi
|
| +
|
| +header() {
|
| + echo ""
|
| + echo "========================================================================"
|
| + echo " ${@}"
|
| + echo "========================================================================"
|
| + echo ""
|
| +}
|
| +
|
| +# Cleanup hook for do_test, assumes directory is correct.
|
| +cleanup() {
|
| + local TEST_NAME="$1"
|
| +
|
| + echo "Cleaning up..."
|
| +
|
| + # Generally don't let things fail, and eat common stdout, but let stderr show
|
| + # incase something does hiccup.
|
| + xcodebuild -workspace "${TEST_NAME}.xcworkspace" -scheme "${TEST_NAME}" clean > /dev/null || true
|
| + pod deintegrate > /dev/null || true
|
| + # Flush the cache so nothing is left behind.
|
| + pod cache clean --all || true
|
| + # Delete the files left after pod deintegrate.
|
| + rm -f Podfile.lock || true
|
| + rm -rf "${TEST_NAME}.xcworkspace" || true
|
| + git checkout -- "${TEST_NAME}.xcodeproj" || true
|
| + # Remove the Podfile that was put in place.
|
| + rm -f Podfile || true
|
| +}
|
| +
|
| +do_test() {
|
| + local TEST_NAME="$1"
|
| + local TEST_MODE="$2"
|
| +
|
| + header "${TEST_NAME}" - Mode: "${TEST_MODE}"
|
| + cd "${ScriptDir}/${TEST_NAME}"
|
| +
|
| + # Hook in cleanup for any failures.
|
| + trap "cleanup ${TEST_NAME}" EXIT
|
| +
|
| + # Ensure nothing is cached by pods to start with that could throw things off.
|
| + pod cache clean --all
|
| +
|
| + # Put the right Podfile in place.
|
| + cp -f "Podfile-${TEST_MODE}" "Podfile"
|
| +
|
| + xcodebuild_args=( "-workspace" "${TEST_NAME}.xcworkspace" "-scheme" "${TEST_NAME}" )
|
| +
|
| + # For iOS, if the SDK is not provided it tries to use iphoneos, and the test
|
| + # fail on Travis since those machines don't have a Code Signing identity.
|
| + if [[ "${TEST_NAME}" == iOS* ]] ; then
|
| + # Apparently the destination flag is required to avoid "Unsupported architecture"
|
| + # errors.
|
| + xcodebuild_args+=(
|
| + -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
|
| + -destination "platform=iOS Simulator,name=iPad 2,OS=9.3"
|
| + )
|
| + fi
|
| +
|
| + # Do the work!
|
| + pod install --verbose
|
| +
|
| + xcodebuild "${xcodebuild_args[@]}" build
|
| +
|
| + # Clear the hook and manually run cleanup.
|
| + trap - EXIT
|
| + cleanup "${TEST_NAME}"
|
| +}
|
| +
|
| +# Run the tests.
|
| +for TEST_NAME in "${TEST_NAMES[@]}" ; do
|
| + for TEST_MODE in "${TEST_MODES[@]}" ; do
|
| + do_test "${TEST_NAME}" "${TEST_MODE}"
|
| + done
|
| +done
|
|
|