blob: edf0fe81fbad93387e5c6eb36048b8885c0634f3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#!/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"
# Do the work!
pod install --verbose
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
|