diff --git a/.travis.yml b/.travis.yml index 51ce16ef..4e64023f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ os: osx before_install: - brew install sqlcipher --with-fts rust: - - 1.25.0 # Must align with `build/version.rs`. + - 1.25.0 - stable - beta - nightly @@ -13,6 +13,15 @@ matrix: allow_failures: - rust: nightly fast_finish: true +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 @@ -24,12 +33,4 @@ script: for crate in "" "db" "db-traits" "ffi" "public-traits" "query-projector" "query-projector-traits" "query-pull" "sql" "tolstoy" "tolstoy-traits" "transaction" "tools/cli"; do cargo test --manifest-path ./$crate/Cargo.toml --verbose --no-default-features --features sqlcipher done -after_success: - - | - if [[ "$TRAVIS_PULL_REQUEST" = "false" && "$TRAVIS_BRANCH" == "master" ]]; then - cargo doc && - echo "" > 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 diff --git a/scripts/cargo-doc.sh b/scripts/cargo-doc.sh new file mode 100755 index 00000000..52942bea --- /dev/null +++ b/scripts/cargo-doc.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +if [[ "$TRAVIS_PULL_REQUEST" = "false" && "$TRAVIS_BRANCH" == "master" ]]; then + cargo doc && + echo "" > 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 diff --git a/scripts/test-ios.sh b/scripts/test-ios.sh new file mode 100755 index 00000000..b836a37a --- /dev/null +++ b/scripts/test-ios.sh @@ -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