about summary refs log tree commit diff
diff options
context:
space:
mode:
authorflip1995 <hello@philkrones.com>2020-01-21 18:43:57 +0100
committerflip1995 <hello@philkrones.com>2020-02-12 09:34:25 +0100
commitd14ee8a4b1f41121d799c3f5b868d916ac0f24bd (patch)
tree8218fd5b43fdc70ca563c50bf1a9419eb5e0d39f
parent757bbf7feb2e9ed1e4d8cc547390608654e8191e (diff)
downloadrust-d14ee8a4b1f41121d799c3f5b868d916ac0f24bd.tar.gz
rust-d14ee8a4b1f41121d799c3f5b868d916ac0f24bd.zip
Add Clippy Test (bors) to GHA
-rw-r--r--.github/workflows/clippy_bors.yml146
1 files changed, 146 insertions, 0 deletions
diff --git a/.github/workflows/clippy_bors.yml b/.github/workflows/clippy_bors.yml
new file mode 100644
index 00000000000..6a6d58410f9
--- /dev/null
+++ b/.github/workflows/clippy_bors.yml
@@ -0,0 +1,146 @@
+name: Clippy Test (bors)
+
+on:
+  push:
+    branches: [auto, try]
+    # Don't run Clippy tests, when only textfiles were modified
+    paths-ignore:
+    - 'COPYRIGHT'
+    - 'LICENSE-*'
+    - '**.md'
+    - '**.txt'
+
+env:
+  RUST_BACKTRACE: 1
+  CARGO_TARGET_DIR: '${{ github.workspace }}/target'
+  GHA_CI: 1
+
+jobs:
+  base:
+    strategy:
+      matrix:
+        os: [ubuntu-latest, windows-latest, macos-latest]
+        host: [x86_64-unknown-linux-gnu, i686-unknown-linux-gnu, x86_64-apple-darwin, x86_64-pc-windows-msvc]
+        exclude:
+        - os: ubuntu-latest
+          host: x86_64-apple-darwin
+        - os: ubuntu-latest
+          host: x86_64-pc-windows-msvc
+        - os: macos-latest
+          host: x86_64-unknown-linux-gnu
+        - os: macos-latest
+          host: i686-unknown-linux-gnu
+        - os: macos-latest
+          host: x86_64-pc-windows-msvc
+        - os: windows-latest
+          host: x86_64-unknown-linux-gnu
+        - os: windows-latest
+          host: i686-unknown-linux-gnu
+        - os: windows-latest
+          host: x86_64-apple-darwin
+
+    runs-on: ${{ matrix.os }}
+
+    steps:
+    - name: Install dependencies (Linux-i686)
+      run: |
+        sudo dpkg --add-architecture i386
+        sudo apt-get update
+        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.3
+      with:
+        toolchain: nightly
+        target: ${{ matrix.host }}
+        profile: minimal
+    - name: Cache cargo dir
+      uses: actions/cache@v1
+      with:
+        path: ~/.cargo
+        key: ${{ runner.os }}-${{ matrix.host }}
+    - name: Checkout
+      uses: actions/checkout@v2.0.0
+    - name: Master Toolchain Setup
+      run: bash setup-toolchain.sh
+      env:
+        HOST_TOOLCHAIN: ${{ matrix.host }}
+      shell: bash
+
+    - name: Set LD_LIBRARY_PATH (Linux)
+      if: runner.os == 'Linux'
+      run: |
+        SYSROOT=$(rustc --print sysroot)
+        echo "::set-env name=LD_LIBRARY_PATH::${SYSROOT}/lib${LD_LIBRARY_PATH+:${LD_LIBRARY_PATH}}"
+    - name: Link rustc dylib (MacOS)
+      if: runner.os == 'macOS'
+      run: |
+        SYSROOT=$(rustc --print sysroot)
+        sudo mkdir -p /usr/local/lib
+        sudo find "${SYSROOT}/lib" -maxdepth 1 -name '*dylib' -exec ln -s {} /usr/local/lib \;
+    - name: Set PATH (Windows)
+      if: runner.os == 'Windows'
+      run: |
+        $sysroot = rustc --print sysroot
+        $env:PATH += ';' + $sysroot + '\bin'
+        echo "::set-env name=PATH::$env:PATH"
+    - name: Build
+      run: cargo build --features deny-warnings
+      shell: bash
+    - name: Test
+      run: cargo test --features deny-warnings
+      shell: bash
+    - name: Test clippy_lints
+      run: cargo test --features deny-warnings
+      shell: bash
+      working-directory: clippy_lints
+    - name: Test rustc_tools_util
+      run: cargo test --features deny-warnings
+      shell: bash
+      working-directory: rustc_tools_util
+    - name: Test clippy_dev
+      run: cargo test --features deny-warnings
+      shell: bash
+      working-directory: clippy_dev
+    - name: Test cargo-clippy
+      run: ../target/debug/cargo-clippy
+      shell: bash
+      working-directory: clippy_workspace_tests
+    - name: Test clippy-driver
+      run: |
+        (
+          set -ex
+          # Check sysroot handling
+          sysroot=$(./target/debug/clippy-driver --print sysroot)
+          test "$sysroot" = "$(rustc --print sysroot)"
+
+          if [[ ${{ runner.os }} == "Windows" ]]; then
+            desired_sysroot=C:/tmp
+          else
+            desired_sysroot=/tmp
+          fi
+          sysroot=$(./target/debug/clippy-driver --sysroot $desired_sysroot --print sysroot)
+          test "$sysroot" = $desired_sysroot
+
+          sysroot=$(SYSROOT=$desired_sysroot ./target/debug/clippy-driver --print sysroot)
+          test "$sysroot" = $desired_sysroot
+
+          # Make sure this isn't set - clippy-driver should cope without it
+          unset CARGO_MANIFEST_DIR
+
+          # Run a lint and make sure it produces the expected output. It's also expected to exit with code 1
+          # FIXME: How to match the clippy invocation in compile-test.rs?
+          ./target/debug/clippy-driver -Dwarnings -Aunused -Zui-testing --emit metadata --crate-type bin tests/ui/cstring.rs 2> cstring.stderr && exit 1
+          sed -e 's,tests/ui,$DIR,' -e '/= help/d' cstring.stderr > normalized.stderr
+          diff normalized.stderr tests/ui/cstring.stderr
+
+          # TODO: CLIPPY_CONF_DIR / CARGO_MANIFEST_DIR
+        )
+      shell: bash
+
+    - name: Run cargo-cache --autoclean
+      run: |
+        cargo install cargo-cache --debug
+        /usr/bin/find ~/.cargo/bin ! -type d -exec strip {} \;
+        cargo cache --autoclean
+      shell: bash