- uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
with:
github_token: "${{ secrets.github_token }}"
+
- name: Checkout
uses: actions/checkout@v2.3.3
with:
run: |
MESSAGE=$(git log --format=%B -n 1)
PR=$(echo "$MESSAGE" | grep -o "#[0-9]*" | head -1 | sed -e 's/^#//')
- output=$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -s "https://api.github.com/repos/rust-lang/rust-clippy/pulls/$PR" | \
- python -c "import sys, json; print(json.load(sys.stdin)['body'])" | \
- grep "^changelog: " | \
- sed "s/changelog: //g")
- if [[ -z "$output" ]]; then
+ body=$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -s "https://api.github.com/repos/rust-lang/rust-clippy/pulls/$PR" | \
+ python -c "import sys, json; print(json.load(sys.stdin)['body'])")
+ output=$(grep "^changelog:\s*\S" <<< "$body" | sed "s/changelog:\s*//g") || {
echo "ERROR: PR body must contain 'changelog: ...'"
exit 1
- elif [[ "$output" = "none" ]]; then
+ }
+ if [[ "$output" = "none" ]]; then
echo "WARNING: changelog is 'none'"
+ else
+ echo "changelog: $output"
fi
env:
PYTHONIOENCODING: 'utf-8'
runs-on: ${{ matrix.os }}
+ # NOTE: If you modify this job, make sure you copy the changes to clippy.yml
steps:
# Setup
- uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
sudo apt-get install gcc-multilib libssl-dev:i386 libgit2-dev:i386
if: matrix.host == 'i686-unknown-linux-gnu'
- - name: rust-toolchain
- uses: actions-rs/toolchain@v1.0.6
- with:
- toolchain: nightly
- target: ${{ matrix.host }}
- profile: minimal
-
- name: Checkout
uses: actions/checkout@v2.3.3
- - name: Run cargo update
- run: cargo update
-
- - name: Cache cargo dir
- uses: actions/cache@v2
- with:
- path: ~/.cargo
- key: ${{ runner.os }}-${{ matrix.host }}-${{ hashFiles('Cargo.lock') }}
- restore-keys: |
- ${{ runner.os }}-${{ matrix.host }}
-
- - name: Master Toolchain Setup
- run: bash setup-toolchain.sh
- env:
- HOST_TOOLCHAIN: ${{ matrix.host }}
+ - name: Install toolchain
+ run: rustup show active-toolchain
# Run
- name: Set LD_LIBRARY_PATH (Linux)
echo "$SYSROOT/bin" >> $GITHUB_PATH
- name: Build
- run: cargo build --features deny-warnings
+ run: cargo build --features deny-warnings,internal-lints,metadata-collector-lint
- # compiletest would panic due to "Found multiple rlibs for crate `clippy_lints`"
- - name: clean rlibs
- run: rm -f ./target/debug/deps/libclippy_lints*
+ - name: Test
+ run: cargo test --features deny-warnings,internal-lints,metadata-collector-lint
- - name: Build with internal lints
- run: cargo build --features deny-warnings,internal-lints
-
- - name: Test with internal lints
- run: cargo test --features deny-warnings,internal-lints
-
- - name: Test clippy_lints with internal lints
- run: cargo test --features deny-warnings,internal-lints
+ - name: Test clippy_lints
+ run: cargo test --features deny-warnings,internal-lints,metadata-collector-lint
working-directory: clippy_lints
- name: Test rustc_tools_util
run: ../target/debug/cargo-clippy
working-directory: clippy_workspace_tests
+ - name: Test cargo-clippy --fix
+ run: ../target/debug/cargo-clippy clippy --fix
+ working-directory: clippy_workspace_tests
+
- name: Test clippy-driver
run: bash .github/driver.sh
env:
OS: ${{ runner.os }}
- # Cleanup
- - name: Run cargo-cache --autoclean
+ - name: Test cargo dev new lint
run: |
- cargo +nightly install cargo-cache --no-default-features --features ci-autoclean cargo-cache
- cargo cache
+ cargo dev new_lint --name new_early_pass --pass early
+ cargo dev new_lint --name new_late_pass --pass late
+ cargo check
+ git reset --hard HEAD
integration_build:
needs: changelog
with:
github_token: "${{ secrets.github_token }}"
- - name: rust-toolchain
- uses: actions-rs/toolchain@v1.0.6
- with:
- toolchain: nightly
- target: x86_64-unknown-linux-gnu
- profile: minimal
-
- name: Checkout
uses: actions/checkout@v2.3.3
- - name: Run cargo update
- run: cargo update
-
- - name: Cache cargo dir
- uses: actions/cache@v2
- with:
- path: ~/.cargo
- key: ${{ runner.os }}-x86_64-unknown-linux-gnu-${{ hashFiles('Cargo.lock') }}
- restore-keys: |
- ${{ runner.os }}-x86_64-unknown-linux-gnu
-
- - name: Master Toolchain Setup
- run: bash setup-toolchain.sh
+ - name: Install toolchain
+ run: rustup show active-toolchain
# Run
- name: Build Integration Test
name: target
path: target
- # Cleanup
- - name: Run cargo-cache --autoclean
- run: |
- cargo +nightly install cargo-cache --no-default-features --features ci-autoclean cargo-cache
- cargo cache
integration:
needs: integration_build
strategy:
with:
github_token: "${{ secrets.github_token }}"
- - name: rust-toolchain
- uses: actions-rs/toolchain@v1.0.6
- with:
- toolchain: nightly
- target: x86_64-unknown-linux-gnu
- profile: minimal
-
- name: Checkout
uses: actions/checkout@v2.3.3
- - name: Run cargo update
- run: cargo update
-
- - name: Cache cargo dir
- uses: actions/cache@v2
- with:
- path: ~/.cargo
- key: ${{ runner.os }}-x86_64-unknown-linux-gnu-${{ hashFiles('Cargo.lock') }}
- restore-keys: |
- ${{ runner.os }}-x86_64-unknown-linux-gnu
-
- - name: Master Toolchain Setup
- run: bash setup-toolchain.sh
+ - name: Install toolchain
+ run: rustup show active-toolchain
# Download
- name: Download target dir
# Run
- name: Test ${{ matrix.integration }}
- run: $CARGO_TARGET_DIR/debug/integration
+ run: |
+ RUSTUP_TOOLCHAIN="$(rustup show active-toolchain | grep -o -E "nightly-[0-9]{4}-[0-9]{2}-[0-9]{2}")" \
+ $CARGO_TARGET_DIR/debug/integration
env:
INTEGRATION: ${{ matrix.integration }}
- RUSTUP_TOOLCHAIN: master
-
- # Cleanup
- - name: Run cargo-cache --autoclean
- run: |
- cargo +nightly install cargo-cache --no-default-features --features ci-autoclean cargo-cache
- cargo cache
# These jobs doesn't actually test anything, but they're only used to tell
# bors the build completed, as there is no practical way to detect when a