Auto merge of #263 - cuviper:revamp-ci, r=hauleth

Bump rustc to 1.8 and revamp all CI

This bumps the minimum rustc to 1.8.0, "fixing" #257.  I normally
consider this a breaking change, but we were already broken due to
external factors, for which I couldn't find a workaround.

This adds 1.15.0 to the CI matrix to build stable num-derive.  We still
need nightly to run its tests though, because of compiletest_rs, and
dev-dependencies can't be optional.

The testing scripts are moved from .travis/ to ci/, as they don't really
need to be hidden.  It's also now consolidated into one test_full.sh
which considers $TRAVIS_RUST_VERSION as needed.
This commit is contained in:
Homu 2017-02-10 09:19:34 +09:00
commit d273495cbf
11 changed files with 68 additions and 61 deletions

View File

@ -1,16 +0,0 @@
#!/bin/sh
# Use rustup to locally run the same suite of tests as .travis.yml.
# (You should first install/update 1.0.0, beta, and nightly.)
set -ex
for toolchain in 1.0.0 beta nightly; do
run="rustup run $toolchain"
$run cargo build --verbose
$run /usr/bin/env make test
$run $PWD/.travis/test_features.sh
if [ $toolchain = nightly ]; then
$run $PWD/.travis/test_nightly.sh
fi
$run cargo doc
done

View File

@ -1,21 +1,19 @@
language: rust
rust:
- 1.0.0
- 1.8.0
- 1.15.0
- beta
- nightly
sudo: false
script:
- cargo build --verbose
- make test
- .travis/test_features.sh
- |
[ $TRAVIS_RUST_VERSION != nightly ] || .travis/test_nightly.sh
- ./ci/test_full.sh
- cargo doc
after_success: |
[ $TRAVIS_BRANCH = master ] &&
[ $TRAVIS_PULL_REQUEST = false ] &&
[ $TRAVIS_RUST_VERSION = nightly ] &&
ssh-agent .travis/deploy.sh
ssh-agent ./ci/deploy.sh
notifications:
email:
on_success: never

View File

@ -1,7 +0,0 @@
#!/bin/sh
set -ex
for feature in '' bigint rational complex; do
cargo build --verbose --no-default-features --features="$feature"
done

View File

@ -1,15 +0,0 @@
#!/bin/sh
set -ex
cargo bench --verbose
cargo test --verbose --manifest-path=macros/Cargo.toml
cargo test --verbose --manifest-path=derive/Cargo.toml
# Build test for the serde feature
cargo build --verbose --features "serde"
# Downgrade serde and build test the 0.7.0 channel as well
cargo update -p serde --precise 0.7.0
cargo build --verbose --features "serde"

View File

@ -1,14 +0,0 @@
CARGO_CMD ?= cargo
packages = bigint complex integer iter rational traits
test:
$(MAKE) run-all TASK="test"
run-all: $(packages)
$(CARGO_CMD) $(TASK)
$(packages):
$(CARGO_CMD) $(TASK) --manifest-path $@/Cargo.toml
.PHONY: $(packages) test

View File

@ -22,3 +22,9 @@ and this to your crate root:
```rust
extern crate num;
```
## Compatibility
Most of the `num` crates are tested for rustc 1.8 and greater.
The exceptions are `num-derive` which requires at least rustc 1.15,
and the deprecated `num-macros` which requires nightly rustc.

View File

View File

@ -6,7 +6,7 @@ cp doc/* target/doc/
pip install ghp-import --user
$HOME/.local/bin/ghp-import -n target/doc
openssl aes-256-cbc -K $encrypted_9e86330b283d_key -iv $encrypted_9e86330b283d_iv -in .travis/deploy.enc -out .travis/deploy -d
chmod 600 .travis/deploy
ssh-add .travis/deploy
openssl aes-256-cbc -K $encrypted_9e86330b283d_key -iv $encrypted_9e86330b283d_iv -in ./ci/deploy.enc -out ./ci/deploy -d
chmod 600 ./ci/deploy
ssh-add ./ci/deploy
git push -qf ssh://git@github.com/${TRAVIS_REPO_SLUG}.git gh-pages

12
ci/rustup.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
# Use rustup to locally run the same suite of tests as .travis.yml.
# (You should first install/update 1.8.0, 1.15.0, beta, and nightly.)
set -ex
for toolchain in 1.8.0 1.15.0 beta nightly; do
run="rustup run $toolchain"
$run cargo build --verbose
$run $PWD/ci/test_full.sh $toolchain
$run cargo doc
done

43
ci/test_full.sh Executable file
View File

@ -0,0 +1,43 @@
#!/bin/bash
set -ex
echo Testing num on rustc ${TRAVIS_RUST_VERSION:=$1}
# All of these packages should build and test everywhere.
for package in bigint complex integer iter rational traits; do
cargo build --manifest-path $package/Cargo.toml
cargo test --manifest-path $package/Cargo.toml
done
# Each isolated feature should also work everywhere.
for feature in '' bigint rational complex; do
cargo build --verbose --no-default-features --features="$feature"
cargo test --verbose --no-default-features --features="$feature"
done
# Build test for the serde feature
cargo build --verbose --features "serde"
# Downgrade serde and build test the 0.7.0 channel as well
cargo update -p serde --precise 0.7.0
cargo build --verbose --features "serde"
if [ "$TRAVIS_RUST_VERSION" = 1.8.0 ]; then exit; fi
# num-derive should build on 1.15.0+
cargo build --verbose --manifest-path=derive/Cargo.toml
if [ "$TRAVIS_RUST_VERSION" != nightly ]; then exit; fi
# num-derive testing requires compiletest_rs, which requires nightly
cargo test --verbose --manifest-path=derive/Cargo.toml
# num-macros only works on nightly, soon to be deprecated
cargo build --verbose --manifest-path=macros/Cargo.toml
cargo test --verbose --manifest-path=macros/Cargo.toml
# benchmarks only work on nightly
cargo bench --verbose