Skip to content

Commit ac4cb5f

Browse files
committed
re-tool python tests to run against wheels
1 parent 0626fb2 commit ac4cb5f

File tree

1 file changed

+77
-40
lines changed

1 file changed

+77
-40
lines changed

.github/workflows/python-package.yml

Lines changed: 77 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ name: OpenTimelineIO
55

66
# for configuring which build will be a C++ coverage build / coverage report
77
env:
8-
GH_COV_PY: "3.10"
8+
GH_COV_PY: "3.13"
99
GH_COV_OS: ubuntu-latest
1010
GH_DEPENDABOT: dependabot
1111

@@ -88,24 +88,15 @@ jobs:
8888
cd ${{ env.OTIO_CONSUMER_TEST_BUILD_DIR }}
8989
cmake ${{ github.workspace }}/tests/consumer -DCMAKE_PREFIX_PATH=${{ env.OTIO_INSTALL_DIR }}
9090
91-
py_build_test:
92-
runs-on: ${{ matrix.os }}
91+
py_smoketest_build:
92+
runs-on: ${{ env.GH_COV_OS }}
9393
strategy:
9494
matrix:
95-
os: [ubuntu-latest, windows-latest, macos-14, macos-latest]
9695
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
97-
include:
98-
- { os: ubuntu-latest, shell: bash }
99-
- { os: macos-latest, shell: bash }
100-
- { os: macos-14, shell: bash }
101-
- { os: windows-latest, shell: pwsh }
102-
- { os: windows-latest, shell: msys2, python-version: "mingw64" }
103-
exclude:
104-
- { os: macos-latest, python-version: 3.9 }
10596

10697
defaults:
10798
run:
108-
shell: "${{ matrix.shell }} {0}"
99+
shell: "bash {0}"
109100

110101
env:
111102
OTIO_CXX_COVERAGE_BUILD: ON
@@ -115,59 +106,41 @@ jobs:
115106
- uses: actions/checkout@v4
116107
with:
117108
submodules: "recursive"
118-
- name: Set up MSYS2
119-
if: matrix.python-version == 'mingw64'
120-
uses: msys2/setup-msys2@v2
121-
with:
122-
msystem: mingw64
123-
install: >-
124-
mingw-w64-x86_64-python
125-
mingw-w64-x86_64-python-pip
126-
mingw-w64-x86_64-gcc
127-
mingw-w64-x86_64-cmake
128-
make
129-
git
130109
- name: Set up Python ${{ matrix.python-version }}
131-
if: matrix.python-version != 'mingw64'
132110
uses: actions/[email protected]
133111
with:
134112
python-version: ${{ matrix.python-version }}
135113
- name: Install coverage dependency
136-
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
114+
if: matrix.python-version == env.GH_COV_PY && github.actor != env.GH_DEPENDABOT
137115
run: |
138116
echo 'OTIO_CXX_DEBUG_BUILD=1' >> $GITHUB_ENV
139117
sudo apt-get install lcov
140118
- name: Install python build dependencies
141119
run: |
142120
python -m pip install --upgrade pip setuptools wheel "flake8>=3.5" check-manifest
143-
# \todo Temporarily disable check-manifest on MinGW, it is failing
144-
# intermittently with this error:
145-
# ModuleNotFoundError: No module named 'pip._vendor.distlib'
146121
- name: Run check-manifest and lint check
147-
if: matrix.python-version != 'mingw64'
148122
run: make ci-prebuild
149123
- name: Build and Install
150124
run: |
151-
pip install .[dev] -v --break-system-packages
125+
python -m pip install tests/requirements.txt -v --break-system-packages
152126
- name: Run tests w/ python coverage
153127
run: make ci-postbuild
154128
# (only on GH_COV_OS and GH_COV_PY)
155129
- name: Generate C++ coverage report
156-
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
130+
if: matrix.python-version == env.GH_COV_PY && github.actor != env.GH_DEPENDABOT
157131
run: make lcov
158132
- name: Upload coverage to Codecov
159-
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
160-
uses: codecov/codecov-action@v4
133+
if: matrix.python-version == env.GH_COV_PY && github.actor != env.GH_DEPENDABOT
134+
uses: codecov/codecov-action@v5
161135
with:
162136
flags: py-unittests
163137
name: py-opentimelineio-codecov
164138
fail_ci_if_error: false
165-
env:
166-
# based on: https://github.com/codecov/codecov-action?tab=readme-ov-file#usage
167-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
139+
token: ${{ secrets.CODECOV_TOKEN }}
140+
verbose: true
168141

169142
package_wheels:
170-
needs: py_build_test
143+
needs: py_smoketest_build
171144
runs-on: ${{ matrix.os }}
172145
strategy:
173146
matrix:
@@ -200,8 +173,72 @@ jobs:
200173
name: wheel-${{ matrix.os }}-${{ matrix.python-build }}
201174
path: ./wheelhouse/*.whl
202175

176+
test_wheels:
177+
needs: package_wheels
178+
runs-on: ${{ matrix.os }}
179+
strategy:
180+
matrix:
181+
os: [ubuntu-latest, windows-latest, macos-14, macos-latest]
182+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
183+
include:
184+
- { os: ubuntu-latest, shell: bash }
185+
- { os: macos-latest, shell: bash }
186+
- { os: macos-14, shell: bash }
187+
- { os: windows-latest, shell: pwsh }
188+
- { os: windows-latest, shell: msys2, python-version: "mingw64" }
189+
exclude:
190+
- { os: macos-latest, python-version: 3.9 }
191+
192+
defaults:
193+
run:
194+
shell: "${{ matrix.shell }} {0}"
195+
196+
env:
197+
OTIO_CXX_COVERAGE_BUILD: ON
198+
OTIO_CXX_BUILD_TMP_DIR: ${{ github.workspace }}/build
199+
200+
steps:
201+
- uses: actions/checkout@v4
202+
with:
203+
submodules: "recursive"
204+
- name: Set up MSYS2
205+
if: matrix.python-version == 'mingw64'
206+
uses: msys2/setup-msys2@v2
207+
with:
208+
msystem: mingw64
209+
install: >-
210+
mingw-w64-x86_64-python
211+
mingw-w64-x86_64-python-pip
212+
mingw-w64-x86_64-gcc
213+
mingw-w64-x86_64-cmake
214+
make
215+
git
216+
- name: Set up Python ${{ matrix.python-version }}
217+
if: matrix.python-version != 'mingw64'
218+
uses: actions/[email protected]
219+
with:
220+
python-version: ${{ matrix.python-version }}
221+
- name: Install python build dependencies
222+
run: |
223+
python -m pip install --upgrade pip setuptools wheel "flake8>=3.5" check-manifest && python -m pip install -r tests/requirements.txt
224+
# \todo Temporarily disable check-manifest on MinGW, it is failing
225+
# intermittently with this error:
226+
# ModuleNotFoundError: No module named 'pip._vendor.distlib'
227+
- name: Run check-manifest and lint check
228+
if: matrix.python-version != 'mingw64'
229+
run: make ci-prebuild
230+
- uses: actions/download-artifact@v5
231+
with:
232+
pattern: 'wheel-.*'
233+
path: 'wheelhouse'
234+
merge-multiple: true
235+
- name: Install wheel for environment
236+
run: pip install --no-index --find-links wheelhouse opentimelineio
237+
- name: Run tests w/ python coverage
238+
run: make ci-postbuild
239+
203240
package_sdist:
204-
needs: py_build_test
241+
needs: py_smoketest_build
205242
runs-on: ubuntu-latest
206243
steps:
207244
- uses: actions/checkout@v4

0 commit comments

Comments
 (0)