Test against Pyodide / Emscripten in CI #3529
Workflow file for this run
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
name: Hypothesis CI | |
env: | |
# Tell pytest and other tools to produce coloured terminal output. | |
# Make sure this is also in the "passenv" section of the tox config. | |
PY_COLORS: 1 | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
workflow_dispatch: | |
# Cancel in-progress PR builds if another commit is pushed. | |
# On non-PR builds, fall back to the globally-unique run_id and don't cancel. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
# Cribbing from https://github.com/numpy/numpy/blob/9a650391651c8486d8cb8b27b0e75aed5d36033e/.github/workflows/emscripten.yml | |
test-pyodide: | |
runs-on: ubuntu-22.04 | |
env: | |
PYODIDE_VERSION: 0.23.1 | |
# PYTHON_VERSION and EMSCRIPTEN_VERSION are determined by PYODIDE_VERSION. | |
# The appropriate versions can be found in the Pyodide repodata.json | |
# "info" field, or in Makefile.envs: | |
# https://github.com/pyodide/pyodide/blob/main/Makefile.envs#L2 | |
PYTHON_VERSION: 3.11.2 | |
EMSCRIPTEN_VERSION: 3.1.32 | |
NODE_VERSION: 18 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: set up python | |
id: setup-python | |
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- uses: mymindstorm/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14 | |
with: | |
version: ${{ env.EMSCRIPTEN_VERSION }} | |
actions-cache-folder: emsdk-cache | |
- name: Install pyodide-build | |
# maybe we can take out the pydantic constraint? | |
run: pip install "pydantic<2" pyodide-build==$PYODIDE_VERSION | |
- name: Build | |
run: | | |
# Pyodide is still in the process of adding better/easier support for | |
# non-setup.py based builds. | |
## cp pyproject.toml.setuppy pyproject.toml | |
pwd | |
ls | |
cd hypothesis-python/ | |
CFLAGS=-g2 LDFLAGS=-g2 pyodide build | |
- name: set up node | |
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Set up Pyodide virtual environment and install dependencies | |
# might want coverage.txt, hypothesis-python/[all] | |
run: | | |
pyodide venv .venv-pyodide | |
source .venv-pyodide/bin/activate | |
python -c "import sys; print(sys.platform)" | |
pip install --upgrade setuptools pip wheel | |
python hypothesis-python/setup.py bdist_wheel | |
pip download --dest=dist/ hypothesis-python/ pytest # fetch all the wheels | |
pip install dist/*.whl | |
- name: Run tests | |
run: python -m pytest hypothesis-python/tests/cover | |
# run: python -m pytest --numprocesses auto hypothesis-python/tests/ --ignore=hypothesis-python/tests/quality/ --ignore=hypothesis-python/tests/ghostwriter/ --ignore=hypothesis-python/tests/patching/ |