Skip to content

use os.add_dll_directory instead of ctypes.WinDLL #40

use os.add_dll_directory instead of ctypes.WinDLL

use os.add_dll_directory instead of ctypes.WinDLL #40

Workflow file for this run

# SPDX-FileCopyrightText: 2021 The meson-python developers
#
# SPDX-License-Identifier: MIT
name: tests
on:
push:
branches:
- main
- release-*
- test-sharedlib-windows
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 --showlocals -vv -k sharedlib
- 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 --showlocals -vv -k sharedlib
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 --showlocals -vv -k sharedlib
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}