File: tests.yml

package info (click to toggle)
python-renault-api 0.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,696 kB
  • sloc: python: 7,804; makefile: 2
file content (146 lines) | stat: -rw-r--r-- 4,858 bytes parent folder | download
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: Tests

on:
  pull_request:
  push:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  tests:
    name: ${{ matrix.session }} ${{ matrix.python-version }} / ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - { python-version: "3.13", os: ubuntu-latest, session: "pre-commit" }
          - { python-version: "3.13", os: ubuntu-latest, session: "safety" }
          - { python-version: "3.13", os: ubuntu-latest, session: "mypy" }
          - { python-version: "3.12", os: ubuntu-latest, session: "mypy" }
          - { python-version: "3.11", os: ubuntu-latest, session: "mypy" }
          - { python-version: "3.10", os: ubuntu-latest, session: "mypy" }
          - { python-version: "3.13", os: ubuntu-latest, session: "tests" }
          - { python-version: "3.12", os: ubuntu-latest, session: "tests" }
          - { python-version: "3.11", os: ubuntu-latest, session: "tests" }
          - { python-version: "3.10", os: ubuntu-latest, session: "tests" }
          - { python-version: "3.13", os: windows-latest, session: "tests" }
          - { python-version: "3.13", os: macos-latest, session: "tests" }
          - { python-version: "3.13", os: ubuntu-latest, session: "typeguard" }
          - { python-version: "3.13", os: ubuntu-latest, session: "xdoctest" }
          - { python-version: "3.13", os: ubuntu-latest, session: "docs-build" }

    env:
      NOXSESSION: ${{ matrix.session }}

    steps:
      - name: Check out the repository
        uses: actions/checkout@v6.0.0

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6.1.0
        with:
          python-version: ${{ matrix.python-version }}

      - name: Upgrade pip
        run: |
          pip install --constraint=.github/workflows/constraints.txt pip
          pip --version

      - name: Install Poetry
        run: |
          pip install --constraint=.github/workflows/constraints.txt poetry
          poetry --version
          poetry self add poetry-plugin-export
          poetry self show plugins

      - name: Install Nox
        run: |
          pip install --constraint=.github/workflows/constraints.txt nox nox-poetry
          nox --version

      - name: Compute pre-commit cache key
        if: matrix.session == 'pre-commit'
        id: pre-commit-cache
        run: |
          echo "result=${{ runner.os }}-$(python --version | cut -d ' ' -f 2)" >> $GITHUB_OUTPUT

      - name: Restore pre-commit cache
        uses: actions/cache@v4
        if: matrix.session == 'pre-commit'
        with:
          path: ~/.cache/pre-commit
          key: ${{ steps.pre-commit-cache.outputs.result }}-${{ hashFiles('.pre-commit-config.yaml') }}
          restore-keys: |
            ${{ steps.pre-commit-cache.outputs.result }}-

      - name: Run Nox
        run: |
          nox --force-color --python=${{ matrix.python-version }}

      - name: Upload coverage data
        if: always() && matrix.session == 'tests'
        uses: actions/upload-artifact@v5.0.0
        with:
          name: coverage-data-${{ matrix.python-version }}-${{ matrix.os }}
          path: ".coverage.*"
          include-hidden-files: true

      - name: Upload documentation
        if: matrix.session == 'docs-build'
        uses: actions/upload-artifact@v5.0.0
        with:
          name: docs
          path: docs/_build

  coverage:
    runs-on: ubuntu-latest
    needs: tests
    steps:
      - name: Check out the repository
        uses: actions/checkout@v6.0.0

      - name: Set up Python
        uses: actions/setup-python@v6.1.0
        with:
          python-version: "3.13"

      - name: Upgrade pip
        run: |
          pip install --constraint=.github/workflows/constraints.txt pip
          pip --version

      - name: Install Poetry
        run: |
          pip install --constraint=.github/workflows/constraints.txt poetry
          poetry --version
          poetry self add poetry-plugin-export
          poetry self show plugins

      - name: Install Nox
        run: |
          pip install --constraint=.github/workflows/constraints.txt nox nox-poetry
          nox --version

      - name: Download coverage data
        uses: actions/download-artifact@v6.0.0
        with:
          pattern: coverage-data-*
          merge-multiple: true

      - name: Combine coverage data and display human readable report
        run: |
          nox --force-color --session=coverage

      - name: Create coverage report
        run: |
          nox --force-color --session=coverage -- xml

      - name: Upload coverage report
        uses: codecov/codecov-action@v5.5.1
        with:
          token: ${{ secrets.CODECOV_TOKEN }}