Protocol Buffers - Google's data interchange format (grpc依赖) https://developers.google.com/protocol-buffers/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

126 lines
2.9 KiB

#!/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=( "yes" "no" )
TEST_NAMES=( "iOSCocoaPodsTester" "OSXCocoaPodsTester" )
while [[ $# != 0 ]]; do
case "${1}" in
-h | --help )
printUsage
exit 0
;;
--skip-static )
TEST_MODES=(${TEST_MODES[@]/no})
;;
--skip-framework )
TEST_MODES=(${TEST_MODES[@]/yes})
;;
--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
# Delete the files left after pod deintegrate
rm -f Podfile.lock || true
rm -rf "${TEST_NAME}.xcworkspace" || true
git checkout -- "${TEST_NAME}.xcodeproj" || true
}
do_test() {
local TEST_NAME="$1"
local USE_FRAMEWORKS_VALUE="$2"
header "${TEST_NAME}" - USE_FRAMEWORKS: "${USE_FRAMEWORKS_VALUE}"
cd "${ScriptDir}/${TEST_NAME}"
# Hook in cleanup for any failures.
trap "cleanup ${TEST_NAME}" EXIT
# Invoke pod and then xcodebuild, but catch the results so we can cleanup.
USE_FRAMEWORKS="${USE_FRAMEWORKS_VALUE}" pod install
xcodebuild -workspace "${TEST_NAME}.xcworkspace" -scheme "${TEST_NAME}" 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