summaryrefslogtreecommitdiffstats
path: root/.github/workflows/coverage.yml
blob: d66c02b51b15e556442fe50b63166c4626b17c8f (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
name: Coverage

on:
  push:
    branches:
    - master
    - 3.9
    - 3.8
    - 3.7
    paths-ignore:
    - 'Doc/**'
    - 'Misc/**'
  #pull_request:
  #  branches:
  #  - master
  #  - 3.9
  #  - 3.8
  #  - 3.7
  #  paths-ignore:
  #  - 'Doc/**'
  #  - 'Misc/**'

jobs:
  coverage_ubuntu:
    name: 'Ubuntu (Coverage)'
    runs-on: ubuntu-latest
    env:
      OPENSSL_VER: 1.1.1f
    steps:
    - uses: actions/checkout@v2
    - name: Install Dependencies
      run: sudo ./.github/workflows/posix-deps-apt.sh
    - name: 'Restore OpenSSL build'
      id: cache-openssl
      uses: actions/cache@v2.1.2
      with:
        path: ./multissl/openssl/${{ env.OPENSSL_VER }}
        key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
    - name: Install OpenSSL
      if: steps.cache-openssl.outputs.cache-hit != 'true'
      run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $PWD/multissl --openssl $OPENSSL_VER --system Linux
    - name: Configure CPython
      run: ./configure --with-openssl=$PWD/multissl/openssl/$OPENSSL_VER
    - name: Build CPython
      run: make -j4
    - name: Display build info
      run: make pythoninfo
    - name: 'Coverage Preparation'
      run: |
        ./python -m venv .venv
        source ./.venv/bin/activate
        python -m pip install -U coverage
        python -m pip install -r Misc/requirements-test.txt
        python -m test.pythoninfo
    - name: 'Tests with coverage'
      run: >
        source ./.venv/bin/activate &&
        xvfb-run python -m coverage
        run --branch --pylib
        -m test
        --fail-env-changed
        -uall,-cpu
        -x test_multiprocessing_fork
        -x test_multiprocessing_forkserver
        -x test_multiprocessing_spawn
        -x test_concurrent_futures
        || true
    - name: 'Publish code coverage results'
      run: |
        source ./.venv/bin/activate
        bash <(curl -s https://codecov.io/bash) -y .github/codecov.yml
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

  c_coverage_ubuntu:
    name: 'Ubuntu (C Coverage)'
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install Dependencies
      run: sudo ./.github/workflows/posix-deps-apt.sh
    - name: Configure CPython
      run: ./configure
    - name: 'Build CPython and measure coverage'
      run: xvfb-run make -j4 coverage-report
    - name: 'Publish code coverage results'
      if: always()
      run: |
        make pythoninfo
        bash <(curl -s https://codecov.io/bash) -y .github/codecov.yml
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}