os:
- linux
- # - osx # doesn't even start atm. Not sure what travis is up to. Disabling to reduce the noise
+ - osx
+ - windows
-sudo: false
+branches:
+ # Don't build these branches
+ except:
+ # Used by bors
+ - trying.tmp
+ - staging.tmp
env:
global:
- # TRAVIS_TOKEN_CLIPPY_SERVICE
- - secure: dj8SwwuRGuzbo2wZq5z7qXIf7P3p7cbSGs1I3pvXQmB6a58gkLiRn/qBcIIegdt/nzXs+Z0Nug+DdesYVeUPxk1hIa/eeU8p6mpyTtZ+30H4QVgVzd0VCthB5F/NUiPVxTgpGpEgCM9/p72xMwTn7AAJfsGqk7AJ4FS5ZZKhqFI=
- RUST_BACKTRACE=1
-before_install:
- - |
- # work-around for issue https://github.com/travis-ci/travis-ci/issues/6307
- # might not be necessary in the future
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then
- command curl -sSL https://rvm.io/mpapis.asc | gpg --import -
- rvm get stable
+install:
+ - |
+ if [ -z ${INTEGRATION} ]; then
+ rustup component add rustfmt || cargo install --git https://github.com/rust-lang/rustfmt/ --force
+ if [ "$TRAVIS_OS_NAME" == "linux" ]; then
+ . $HOME/.nvm/nvm.sh
+ nvm install stable
+ nvm use stable
+ npm install remark-cli remark-lint
+ fi
+ if [ "$TRAVIS_OS_NAME" == "windows" ]; then
+ choco install windows-sdk-10.0
+ fi
fi
-install:
- - . $HOME/.nvm/nvm.sh
- - nvm install stable
- - nvm use stable
- - npm install remark-cli remark-lint
+# disabling the integration tests in forks should be done with
+# if: fork = false
+# but this is currently buggy travis-ci/travis-ci#9118
+matrix:
+ fast_finish: true
+ include:
+ # Builds that are executed for every PR
+ - os: osx # run base tests on both platforms
+ env: BASE_TESTS=true
+ - os: linux
+ env: BASE_TESTS=true
+ - os: windows
+ env: CARGO_INCREMENTAL=0 BASE_TESTS=true
+
+ # Builds that are only executed when a PR is r+ed or a try build is started
+ # We don't want to run these always because they go towards
+ # the build limit within the Travis rust-lang account.
+ - env: INTEGRATION=rust-lang/cargo
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-random/rand
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-lang-nursery/stdsimd
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-lang/rustfmt
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-lang-nursery/futures-rs
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-lang-nursery/failure
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-lang-nursery/log
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-lang-nursery/chalk
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=rust-lang/rls
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=chronotope/chrono
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=serde-rs/serde
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=Geal/nom
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=hyperium/hyper
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ - env: INTEGRATION=bluss/rust-itertools
+ if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
+ allow_failures:
+ - os: windows
+ env: CARGO_INCREMENTAL=0 BASE_TESTS=true
+# prevent these jobs with default env vars
+ exclude:
+ - os: linux
+ - os: osx
+ - os: windows
script:
- - PATH=$PATH:./node_modules/.bin
- - remark -f *.md > /dev/null
- - set -e
- - cargo build --features debugging
- - cargo test --features debugging
- - mkdir -p ~/rust/cargo/bin
- - cp target/debug/cargo-clippy ~/rust/cargo/bin/cargo-clippy
- - cp target/debug/clippy-driver ~/rust/cargo/bin/clippy-driver
- - PATH=$PATH:~/rust/cargo/bin cargo clippy --all -- -D clippy
- - cd clippy_workspace_tests && PATH=$PATH:~/rust/cargo/bin cargo clippy -- -D clippy && cd ..
- - cd clippy_workspace_tests/src && PATH=$PATH:~/rust/cargo/bin cargo clippy -- -D clippy && cd ../..
- - cd clippy_workspace_tests/subcrate && PATH=$PATH:~/rust/cargo/bin cargo clippy -- -D clippy && cd ../..
- - cd clippy_workspace_tests/subcrate/src && PATH=$PATH:~/rust/cargo/bin cargo clippy -- -D clippy && cd ../../..
- - PATH=$PATH:~/rust/cargo/bin cargo clippy --manifest-path=clippy_workspace_tests/Cargo.toml -- -D clippy
- - cd clippy_workspace_tests/subcrate && PATH=$PATH:~/rust/cargo/bin cargo clippy --manifest-path=../Cargo.toml -- -D clippy && cd ../..
- - set +e
+ - |
+ rm rust-toolchain
+ ./setup-toolchain.sh
+ export LD_LIBRARY_PATH=$(rustc --print sysroot)/lib
+ - |
+ if [ -z ${INTEGRATION} ]; then
+ ./ci/base-tests.sh && sleep 5
+ else
+ ./ci/integration-tests.sh && sleep 5
+ fi
after_success: |
#!/bin/bash
if [ $(uname) == Linux ]; then
- set -e
- ./.github/deploy.sh
- # trigger rebuild of the clippy-service, to keep it up to date with clippy itself
- if [ "$TRAVIS_PULL_REQUEST" == "false" ] &&
- [ "$TRAVIS_REPO_SLUG" == "Manishearth/rust-clippy" ] &&
- [ "$TRAVIS_BRANCH" == "master" ] &&
- [ "$TRAVIS_TOKEN_CLIPPY_SERVICE" != "" ] ; then
- curl -s -X POST \
- -H "Content-Type: application/json" \
- -H "Accept: application/json" \
- -H "Travis-API-Version: 3" \
- -H "Authorization: token $TRAVIS_TOKEN_CLIPPY_SERVICE" \
- -d "{ \"request\": { \"branch\":\"master\" }}" \
- https://api.travis-ci.org/repo/gnunicorn%2Fclippy-service/requests
+ set -ex
+ if [ -z ${INTEGRATION} ]; then
+ ./.github/deploy.sh
else
- echo "Ignored"
+ echo "Not deploying, because we're in an integration test run"
fi
set +e
fi