aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/coverage.yml
blob: 163f777c441ea3cb93485f507cb2be12cabc2883 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
name: Coverage

on: [push, pull_request]

jobs:
  test:
    name: Run coverage tests
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        part: [ 1, 2, 3 ]

    env:
      PERL5LIB: local-coverage/lib/perl5
      HARNESS_PERL_SWITCHES: "-MDevel::Cover=+ignore,local/lib/perl5,commonlib,perllib/Catalyst/[^A],perllib/Email,Test.pm,^t"

    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true

    - uses: niden/actions-memcached@v7

    - name: Setup cache (carton)
      uses: actions/cache@v2
      with:
        path: local
        key: ${{ runner.os }}-carton-${{ hashFiles('cpanfile.snapshot') }}

    - name: Setup cache (coverage)
      uses: actions/cache@v2
      with:
        path: local-coverage
        key: ${{ runner.os }}-coverage

    - name: Install packages
      run: |
        sudo apt install -y gettext language-pack-en language-pack-de language-pack-sv libimage-magick-perl
        vendor/bin/carton install --deployment
        commonlib/bin/gettext-makemo FixMyStreet
        bin/cpanm --quiet --notest -l local-coverage Devel::Cover::Report::Codecov JSON::MaybeXS

    - name: Run tests (with coverage, part 1)
      if: matrix.part == 1
      run: script/test --jobs 3 $(find t/app/controller -name "[a-q]*.t")

    - name: Run tests (with coverage, part 2)
      if: matrix.part == 2
      run: script/test --jobs 3 $(find t/app/controller -name "[r-z]*.t")

    - name: Run tests (with coverage, part 3)
      if: matrix.part == 3
      run: script/test --jobs 3 $(find t -name "*.t" ! -path "t/app/controller*")

    - name: Generate coverage report
      if: success()
      run: local-coverage/bin/cover --report codecov
      env:
        PERL5LIB: 'local-coverage/lib/perl5:perllib'
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}