|
1 |
| -name: Unit tests |
| 1 | +name: toolkit-unit-tests |
2 | 2 |
|
3 | 3 | on:
|
4 | 4 | push:
|
5 | 5 | branches:
|
6 | 6 | - main
|
| 7 | + paths-ignore: |
| 8 | + - '**.md' |
7 | 9 | pull_request:
|
8 |
| - branches: |
9 |
| - - main |
10 |
| - |
11 |
| -permissions: |
12 |
| - contents: read # Только чтение содержимого репозитория |
13 |
| - checks: write # Необходимо для отправки результатов тестов в GitHub Checks |
| 10 | + paths-ignore: |
| 11 | + - '**.md' |
14 | 12 |
|
15 | 13 | jobs:
|
16 |
| - test: |
17 |
| - runs-on: ubuntu-latest |
| 14 | + build: |
| 15 | + name: Build and Test |
| 16 | + strategy: |
| 17 | + matrix: |
| 18 | + runs-on: [ubuntu-latest, macos-latest, windows-latest] |
| 19 | + python-version: ['3.9', '3.10', '3.11'] # Матрица версий Python |
| 20 | + fail-fast: false |
| 21 | + runs-on: ${{ matrix.runs-on }} |
18 | 22 |
|
19 | 23 | steps:
|
20 |
| - - name: Checkout code |
| 24 | + - name: Checkout |
21 | 25 | uses: actions/checkout@v3
|
22 | 26 |
|
23 |
| - - name: Set up Python |
| 27 | + - name: Set up Python ${{ matrix.python-version }} |
24 | 28 | uses: actions/setup-python@v4
|
25 | 29 | with:
|
26 |
| - python-version: '3.9' |
| 30 | + python-version: ${{ matrix.python-version }} |
27 | 31 |
|
28 | 32 | - name: Install dependencies
|
29 | 33 | run: |
|
30 | 34 | python -m pip install --upgrade pip
|
31 | 35 | if [ -f "requirements.txt" ]; then
|
32 |
| - echo "Installing dependencies from requirements.txt..." |
33 |
| - pip install -r requirements.txt || { echo "Dependency installation failed!"; exit 1; } |
| 36 | + pip install -r requirements.txt |
34 | 37 | else
|
35 | 38 | echo "requirements.txt not found! Skipping dependency installation."
|
36 | 39 | fi
|
37 | 40 |
|
38 |
| - - name: Validate installed packages |
| 41 | + - name: Lint with flake8 |
39 | 42 | run: |
|
40 |
| - echo "Validating installed packages..." |
41 |
| - pip list |
42 |
| - if ! pip show flask; then |
43 |
| - echo "Flask is not installed!" |
44 |
| - exit 1 |
| 43 | + if [ -f "setup.cfg" ] || [ -f ".flake8" ]; then |
| 44 | + pip install flake8 |
| 45 | + flake8 . |
| 46 | + else |
| 47 | + echo "No lint configuration found! Skipping linting." |
45 | 48 | fi
|
46 | 49 |
|
47 | 50 | - name: Run unit tests
|
48 | 51 | run: |
|
49 |
| - pytest --junitxml=test-results.xml || true |
50 |
| - id: run-tests |
51 |
| - |
52 |
| - - name: Check test results |
53 |
| - if: steps.run-tests.outcome == 'failure' |
54 |
| - run: | |
55 |
| - echo "Tests failed! Review the logs for details." |
56 |
| - exit 1 # Завершить пайплайн с ошибкой, если тесты не прошли |
| 52 | + pip install pytest |
| 53 | + pytest --junitxml=test-results.xml |
| 54 | + env: |
| 55 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Для доступа к секретам, если нужны |
57 | 56 |
|
58 | 57 | - name: Upload test results
|
59 | 58 | if: always() # Выполнить этот шаг всегда, независимо от успеха предыдущих шагов
|
|
0 commit comments