Add a second shared library in another directory #54
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: 2021 The meson-python developers | |
# | |
# SPDX-License-Identifier: MIT | |
name: tests | |
on: | |
push: | |
branches: | |
- main | |
- release-* | |
- windows-sharedlibs | |
pull_request: | |
branches: | |
- main | |
- release-* | |
paths: | |
# This is spelt like this to do not ignore the docs/examples/ folder. | |
- '**' | |
- '!docs/**' | |
- 'docs/examples/**' | |
- '!CHANGELOG.rst' | |
- '!LICENSE' | |
- '!LICENSES/**' | |
- '!README.rst' | |
- '!.github/workflows/docs.yml' | |
workflow_dispatch: | |
# Allow to run manually | |
env: | |
FORCE_COLOR: 1 | |
PIP_DISABLE_PIP_VERSION_CHECK: 1 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
# actions/setup-python do not support Python 3.7 on macOS on | |
# arm64. The latest macOS version available is macOS 14 but | |
# it is arm64 only. Stick to macos-13 as long as we want to | |
# test Python 3.7 on macOS. macOS 14 on arm64 is covered by | |
# the Cirrus CI jobs. | |
- windows-latest | |
python: | |
- '3.8' | |
- '3.13' | |
meson: | |
- | |
pyproject_metadata: | |
- | |
include: | |
- os: windows-latest | |
python: '3.12' | |
meson: '@git+https://github.com/mesonbuild/meson.git' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up target Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install Ninja | |
run: sudo apt-get install ninja-build | |
if: ${{ runner.os == 'Linux' }} | |
- name: Install Ninja | |
run: brew install ninja | |
if: ${{ runner.os == 'macOS' }} | |
- name: Install Ninja | |
run: python -m pip install ninja | |
if: ${{ runner.os == 'Windows' }} | |
- name: Install Meson | |
run: python -m pip install "meson ${{ matrix.meson }}" | |
if: ${{ matrix.meson }} | |
- name: Install pyproject-metadata | |
run: python -m pip install "pyproject-metadata ${{ matrix.pyproject_metadata }}" | |
if: ${{ matrix.pyproject_metadata }} | |
- name: Install | |
run: python -m pip install .[test] | |
- name: Run tests | |
run: python -m pytest tests/test_wheel.py --showlocals -vv --cov --cov-report=xml -k in | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v4 | |
if: ${{ always() }} | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
msvc: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- '3.11' | |
meson: | |
- | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up target Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install Ninja | |
run: python -m pip install ninja | |
- name: Setup MSVC | |
uses: bus1/cabuild/action/msdevshell@e22aba57d6e74891d059d66501b6b5aed8123c4d # v1 | |
with: | |
architecture: x64 | |
- name: Install Meson | |
run: python -m pip install "meson==${{ matrix.meson }}" | |
if: ${{ matrix.meson }} | |
- name: Install | |
run: python -m pip install .[test] | |
- name: Run tests | |
run: python -m pytest tests/test_wheel.py --showlocals -vv -k in | |
cygwin: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- '3.9' | |
meson: | |
- | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Cygwin | |
uses: cygwin/cygwin-install-action@v2 | |
with: | |
packages: >- | |
python39 | |
python39-devel | |
python39-pip | |
python39-setuptools | |
cmake | |
gcc-core | |
gcc-g++ | |
git | |
make | |
ninja | |
- name: Fix git dubious ownership | |
# This addresses the "fatal: detected dubious ownership in | |
# repository" and "fatal: not in a git directory" errors | |
# encountered when trying to run Cygwin git in a directory not | |
# owned by the current user. This happens when the tests run | |
# Cygwin git in a directory outside the Cygwin filesystem. | |
run: git config --global --add safe.directory '*' | |
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0} | |
- name: Get pip cache path | |
id: pip-cache-path | |
run: echo "path=$(cygpath -w $(python -m pip cache dir))" >> $GITHUB_OUTPUT | |
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0} | |
- name: Restore cache | |
# Cygwin Python cannot use binary wheels from PyPI. Building | |
# some dependencies takes considerable time. Caching the built | |
# wheels speeds up the CI job quite a bit. | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.pip-cache-path.outputs.path }} | |
key: cygwin-pip-${{ github.sha }} | |
restore-keys: cygwin-pip- | |
- name: Install Meson | |
run: python -m pip install "meson ${{ matrix.meson }}" | |
if: ${{ matrix.meson }} | |
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0} | |
- name: Install | |
# Cygwin patches Python's ensurepip module to look for the | |
# wheels needed to initialize a new virtual environment in | |
# /usr/share/python-wheels/ but nothing in Cygwin actually | |
# puts the setuptools and pip wheels there. Fix this. | |
run: | | |
mkdir /usr/share/python-wheels/ | |
pushd /usr/share/python-wheels/ | |
python -m pip download setuptools pip | |
popd | |
python -m pip install .[test] | |
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0} | |
- name: Run tests | |
run: python -m pytest tests/test_wheel.py --showlocals -vv -k in | |
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0} | |