diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 51ce58ce..00000000 --- a/.travis.yml +++ /dev/null @@ -1,67 +0,0 @@ -language: rust -sudo: false -cache: cargo - -branches: - only: - - master - - staging - - trying - -matrix: - fast_finish: true - - include: - # This is the minimum Rust version supported by pin-project. - # When updating this, the reminder to update the minimum required version in README.md. - - rust: 1.33.0 - - - rust: stable - - rust: beta - - rust: nightly - script: - - cargo test --no-default-features - - cargo test - - - rust: nightly - name: cargo test (ui tests) - script: - - cargo clean - - RUSTFLAGS='--cfg ui_tests' cargo test --test compile-test - - - rust: nightly - name: cargo check (minimal versions) - script: - - cargo update -Zminimal-versions - - cargo check - - - rust: nightly - name: cargo clippy - script: - - rustup component add clippy || travis_terminate 0 - - cargo clippy - - - rust: stable - name: cargo fmt - script: - - rustup component add rustfmt - - cargo fmt -- --check - - - rust: nightly - name: cargo doc - script: - - RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps - -env: - - RUSTFLAGS=-Dwarnings - -before_script: - - set -o errexit - -script: - - cargo check --no-default-features - - cargo check - -notifications: - email: - on_success: never diff --git a/README.md b/README.md index cb17c320..d687fc0f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,21 @@ # pin-project -[![Build Status](https://travis-ci.org/taiki-e/pin-project.svg?branch=master)](https://travis-ci.org/taiki-e/pin-project) -[![version](https://img.shields.io/crates/v/pin-project.svg)](https://crates.io/crates/pin-project/) -[![documentation](https://docs.rs/pin-project/badge.svg)](https://docs.rs/pin-project/) -[![license](https://img.shields.io/crates/l/pin-project.svg)](https://crates.io/crates/pin-project/) -[![Rustc Version](https://img.shields.io/badge/rustc-1.33+-lightgray.svg)](https://blog.rust-lang.org/2019/02/28/Rust-1.33.0.html) +[![Build Status][azure-badge]][azure-url] +[![Crates.io][crates-version-badge]][crates-url] +[![Docs.rs][docs-badge]][docs-url] +[![License][crates-license-badge]][crates-url] +[![Minimum supported Rust version][rustc-badge]][rustc-url] + +[azure-badge]: https://dev.azure.com/taiki-e/taiki-e/_apis/build/status/taiki-e.pin-project?branchName=master +[azure-url]: https://dev.azure.com/taiki-e/taiki-e/_build/latest?definitionId=13&branchName=master +[crates-version-badge]: https://img.shields.io/crates/v/pin-project.svg +[crates-license-badge]: https://img.shields.io/crates/l/pin-project.svg +[crates-badge]: https://img.shields.io/crates/v/pin-project.svg +[crates-url]: https://crates.io/crates/pin-project/ +[docs-badge]: https://docs.rs/pin-project/badge.svg +[docs-url]: https://docs.rs/pin-project/ +[rustc-badge]: https://img.shields.io/badge/rustc-1.33+-lightgray.svg +[rustc-url]: https://blog.rust-lang.org/2019/02/28/Rust-1.33.0.html An attribute that creates a projection struct covering all the fields. diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..4745584f --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,54 @@ +trigger: +- master +- staging +- trying + +variables: + RUSTFLAGS: -Dwarnings + +jobs: +# This is the minimum Rust version supported by pin-project. +# When updating this, the reminder to update the minimum supported +# Rust version in README.md. +# +# Tests are not run as tests may require newer versions of rust. +- template: ci/azure-test.yml + parameters: + name: minrust + rust: 1.33.0 + +- template: ci/azure-test.yml + parameters: + name: stable + rust: stable + +- template: ci/azure-test.yml + parameters: + name: beta + rust: beta + +- template: ci/azure-test.yml + parameters: + name: nightly + rust: nightly + cmd: test + +- template: ci/azure-compile-test.yml + parameters: + name: compile_test + rust: nightly + +- template: ci/azure-clippy.yml + parameters: + name: clippy + rust: nightly + +- template: ci/azure-rustfmt.yml + parameters: + name: rustfmt + rust: stable + +- template: ci/azure-rustdoc.yml + parameters: + name: rustdoc + rust: nightly diff --git a/bors.toml b/bors.toml index 359f8947..cbd2b79e 100644 --- a/bors.toml +++ b/bors.toml @@ -1 +1 @@ -status = ["continuous-integration/travis-ci/push"] +status = ["taiki-e.pin-project"] diff --git a/ci/azure-clippy.yml b/ci/azure-clippy.yml new file mode 100644 index 00000000..f9b1257d --- /dev/null +++ b/ci/azure-clippy.yml @@ -0,0 +1,31 @@ +jobs: +- job: ${{ parameters.name }} + displayName: Clippy + pool: + vmImage: ubuntu-16.04 + + steps: + - template: azure-install-rust.yml + parameters: + rust: ${{ parameters.rust }} + + - script: | + set +e + if rustup component add clippy; then + set -e + else + set -e + target=`curl https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/clippy` + echo "'clippy' is unavailable on the toolchain '${{ parameters.rust }}', use the toolchain 'nightly-$target' instead" + rustup toolchain install nightly-$target + rustup default nightly-$target + rustup component add clippy + rustup toolchain list + rustc -Vv + cargo -V + fi + cargo clippy --version + displayName: rustup component add clippy + + - script: cargo clippy --all --all-features + displayName: cargo clippy --all --all-features diff --git a/ci/azure-compile-test.yml b/ci/azure-compile-test.yml new file mode 100644 index 00000000..6a4b83d2 --- /dev/null +++ b/ci/azure-compile-test.yml @@ -0,0 +1,15 @@ +jobs: +- job: ${{ parameters.name }} + displayName: compile-test + pool: + vmImage: ubuntu-16.04 + + steps: + - template: azure-install-rust.yml + parameters: + rust: ${{ parameters.rust }} + + - script: | + cargo clean + RUSTFLAGS='--cfg ui_tests' cargo test -p pin-project --all-features --test compile-test + displayName: cargo test (compile-test) diff --git a/ci/azure-install-rust.yml b/ci/azure-install-rust.yml new file mode 100644 index 00000000..6b008c69 --- /dev/null +++ b/ci/azure-install-rust.yml @@ -0,0 +1,33 @@ +steps: + # Linux and macOS. + - script: | + set -e + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none + export PATH=$PATH:$HOME/.cargo/bin + rustup toolchain install $RUSTUP_TOOLCHAIN + rustup default $RUSTUP_TOOLCHAIN + echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin" + env: + RUSTUP_TOOLCHAIN: ${{ parameters.rust }} + displayName: Install rust (*nix) + condition: not(eq(variables['Agent.OS'], 'Windows_NT')) + + # Windows. + - script: | + curl -sSf -o rustup-init.exe https://win.rustup.rs + rustup-init.exe -y --default-toolchain none + set PATH=%PATH%;%USERPROFILE%\.cargo\bin + rustup toolchain install %RUSTUP_TOOLCHAIN% + rustup default %RUSTUP_TOOLCHAIN% + echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin" + env: + RUSTUP_TOOLCHAIN: ${{ parameters.rust }} + displayName: Install rust (windows) + condition: eq(variables['Agent.OS'], 'Windows_NT') + + # All platforms. + - script: | + rustup toolchain list + rustc -Vv + cargo -V + displayName: Query rust and cargo versions diff --git a/ci/azure-rustdoc.yml b/ci/azure-rustdoc.yml new file mode 100644 index 00000000..5aeb712c --- /dev/null +++ b/ci/azure-rustdoc.yml @@ -0,0 +1,13 @@ +jobs: +- job: ${{ parameters.name }} + displayName: Rustdoc + pool: + vmImage: ubuntu-16.04 + + steps: + - template: azure-install-rust.yml + parameters: + rust: ${{ parameters.rust }} + + - script: RUSTDOCFLAGS=-Dwarnings cargo doc --no-deps --all --all-features + displayName: cargo doc --all --all-features diff --git a/ci/azure-rustfmt.yml b/ci/azure-rustfmt.yml new file mode 100644 index 00000000..fe72a030 --- /dev/null +++ b/ci/azure-rustfmt.yml @@ -0,0 +1,18 @@ +jobs: +- job: ${{ parameters.name }} + displayName: Rustfmt + pool: + vmImage: ubuntu-16.04 + + steps: + - template: azure-install-rust.yml + parameters: + rust: ${{ parameters.rust }} + + - script: | + rustup component add rustfmt + cargo fmt --version + displayName: rustup component add rustfmt + + - script: cargo fmt --all -- --check + displayName: cargo fmt --all -- --check diff --git a/ci/azure-test.yml b/ci/azure-test.yml new file mode 100644 index 00000000..ec08b1a7 --- /dev/null +++ b/ci/azure-test.yml @@ -0,0 +1,36 @@ +parameters: + cmd: check + +jobs: +- job: ${{ parameters.name }} + displayName: ${{ parameters.displayName }} ${{ parameters.rust }} + strategy: + matrix: + Linux: + vmImage: ubuntu-16.04 + + ${{ if parameters.cross }}: + MacOS: + vmImage: macOS-10.13 + Windows: + vmImage: vs2017-win2016 + pool: + vmImage: $(vmImage) + + steps: + - template: azure-install-rust.yml + parameters: + rust: ${{ parameters.rust }} + + - script: | + cargo ${{ parameters.cmd }} --all --no-default-features + cargo ${{ parameters.cmd }} --all + cargo ${{ parameters.cmd }} --all --all-features + displayName: cargo ${{ parameters.cmd }} --all + + - ${{ if eq(parameters.rust, 'nightly') }}: + - script: | + cargo update -Zminimal-versions + cat Cargo.lock + cargo check --all --all-features + displayName: cargo check -Zminimal-versions