-
Notifications
You must be signed in to change notification settings - Fork 2
144 lines (113 loc) · 3.62 KB
/
ci.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
137
138
139
140
141
142
143
144
name: Tests
on:
pull_request:
push:
branches:
- master
- develop
jobs:
unit-tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
# MacOS disabled for now
- windows-latest
python-version:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install python tests dependencies
run: pip install -e ".[dev]"
- name: Run tests
run: python -m pytest -v --cov-report xml:coverage.xml --cov src tests/unit
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-${{ matrix.python-version }}-unit-tests-coverage
path: ./coverage.xml
integration-tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
# MacOS disabled for now
- windows-latest
steps:
- uses: actions/checkout@v4
- name: Install native dependencies (Ubuntu)
run: sudo apt-get update && sudo apt-get install -y vlc mpv
if: matrix.os == 'ubuntu-latest'
- name: Install native dependencies (MacOS)
run: brew install vlc mpv
if: matrix.os == 'macos-latest'
- name: Install native dependencies (Windows)
run: |
choco install --no-progress vlc
choco install mpvio.install --no-progress
# update the PATH variable (because shims are not possible for vlc/mpv)
Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
refreshenv
$splitPath = $Env:PATH -split ";"
echo $splitPath | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
if: matrix.os == 'windows-latest'
- name: Print VLC version (Ubuntu, MacOS)
run: vlc --version
if: matrix.os != 'windows-latest'
- name: Print VLC version (Windows)
# it seems impossible to obtain VLC version through the command line interface on Windows
run: echo "Please check Chocolatey logs"
if: matrix.os == 'windows-latest'
- name: Print Mpv version
run: mpv --version
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
- name: Install python tests dependencies
run: pip install -e ".[dev]"
- name: Run tests
run: python -m pytest -v --cov-report xml:coverage.xml --cov src tests/integration
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-integration-tests-coverage
path: ./coverage.xml
static-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
- name: Install dependencies
run: pip install -e ".[dev]"
- name: Run import order checks
run: python -m isort . --check
- name: Run style checks
run: python -m black . --check
- name: Run ruff linter
run: python -m ruff check .
upload-codecov-reports:
needs:
- unit-tests
- integration-tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Upload to Codecov
uses: codecov/codecov-action@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}