language: rust sudo: false matrix: include: - name: "Linux, 1.32.0" rust: 1.32.0 os: linux - name: "OSX, 1.32.0" rust: 1.32.0 os: osx - name: "Linux, stable" rust: stable - name: "OSX+iOS, stable" rust: stable os: osx install: - rustup target add aarch64-apple-ios script: - cargo test - cargo test --examples - cargo build --target aarch64-apple-ios - name: "Linux, beta" rust: beta - name: "WASM via emscripten, stdweb, wasm-bindgen and WASI" rust: nightly addons: firefox: latest chrome: stable install: - rustup target add wasm32-unknown-unknown - rustup target add wasm32-unknown-emscripten - rustup target add asmjs-unknown-emscripten - rustup target add wasm32-wasi # Get latest geckodriver - export VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | jq -r ".tag_name") - wget -O geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/$VERSION/geckodriver-$VERSION-linux64.tar.gz - tar -xzf geckodriver.tar.gz # Get latest chromedirver - export VERSION=$(wget -q -O - https://chromedriver.storage.googleapis.com/LATEST_RELEASE) - wget -O chromedriver.zip https://chromedriver.storage.googleapis.com/$VERSION/chromedriver_linux64.zip - unzip chromedriver.zip # Get cargo-web - export VERSION=0.6.26 # Pin version for stability - wget -O cargo-web.gz https://github.com/koute/cargo-web/releases/download/$VERSION/cargo-web-x86_64-unknown-linux-gnu.gz - gunzip cargo-web.gz - chmod +x cargo-web # Get wasmtime - export VERSION=v0.3.0 # Pin version for stability - wget -O wasmtime.tar.xz https://github.com/CraneStation/wasmtime/releases/download/$VERSION/wasmtime-$VERSION-x86_64-linux.tar.xz - tar -xf wasmtime.tar.xz --strip-components=1 # Get wasm-bindgen-test-runner which matches our wasm-bindgen version - export VERSION=$(cargo metadata --format-version=1 | jq -r '.packages[] | select ( .name == "wasm-bindgen" ) | .version') - wget -O wasm-bindgen.tar.gz https://github.com/rustwasm/wasm-bindgen/releases/download/$VERSION/wasm-bindgen-$VERSION-x86_64-unknown-linux-musl.tar.gz - tar -xzf wasm-bindgen.tar.gz --strip-components=1 # Place the runner binaries in our PATH - mv cargo-web wasmtime wasm-bindgen-test-runner $HOME/.cargo/bin # Download and setup emscripten - cargo web prepare-emscripten env: EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" script: # We cannot run emscripten test binaries (see rust-lang/rust#63649). # However, we can still build and link all tests to make sure that works. # This is actually useful as it finds stuff such as rust-random/rand#669 - cargo web test --target wasm32-unknown-emscripten --no-run - cargo web test --target asmjs-unknown-emscripten --no-run # wasi tests - cargo test --target wasm32-wasi # stdweb tests (Node, Chrome) - cargo web test --nodejs --target=wasm32-unknown-unknown --features=stdweb - cargo web test --target=wasm32-unknown-unknown --features=stdweb # wasm-bindgen tests (Node, Firefox, Chrome) - cargo test --target wasm32-unknown-unknown --features=wasm-bindgen - GECKODRIVER=$PWD/geckodriver cargo test --target wasm32-unknown-unknown --features=test-in-browser - CHROMEDRIVER=$PWD/chromedriver cargo test --target wasm32-unknown-unknown --features=test-in-browser - name: "Linux, nightly, docs" rust: nightly os: linux install: - cargo --list | egrep "^\s*deadlinks$" -q || cargo install cargo-deadlinks - cargo deadlinks -V script: - cargo test - cargo test --benches - cargo test --examples # remove cached documentation, otherwise files from previous PRs can get included - rm -rf target/doc - cargo doc --no-deps --all --features=std,log - cargo deadlinks --dir target/doc # also test minimum dependency versions are usable - cargo generate-lockfile -Z minimal-versions - cargo test - name: "OSX, nightly, docs" rust: nightly os: osx install: - cargo --list | egrep "^\s*deadlinks$" -q || cargo install cargo-deadlinks - cargo deadlinks -V script: - cargo test - cargo test --benches - cargo test --examples # remove cached documentation, otherwise files from previous PRs can get included - rm -rf target/doc - cargo doc --no-deps --all --features=std,log - cargo deadlinks --dir target/doc # also test minimum dependency versions are usable - cargo generate-lockfile -Z minimal-versions - cargo test - name: "cross-platform build only" rust: nightly install: - rustup target add x86_64-sun-solaris - rustup target add x86_64-unknown-cloudabi - rustup target add x86_64-unknown-freebsd - rustup target add x86_64-fuchsia - rustup target add x86_64-unknown-netbsd - rustup target add x86_64-unknown-redox - rustup target add x86_64-fortanix-unknown-sgx # For no_std targets - rustup component add rust-src - cargo install cargo-xbuild || true script: - cargo build --target=x86_64-sun-solaris - cargo build --target=x86_64-unknown-cloudabi - cargo build --target=x86_64-unknown-freebsd - cargo build --target=x86_64-fuchsia - cargo build --target=x86_64-unknown-netbsd - cargo build --target=x86_64-unknown-redox - cargo build --target=x86_64-fortanix-unknown-sgx - cargo xbuild --target=x86_64-unknown-uefi - cargo xbuild --target=x86_64-unknown-hermit - cargo xbuild --target=x86_64-unknown-l4re-uclibc - cargo xbuild --target=x86_64-wrs-vxworks # also test minimum dependency versions are usable - cargo generate-lockfile -Z minimal-versions - cargo build --target=x86_64-sun-solaris - cargo build --target=x86_64-unknown-cloudabi - cargo build --target=x86_64-unknown-freebsd - cargo build --target=x86_64-fuchsia - cargo build --target=x86_64-unknown-netbsd - cargo build --target=x86_64-unknown-redox - cargo build --target=x86_64-fortanix-unknown-sgx - cargo xbuild --target=x86_64-unknown-uefi - cargo xbuild --target=x86_64-unknown-hermit - cargo xbuild --target=x86_64-unknown-l4re-uclibc - cargo xbuild --target=x86_64-uwp-windows-gnu # Trust cross-built/emulated targets. We must repeat all non-default values. - name: "Linux (MIPS, big-endian)" env: TARGET=mips-unknown-linux-gnu rust: stable sudo: required dist: trusty services: docker install: - sh utils/ci/install.sh - source ~/.cargo/env || true script: - bash utils/ci/script.sh - name: "Android (ARMv7)" env: TARGET=armv7-linux-androideabi rust: stable sudo: required dist: trusty services: docker install: - sh utils/ci/install.sh - source ~/.cargo/env || true script: - bash utils/ci/script.sh - name: "rustfmt" rust: stable install: - rustup component add rustfmt script: - cargo fmt --all -- */*.rs --check allow_failures: # Formatting errors should appear in Travis, but not break the build. - name: "rustfmt" before_install: - set -e - rustup self update before_script: - export RUSTFLAGS="-D warnings" script: - cargo test - cargo test --examples after_script: set +e cache: cargo: true directories: - .local/share/cargo-web before_cache: # Travis can't cache files that are not readable by "others" - chmod -R a+r $HOME/.cargo notifications: email: on_success: never branches: only: - master