OLD | NEW |
(Empty) | |
| 1 #!/bin/bash |
| 2 # |
| 3 # Helper to run the pods tests. |
| 4 |
| 5 set -eu |
| 6 |
| 7 readonly ScriptDir=$(dirname "$(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")") |
| 8 |
| 9 printUsage() { |
| 10 NAME=$(basename "${0}") |
| 11 cat << EOF |
| 12 usage: ${NAME} [OPTIONS] |
| 13 |
| 14 This script runs some test to check the CocoaPods integration. |
| 15 |
| 16 OPTIONS: |
| 17 |
| 18 General: |
| 19 |
| 20 -h, --help |
| 21 Show this message |
| 22 --skip-static |
| 23 Skip the static based pods tests. |
| 24 --skip-framework |
| 25 Skip the framework based pods tests. |
| 26 --skip-ios |
| 27 Skip the iOS pods tests. |
| 28 --skip-osx |
| 29 Skip the OS X pods tests. |
| 30 |
| 31 EOF |
| 32 } |
| 33 |
| 34 TEST_MODES=( "static" "framework" ) |
| 35 TEST_NAMES=( "iOSCocoaPodsTester" "OSXCocoaPodsTester" ) |
| 36 while [[ $# != 0 ]]; do |
| 37 case "${1}" in |
| 38 -h | --help ) |
| 39 printUsage |
| 40 exit 0 |
| 41 ;; |
| 42 --skip-static ) |
| 43 TEST_MODES=(${TEST_MODES[@]/static}) |
| 44 ;; |
| 45 --skip-framework ) |
| 46 TEST_MODES=(${TEST_MODES[@]/framework}) |
| 47 ;; |
| 48 --skip-ios ) |
| 49 TEST_NAMES=(${TEST_NAMES[@]/iOSCocoaPodsTester}) |
| 50 ;; |
| 51 --skip-osx ) |
| 52 TEST_NAMES=(${TEST_NAMES[@]/OSXCocoaPodsTester}) |
| 53 ;; |
| 54 -*) |
| 55 echo "ERROR: Unknown option: ${1}" 1>&2 |
| 56 printUsage |
| 57 exit 1 |
| 58 ;; |
| 59 *) |
| 60 echo "ERROR: Unknown argument: ${1}" 1>&2 |
| 61 printUsage |
| 62 exit 1 |
| 63 ;; |
| 64 esac |
| 65 shift |
| 66 done |
| 67 |
| 68 # Sanity check. |
| 69 if [[ "${#TEST_NAMES[@]}" == 0 ]] ; then |
| 70 echo "ERROR: Need to run at least iOS or OS X tests." 1>&2 |
| 71 exit 2 |
| 72 fi |
| 73 if [[ "${#TEST_MODES[@]}" == 0 ]] ; then |
| 74 echo "ERROR: Need to run at least static or frameworks tests." 1>&2 |
| 75 exit 2 |
| 76 fi |
| 77 |
| 78 header() { |
| 79 echo "" |
| 80 echo "========================================================================
" |
| 81 echo " ${@}" |
| 82 echo "========================================================================
" |
| 83 echo "" |
| 84 } |
| 85 |
| 86 # Cleanup hook for do_test, assumes directory is correct. |
| 87 cleanup() { |
| 88 local TEST_NAME="$1" |
| 89 |
| 90 echo "Cleaning up..." |
| 91 |
| 92 # Generally don't let things fail, and eat common stdout, but let stderr show |
| 93 # incase something does hiccup. |
| 94 xcodebuild -workspace "${TEST_NAME}.xcworkspace" -scheme "${TEST_NAME}" clean
> /dev/null || true |
| 95 pod deintegrate > /dev/null || true |
| 96 # Flush the cache so nothing is left behind. |
| 97 pod cache clean --all || true |
| 98 # Delete the files left after pod deintegrate. |
| 99 rm -f Podfile.lock || true |
| 100 rm -rf "${TEST_NAME}.xcworkspace" || true |
| 101 git checkout -- "${TEST_NAME}.xcodeproj" || true |
| 102 # Remove the Podfile that was put in place. |
| 103 rm -f Podfile || true |
| 104 } |
| 105 |
| 106 do_test() { |
| 107 local TEST_NAME="$1" |
| 108 local TEST_MODE="$2" |
| 109 |
| 110 header "${TEST_NAME}" - Mode: "${TEST_MODE}" |
| 111 cd "${ScriptDir}/${TEST_NAME}" |
| 112 |
| 113 # Hook in cleanup for any failures. |
| 114 trap "cleanup ${TEST_NAME}" EXIT |
| 115 |
| 116 # Ensure nothing is cached by pods to start with that could throw things off. |
| 117 pod cache clean --all |
| 118 |
| 119 # Put the right Podfile in place. |
| 120 cp -f "Podfile-${TEST_MODE}" "Podfile" |
| 121 |
| 122 xcodebuild_args=( "-workspace" "${TEST_NAME}.xcworkspace" "-scheme" "${TEST_NA
ME}" ) |
| 123 |
| 124 # For iOS, if the SDK is not provided it tries to use iphoneos, and the test |
| 125 # fail on Travis since those machines don't have a Code Signing identity. |
| 126 if [[ "${TEST_NAME}" == iOS* ]] ; then |
| 127 # Apparently the destination flag is required to avoid "Unsupported architec
ture" |
| 128 # errors. |
| 129 xcodebuild_args+=( |
| 130 -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO |
| 131 -destination "platform=iOS Simulator,name=iPad 2,OS=9.3" |
| 132 ) |
| 133 fi |
| 134 |
| 135 # Do the work! |
| 136 pod install --verbose |
| 137 |
| 138 xcodebuild "${xcodebuild_args[@]}" build |
| 139 |
| 140 # Clear the hook and manually run cleanup. |
| 141 trap - EXIT |
| 142 cleanup "${TEST_NAME}" |
| 143 } |
| 144 |
| 145 # Run the tests. |
| 146 for TEST_NAME in "${TEST_NAMES[@]}" ; do |
| 147 for TEST_MODE in "${TEST_MODES[@]}" ; do |
| 148 do_test "${TEST_NAME}" "${TEST_MODE}" |
| 149 done |
| 150 done |
OLD | NEW |