This repository was archived by the owner on Feb 11, 2026. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 31
153 lines (129 loc) · 4.17 KB
/
tests.yml
File metadata and controls
153 lines (129 loc) · 4.17 KB
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
147
148
149
150
151
152
153
name: Tests
#on:
# push:
# branches: [ main, develop ]
# pull_request:
# branches: [ main, develop ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip packages
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install runtime + test tools
run: |
python -m pip install --upgrade pip
# Устанавливаем package (runtime deps)
pip install -e "."
# Явно ставим инструменты для тестов/линта, чтобы они были доступны в runner
pip install pytest pytest-asyncio pytest-cov pytest-timeout flake8 mypy
- name: Lint with flake8
run: |
flake8 src/pymax tests \
--count \
--select=E9,F63,F7,F82 \
--show-source \
--statistics
flake8 src/pymax tests \
--count \
--exit-zero \
--max-complexity=10 \
--max-line-length=79 \
--statistics
continue-on-error: true
- name: Type check with mypy
run: |
mypy src/pymax \
--ignore-missing-imports \
--no-error-summary
continue-on-error: true
- name: Run unit tests
run: |
pytest -m "not mockserver" \
--cov=src/pymax \
--cov-report=xml \
--cov-report=term-missing
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
- name: Archive pytest cache
if: always()
uses: actions/upload-artifact@v4
with:
name: pytest-cache-${{ matrix.python-version }}
path: .pytest_cache/
retention-days: 5
integration-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout repository (with submodules)
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install runtime + test tools (integration)
run: |
python -m pip install --upgrade pip
pip install -e "."
pip install pytest pytest-asyncio pytest-cov pytest-timeout flake8 mypy
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Start MockServer
run: |
git clone https://github.com/fresh-milkshake/gomax-prerelease.git
cd gomax-prerelease/mockserver
go mod download
go run cmd/server/main.go &
sleep 3
- name: Run integration tests
run: |
pytest -m mockserver -v --tb=short
continue-on-error: true
env:
MOCKSERVER_WS_URL: ws://localhost:8080/
MOCKSERVER_HTTP_URL: http://localhost:8080
code-quality:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install dependencies + quality tools
run: |
python -m pip install --upgrade pip
pip install -e "."
# black/isort/pylint используются только в этом job
pip install black isort pylint
- name: Check code formatting with black
run: black --check src/pymax tests
continue-on-error: true
- name: Check import sorting with isort
run: isort --check-only src/pymax tests
continue-on-error: true