blob: e4f49f07592e0bcdd25792cc3e86ec2b7777a43c [file]
#!/bin/bash
#
# Copyright 2017-present The Material Motion Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Fail on any error.
set -e
# Display commands to stderr.
set -x
KOKORO_RUNNER_VERSION="v4.*"
BAZEL_VERSION="0.20.0"
# xcode-select's the provided xcode version.
# Usage example:
# select_xcode 9.2.0
select_xcode() {
desired_version="$1"
if [ -z "$desired_version" ]; then
return # No Xcode version to select.
fi
xcodes=$(ls /Applications/ | grep "Xcode")
for xcode_path in $xcodes; do
xcode_version=$(cat /Applications/$xcode_path/Contents/version.plist \
| grep "CFBundleShortVersionString" -A1 \
| grep string \
| cut -d'>' -f2 \
| cut -d'<' -f1)
xcode_version_as_number="$(version_as_number $xcode_version)"
if [ "$xcode_version_as_number" -ne "$(version_as_number $desired_version)" ]; then
continue
fi
sudo xcode-select --switch /Applications/$xcode_path/Contents/Developer
xcodebuild -version
# Resolves the following crash when switching Xcode versions:
# "Failed to locate a valid instance of CoreSimulatorService in the bootstrap"
launchctl remove com.apple.CoreSimulator.CoreSimulatorService || true
break
done
}
fix_bazel_imports() {
if [ -z "$KOKORO_BUILD_NUMBER" ]; then
repo_prefix=""
else
repo_prefix="github/repo/"
fi
# Fixes a bug in bazel where objc_library targets have a _ prefix.
find "${repo_prefix}tests/unit" -type f -name '*.swift' -exec sed -i '' -E "s/import Motion(.+)/import _Motion\1/" {} + || true
stashed_dir=$(pwd)
reset_imports() {
# Undoes our source changes from above.
find "${stashed_dir}/${tests_dir_prefix}tests/unit" -type f -name '*.swift' -exec sed -i '' -E "s/import _Motion(.+)/import Motion\1/" {} + || true
}
trap reset_imports EXIT
}
run_bazel() {
echo "Running bazel builds..."
fix_bazel_imports
if [ -n "$KOKORO_BUILD_NUMBER" ]; then
bazel version
use_bazel.sh "$BAZEL_VERSION"
bazel version
select_xcode "$XCODE_VERSION"
# Move into our cloned repo
cd github/repo
fi
# Run against whichever Xcode is currently selected.
selected_xcode_developer_path=$(xcode-select -p)
selected_xcode_contents_path=$(dirname "$selected_xcode_developer_path")
xcode_version=$(cat "$selected_xcode_contents_path/version.plist" \
| grep "CFBundleShortVersionString" -A1 \
| grep string \
| cut -d'>' -f2 \
| cut -d'<' -f1)
bazel clean
bazel test //... --xcode_version $xcode_version --ios_minimum_os=8.0 --ios_multi_cpus=i386,x86_64
}
run_bazel
echo "Success!"