Move iOS testing and document generation into post test jobs

This commit is contained in:
Emily Toop 2018-08-22 13:06:44 +01:00
parent b34b854ca2
commit 69ffe90e21
3 changed files with 40 additions and 31 deletions

View file

@ -4,8 +4,6 @@ language: rust
os: osx
before_install:
- brew install sqlcipher --with-fts
env:
- MENTAT_RUST_VERSION=1.25.0 # Must align with `build/version.rs`.
rust:
- 1.25.0
- stable
@ -15,18 +13,15 @@ matrix:
allow_failures:
- rust: nightly
fast_finish: true
install:
- |
if [[ "$TRAVIS_RUST_VERSION" = "$MENTAT_RUST_VERSION" ]]; then
rustup target add aarch64-apple-ios armv7-apple-ios armv7s-apple-ios x86_64-apple-ios i386-apple-ios &&
# The version of cargo-lipo in Crates.io doesn't contain any support for Cargo manifests in subdirectories and the build fail.
# We therefore need to use a Beta version that contains the right code.
cargo install --git https://github.com/TimNN/cargo-lipo --rev d347567ff337ee169ba46a624229a451dd6f6067 &&
# If we don't list the devices available then, when we come to pick one during the test run, Travis doesn't
# think that there are any devices available and the build fails.
# TODO: See if there is a less time consuming way of doing this.
instruments -s devices
fi
jobs:
include:
- stage: "Test iOS"
rust: 1.25.0
script: ./scripts/install-ios.sh
script: ./scripts/test-ios.sh
- stage: "Docs"
rust: 1.25.0
script: ./scripts/cargo-doc.sh
script:
- cargo test --verbose --all
- cargo test --features edn/serde_support --verbose --all
@ -38,21 +33,4 @@ script:
for manifest in $(find . -type f -name Cargo.toml); do
cargo test --manifest-path $manifest --verbose --no-default-features --features sqlcipher
done
- |
if [[ "$TRAVIS_RUST_VERSION" = "$MENTAT_RUST_VERSION" ]]; then
pushd ffi &&
cargo lipo --release &&
popd &&
pushd sdks/swift/Mentat &&
xcodebuild -configuration Debug -scheme "Mentat Debug" -sdk iphonesimulator test -destination 'platform=iOS Simulator,name=iPhone X,OS=11.4' &&
popd
fi
after_success:
- |
if [[ "$TRAVIS_PULL_REQUEST" = "false" && "$TRAVIS_BRANCH" == "master" ]]; then
cargo doc &&
echo "<meta http-equiv=refresh content=0;url=mentat/index.html>" > target/doc/index.html &&
git clone https://github.com/davisp/ghp-import.git &&
./ghp-import/ghp_import.py -n -p -f -r https://"$GH_TOKEN"@github.com/"$TRAVIS_REPO_SLUG.git" target/doc
fi
cache: cargo

8
scripts/cargo-doc.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
if [[ "$TRAVIS_PULL_REQUEST" = "false" && "$TRAVIS_BRANCH" == "master" ]]; then
cargo doc &&
echo "<meta http-equiv=refresh content=0;url=mentat/index.html>" > target/doc/index.html &&
git clone https://github.com/davisp/ghp-import.git &&
./ghp-import/ghp_import.py -n -p -f -r https://"$GH_TOKEN"@github.com/"$TRAVIS_REPO_SLUG.git" target/doc
fi

23
scripts/test-ios.sh Executable file
View file

@ -0,0 +1,23 @@
#!/bin/bash
# Install iOS targets with Rustup. We need to install all targets as we are building a universal library.
rustup target add aarch64-apple-ios armv7-apple-ios armv7s-apple-ios x86_64-apple-ios i386-apple-ios
# The version of cargo-lipo in Crates.io doesn't contain any support for Cargo manifests in subdirectories and the build fail.
# We therefore need to use a Beta version that contains the right code.
cargo install --git https://github.com/TimNN/cargo-lipo --rev d347567ff337ee169ba46a624229a451dd6f6067
# If we don't list the devices available then, when we come to pick one during the test run, Travis doesn't
# think that there are any devices available and the build fails.
# TODO: See if there is a less time consuming way of doing this.
# instruments -s devices
# Build Mentat as a universal iOS library.
pushd ffi
cargo lipo --release
popd
# Run the iOS SDK tests using xcodebuild.
pushd sdks/swift/Mentat
xcodebuild -configuration Debug -scheme "Mentat Debug" -sdk iphonesimulator test -destination 'platform=iOS Simulator,name=iPhone X,OS=11.4'
popd