-
Notifications
You must be signed in to change notification settings - Fork 32
136 lines (115 loc) · 4.46 KB
/
tox-tests.yml
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
# This Software (Dioptra) is being made available as a public service by the
# National Institute of Standards and Technology (NIST), an Agency of the United
# States Department of Commerce. This software was developed in part by employees of
# NIST and in part by NIST contractors. Copyright in portions of this software that
# were developed by NIST contractors has been licensed or assigned to NIST. Pursuant
# to Title 17 United States Code Section 105, works of NIST employees are not
# subject to copyright protection in the United States. However, NIST may hold
# international copyright in software created by its employees and domestic
# copyright (or licensing rights) in portions of software that were assigned or
# licensed to NIST. To the extent that NIST holds copyright in this software, it is
# being made available under the Creative Commons Attribution 4.0 International
# license (CC BY 4.0). The disclaimers of the CC BY 4.0 license apply to all parts
# of the software developed or licensed by NIST.
#
# ACCESS THE FULL CC BY 4.0 LICENSE HERE:
# https://creativecommons.org/licenses/by/4.0/legalcode
name: Tox tests
on:
push:
branches:
- "**"
tags:
- "*.*.*"
jobs:
linting-and-style-checks:
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["3.11"]
tox-testenv:
- "black"
- "flake8"
- "gitlint"
- "isort"
- "mypy"
steps:
- uses: actions/checkout@v4
- name: setup python ${{ matrix.python-version }}
uses: actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
- name: upgrade pip
run: |
# install pip=>20.1 to use "pip cache dir"
python3 -m pip install --upgrade pip
- name: get pip cache dir
id: pip-cache
run: echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: cache dependencies
uses: actions/[email protected]
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml', '**/tox.ini') }}
restore-keys: |
${{ runner.os }}-pip-
- name: install dependencies
run: python3 -m pip install tox
- name: run tox
run: python3 -m tox run -e ${{ matrix.tox-testenv }}
unit-tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["ubuntu-22.04", "windows-latest"]
python-version: ["3.11"]
tox-testenv:
- "clean,py311-pytest-cov,report"
- "py311-cookiecutter"
steps:
- uses: actions/checkout@v4
- name: install English words dictionary
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: sudo apt install -y wamerican
- name: setup python ${{ matrix.python-version }}
uses: actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
- name: upgrade pip
run: |
# install pip=>20.1 to use "pip cache dir"
python3 -m pip install --upgrade pip
- name: get pip cache dir
if: ${{ matrix.os != 'windows-latest' }}
id: pip-cache
run: echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: get pip cache dir (Windows)
if: ${{ matrix.os == 'windows-latest' }}
id: pip-cache-win
run: echo "dir=$(pip cache dir)" >> $env:GITHUB_OUTPUT
- name: cache dependencies
if: ${{ matrix.os != 'windows-latest' }}
uses: actions/[email protected]
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml', '**/tox.ini') }}
restore-keys: |
${{ runner.os }}-pip-
- name: cache dependencies (Windows)
if: ${{ matrix.os == 'windows-latest' }}
uses: actions/[email protected]
with:
path: ${{ steps.pip-cache-win.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml', '**/tox.ini') }}
restore-keys: |
${{ runner.os }}-pip-
- name: install dependencies
run: python3 -m pip install --upgrade tox
- name: run tox
run: python3 -m tox run -e ${{ matrix.tox-testenv }}
- name: archive the code coverage results
if: ${{ contains(matrix.tox-testenv, 'pytest-cov') }}
uses: actions/upload-artifact@v4
with:
name: code-coverage-report-${{ matrix.os }}-${{ matrix.python-version }}
path: coverage