--- language: rust dist: trusty sudo: required matrix: include: - rust: 1.34.0 # cfg(doctest) is experimental in 1.39 but ignored with 1.34.0, and that snuck in when 1.39.0 wasn't tested - rust: 1.39.0 - rust: stable - rust: beta - rust: nightly addons: apt: packages: # cargo-tarpaulin needs this - libssl-dev install: # For test coverage. In install step so that it can use cache. - cargo tarpaulin --version || RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install --force cargo-tarpaulin - cargo +nightly install cargo-fuzz # no_std - rust: stable env: TARGET="--target thumbv6m-none-eabi" FEATURES="--no-default-features --features alloc" install: - rustup target add thumbv6m-none-eabi cache: cargo env: # prevent cargo fuzz list from printing with color - TERM=dumb script: - cargo build --verbose $TARGET --no-default-features - cargo build --verbose $TARGET $FEATURES - 'if [[ -z "$TARGET" ]]; then cargo test --verbose; fi' - 'if [[ -z "$TARGET" ]]; then cargo doc --verbose; fi' - 'if [[ "$TRAVIS_RUST_VERSION" = nightly ]]; then cargo bench --no-run; fi' # run for just a second to confirm that it can build and run ok - 'if [[ "$TRAVIS_RUST_VERSION" = nightly ]]; then cargo fuzz list | xargs -L 1 -I FUZZER cargo fuzz run FUZZER -- -max_total_time=1; fi' after_success: | if [[ "$TRAVIS_RUST_VERSION" = nightly ]]; then # Calculate test coverage cargo tarpaulin --out Xml bash <(curl -s https://codecov.io/bash) fi