chrono/ci/travis.sh

130 lines
3.6 KiB
Bash
Raw Normal View History

#!/bin/bash
# This is the script that's executed by travis, you can run it yourself to run
# the exact same suite
set -e
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
channel() {
if [ -n "${TRAVIS}" ]; then
if [ "${TRAVIS_RUST_VERSION}" = "${CHANNEL}" ]; then
pwd
(set -x; cargo "$@")
fi
elif [ -n "${APPVEYOR}" ]; then
if [ "${APPVEYOR_RUST_CHANNEL}" = "${CHANNEL}" ]; then
pwd
(set -x; cargo "$@")
fi
else
pwd
(set -x; cargo "+${CHANNEL}" "$@")
fi
}
build_and_test() {
# interleave building and testing in hope that it saves time
# also vary the local time zone to (hopefully) catch tz-dependent bugs
# also avoid doc-testing multiple times---it takes a lot and rarely helps
cargo clean
if [ "${WASMBIND}" != "y" ]; then
build_and_test_nonwasm
else
build_and_test_wasm
fi
if [[ "$CHANNEL" == stable ]]; then
if [[ -n "$TRAVIS" ]] ; then
check_readme
fi
fi
}
build_and_test_nonwasm() {
channel build -v
TZ=ACST-9:30 channel test -v --lib
channel build -v --features rustc-serialize
TZ=EST4 channel test -v --features rustc-serialize --lib
2019-09-09 11:41:44 +00:00
channel build -v --features serde-1
TZ=UTC0 channel test -v --features serde-1 --lib
channel build -v --features serde-1,rustc-serialize
TZ=Asia/Katmandu channel test -v --features serde-1,rustc-serialize
2017-02-24 23:20:07 +00:00
# without default "clock" feature
2019-09-07 10:20:52 +00:00
channel build -v --no-default-features --features std
2017-02-24 23:20:07 +00:00
TZ=ACST-9:30 channel test -v --no-default-features --lib
2019-09-07 10:20:52 +00:00
channel build -v --no-default-features --features std,rustc-serialize
2017-02-24 23:20:07 +00:00
TZ=EST4 channel test -v --no-default-features --features rustc-serialize --lib
2019-09-09 11:41:44 +00:00
channel build -v --no-default-features --features std,serde-1
TZ=UTC0 channel test -v --no-default-features --features serde-1 --lib
channel build -v --no-default-features --features std,serde-1,rustc-serialize
TZ=Asia/Katmandu channel test -v --no-default-features --features std,serde-1,rustc-serialize --lib
}
build_and_test_wasm() {
touch tests/wasm.rs # ensure rebuild happens so TZ / NOW take effect
2019-09-04 02:30:25 +00:00
TZ=ACST-9:30 NOW=$(date +%s) wasm-pack test --node -- --features wasmbind
2019-08-16 20:04:09 +00:00
touch tests/wasm.rs
2019-09-04 02:30:25 +00:00
TZ=EST4 NOW=$(date +%s) wasm-pack test --node -- --features wasmbind
touch tests/wasm.rs
2019-09-04 02:30:25 +00:00
TZ=UTC0 NOW=$(date +%s) wasm-pack test --node -- --features wasmbind
touch tests/wasm.rs
2019-09-04 02:30:25 +00:00
TZ=Asia/Katmandu NOW=$(date +%s) wasm-pack test --node -- --features wasmbind
}
build_only() {
# Rust 1.13 doesn't support custom derive, so, to avoid doctests which
# validate that, we just build there.
cargo clean
channel build -v
channel build -v --features rustc-serialize
2019-09-09 11:41:44 +00:00
channel build -v --features 'serde-1 bincode'
2019-09-07 10:20:52 +00:00
channel build -v --no-default-features --features std
}
build_core_test() {
rustup target add thumbv6m-none-eabi --toolchain $CHANNEL
cd ci/core-test
channel build -v --target thumbv6m-none-eabi
cd ../..
}
run_clippy() {
# cached installation will not work on a later nightly
if [ -n "${TRAVIS}" ] && ! cargo install clippy --debug --force; then
echo "COULD NOT COMPILE CLIPPY, IGNORING CLIPPY TESTS"
exit
fi
2019-09-09 11:41:44 +00:00
cargo clippy --features 'serde-1 bincode rustc-serialize' -- -Dclippy
}
check_readme() {
make readme
(set -x; git diff --exit-code -- README.md) ; echo $?
}
rustc --version
cargo --version
2019-08-16 18:23:28 +00:00
node --version
CHANNEL=nightly
if [ "x${CLIPPY}" = xy ] ; then
run_clippy
else
build_and_test
fi
CHANNEL=beta
build_and_test
CHANNEL=stable
build_and_test
2019-09-09 11:41:44 +00:00
build_core_test
CHANNEL=1.13.0
build_only