Skip to content

For Emscripten and WASI build both libspytest.a and libspy.a #1679

For Emscripten and WASI build both libspytest.a and libspy.a

For Emscripten and WASI build both libspytest.a and libspy.a #1679

Workflow file for this run

name: Run Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
inputs:
ssh_enabled:
type: boolean
description: "Run the build with ssh debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)"
required: false
default: false
jobs:
test:
name: test-${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
SPY_WERROR: true
HYPOTHESIS_PROFILE: ci
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
with:
detached: true
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
- name: Checkout repository
uses: actions/checkout@v2
# - name: Install wasi-sdk
# run: |
# cd
# WASI_OS=linux
# WASI_ARCH=x86_64
# WASI_VERSION=24
# WASI_VERSION_FULL=${WASI_VERSION}.0
# WASI_FILENAME=wasi-sdk-${WASI_VERSION_FULL}-${WASI_ARCH}-${WASI_OS}
# wget -q https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/${WASI_FILENAME}.tar.gz
# tar xf ${WASI_FILENAME}.tar.gz
# $PWD/${WASI_FILENAME}/bin/clang --version
# echo "$PWD/${WASI_FILENAME}/bin" >> $GITHUB_PATH
- name: Display versions
run: |
echo PATH="$PATH"
echo
echo clang && clang --version && echo
echo gcc && gcc --version && echo
- name: Install system dependencies
run: |
if [ "$RUNNER_OS" = "Linux" ]; then
sudo apt-get update && sudo apt-get install -y libgc-dev
elif [ "$RUNNER_OS" = "macOS" ]; then
brew install bdw-gc
fi
- name: Set up uv
uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: true
- name: Install venv
run: |
uv sync --locked
- name: Linter
run: |
uv run ruff check .
- name: Format check
run: |
uv run ruff format --check .
- name: Build libspy
run: |
cd spy/libspy
uv run make
- name: Run tests
run: |
uv run pytest -n auto -m "not mypy" --junit-xml=test-results.xml
- name: Run mypy
run: |
uv run mypy
- name: Surface failing tests
if: always()
uses: pmeier/pytest-results-action@main
with:
path: test-results.xml
summary: true
display-options: fEX
fail-on-empty: true
title: Test results
pyodide-test:
name: pyodide-test-${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
SPY_WERROR: true
HYPOTHESIS_PROFILE: ci
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
with:
detached: true
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
- name: Checkout repository
uses: actions/checkout@v2
- name: Display versions
run: |
echo PATH="$PATH"
echo
echo clang && clang --version && echo
echo gcc && gcc --version && echo
- name: Install system dependencies
run: |
if [ "$RUNNER_OS" = "Linux" ]; then
sudo apt-get update && sudo apt-get install -y libgc-dev
elif [ "$RUNNER_OS" = "macOS" ]; then
brew install bdw-gc
fi
- name: Set up uv
uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: true
- name: Install venv
run: |
uv sync --locked
- name: Linter
run: |
uv run ruff check .
- name: Format check
run: |
uv run ruff format --check .
- name: Install EMCC
run: |
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install 6.0.4
./emsdk activate 6.0.4
source ./emsdk_env.sh
echo "$PWD/upstream/emscripten" >> $GITHUB_PATH
echo "EMSDK=$PWD" >> $GITHUB_ENV
- name: Install pyodide
run: |
npm --prefix pyodide install
- name: Create pyodide venv
# needed by test_cli::test_execute_pyodide, which otherwise is silently
# skipped. The `pyodide` command comes from pyodide-build, see
# pyodide/README.md
run: |
cd pyodide
uv run pyodide venv venv
./venv/bin/pip install -e ..
- name: Build libspy
run: |
cd spy/libspy
uv run make
- name: Run tests
run: |
uv run pytest -n auto -m pyodide --junit-xml=pyodide-test-results.xml
# - name: Run mypy
# run: |
# mypy
- name: Surface failing tests
if: always()
uses: pmeier/pytest-results-action@main
with:
path: pyodide-test-results.xml
summary: true
display-options: fEX
fail-on-empty: true
title: Test results