From b6b10719721faa8b1139c66bcab6ccf2336112ab Mon Sep 17 00:00:00 2001 From: martoon Date: Wed, 2 Dec 2020 21:14:30 +0300 Subject: [PATCH] Add CI --- .github/workflows/ci.yml | 115 +++++++++++++++++++++++++++++++++++++++ README.md | 2 + cabal.project.ci | 10 ++++ cabal.project.ci.license | 3 + 4 files changed, 130 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 cabal.project.ci create mode 100644 cabal.project.ci.license diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a74b9cf --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,115 @@ +# SPDX-FileCopyrightText: 2020 Kowainik +# SPDX-FileCopyrightText: 2020 Serokell +# +# SPDX-License-Identifier: MPL-2.0 + +# Sources: +# https://github.com/serokell/universum/blob/79d24f8f2fe592a3481b12db10e0db8abadca69e/.github/workflows/ci.yml + +name: CI + +# Trigger the workflow on push or pull request, but only for the master branch +on: + pull_request: + push: + branches: [master] + +jobs: + xrefcheck: + name: Verify cross references + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: serokell/xrefcheck-action@v1 + with: + xrefcheck-version: 0.1.2 + + cabal: + name: ${{ matrix.os }} / ghc ${{ matrix.ghc }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macOS-latest, windows-latest] + cabal: ["3.2"] + ghc: + - "8.4.4" + - "8.10.1" + exclude: + - os: macOS-latest + ghc: 8.10.1 + - os: macOS-latest + ghc: 8.4.4 + - os: windows-latest + ghc: 8.8.3 + - os: windows-latest + ghc: 8.4.4 + + steps: + - uses: actions/checkout@v2 + if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master' + + - uses: actions/setup-haskell@v1.1.4 + id: setup-haskell-cabal + name: Setup Haskell + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: ${{ matrix.cabal }} + + - uses: actions/cache@v1 + name: Cache cabal-store + with: + path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} + key: ${{ runner.os }}-${{ matrix.ghc }}-cabal + + - name: Build + run: | + cabal update + cabal build --project-file=cabal.project.ci --enable-tests --enable-benchmarks --write-ghc-environment-files=always + + - name: Test + run: | + cabal test --project-file=cabal.project.ci all + + - name: Haddock + # Run haddock for all components + run: | + cabal haddock --project-file=cabal.project.ci --haddock-all + + stack: + name: stack / ghc ${{ matrix.ghc }} + runs-on: ubuntu-latest + strategy: + matrix: + stack: ["2.3"] + ghc: ["8.8.3"] + + steps: + - uses: actions/checkout@v2 + if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master' + + - uses: actions/setup-haskell@v1.1.4 + name: Setup Haskell Stack + with: + ghc-version: ${{ matrix.ghc }} + stack-version: ${{ matrix.stack }} + + - uses: actions/cache@v1 + name: Cache ~/.stack + with: + path: ~/.stack + key: ${{ runner.os }}-${{ matrix.ghc }}-stack + + - name: Build + run: | + stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --ghc-options '-Werror' --haddock --no-haddock-deps + + - name: Test + run: | + stack test --system-ghc + + reuse: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: REUSE Compliance Check + uses: fsfe/reuse-action@v1 diff --git a/README.md b/README.md index ce98a17..97138c4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Tasty-hunit-compat +![Build status](https://github.com/serokell/tasty-hunit-compat/workflows/CI/badge.svg) + This library implements the integration between [tasty](https://hackage.haskell.org/package/tasty) and [HUnit](https://hackage.haskell.org/package/HUnit) packages. The way tasty provides this integration is reimplementing HUnit primitives, and this does not work with test suites written with the original HUnit library. diff --git a/cabal.project.ci b/cabal.project.ci new file mode 100644 index 0000000..45c4eda --- /dev/null +++ b/cabal.project.ci @@ -0,0 +1,10 @@ +-- Sadly we can't pass `--ghc-options=-Werror` to `cabal build` +-- because it applies it to dependencies as well. +-- See: https://github.com/haskell/cabal/issues/3883 +-- So we need this file. + +packages: + tasty-hunit-compat.cabal + +package universum + ghc-options: -Werror \ No newline at end of file diff --git a/cabal.project.ci.license b/cabal.project.ci.license new file mode 100644 index 0000000..ad30f10 --- /dev/null +++ b/cabal.project.ci.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2020 Serokell + +SPDX-License-Identifier: MPL-2.0