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