Skip to content

Blas\Lapack (#52)

Blas\Lapack (#52) #189

Workflow file for this run

name: Test Matrix
on:
push:
branches:
- main
- release/*
env:
PRIK_GFORTRAN_BINARY: gfortran-13
PRIK_GFORTRAN_PACKAGE: gfortran-13
jobs:
test:
name: Unit tests · Ubuntu 24.04 · Python ${{ matrix.python-version }}
runs-on: ubuntu-24.04
permissions:
contents: read
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install test dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[qa]"
- name: Install pinned GFortran
shell: bash
run: |
if ! command -v "$PRIK_GFORTRAN_BINARY" >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install --yes "$PRIK_GFORTRAN_PACKAGE"
fi
compiler_dir="$RUNNER_TEMP/prik-gfortran"
mkdir -p "$compiler_dir"
ln -sf "$(command -v "$PRIK_GFORTRAN_BINARY")" "$compiler_dir/gfortran"
echo "$compiler_dir" >> "$GITHUB_PATH"
"$compiler_dir/gfortran" --version
- name: Run tests
shell: bash
env:
PYTHONPATH: .
HYPOTHESIS_PROFILE: ci
run: |
python -m pytest -q --randomly-seed=1 \
-o junit_family=legacy \
--junitxml="$RUNNER_TEMP/pytest-smoke-results.xml" \
tests/fortran \
-m toolchain_smoke \
--require-toolchain-smoke \
--prik-fortran-compiler=gfortran
python -m pytest -q --randomly-seed=1 \
-o junit_family=legacy \
--junitxml="$RUNNER_TEMP/pytest-suite-results.xml" \
-m "not real_library and not toolchain_smoke" \
tests/architecture \
tests/c \
tests/fortran \
tests/shared
- name: Summarize failed pytest nodes
if: failure()
shell: bash
run: |
shopt -s nullglob
reports=("$RUNNER_TEMP"/pytest-*-results.xml)
for report in "${reports[@]}"; do
python tools/print_pytest_failures.py "$report"
done
macos:
name: Unit tests · macOS 15 ARM64 · Python 3.12
runs-on: macos-15
timeout-minutes: 120
permissions:
contents: read
env:
PRIK_GFORTRAN_BINARY: gfortran-13
PRIK_GCC_BINARY: gcc-13
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install test dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[qa]"
- name: Configure GNU Fortran and GCC 13
shell: bash
run: |
if ! command -v "$PRIK_GFORTRAN_BINARY" >/dev/null 2>&1 || \
! command -v "$PRIK_GCC_BINARY" >/dev/null 2>&1; then
brew install gcc@13
fi
compiler_dir="$RUNNER_TEMP/prik-gfortran"
mkdir -p "$compiler_dir"
ln -sf "$(command -v "$PRIK_GFORTRAN_BINARY")" "$compiler_dir/gfortran"
ln -sf "$(command -v "$PRIK_GCC_BINARY")" "$compiler_dir/gcc"
echo "$compiler_dir" >> "$GITHUB_PATH"
- name: Show macOS test environment
shell: bash
run: |
echo "runner image: ${ImageOS:-unknown} ${ImageVersion:-unknown}"
sw_vers
uname -m
python --version
command -v gfortran
gfortran --version
command -v gcc
gcc --version
- name: Show repository-owned lane plan
run: |
python tools/run_fortran_toolchain_lane.py \
--compiler gfortran \
--junit-dir "$RUNNER_TEMP" \
--plan
- name: Run compiler checks and strict smoke
env:
PYTHONPATH: .
HYPOTHESIS_PROFILE: ci
run: |
python tools/run_fortran_toolchain_lane.py \
--compiler gfortran \
--junit-dir "$RUNNER_TEMP"
- name: Run full suite without BLAS or LAPACK
env:
PYTHONPATH: .
HYPOTHESIS_PROFILE: ci
run: |
python -m pytest -q --randomly-seed=1 \
-o junit_family=legacy \
--junitxml="$RUNNER_TEMP/pytest-macos-suite-results.xml" \
-m "not real_library and not toolchain_smoke" \
tests/architecture \
tests/c \
tests/fortran \
tests/shared
- name: Summarize failed pytest nodes
if: failure()
shell: bash
run: |
shopt -s nullglob
reports=("$RUNNER_TEMP"/pytest-*-results.xml)
for report in "${reports[@]}"; do
python tools/print_pytest_failures.py "$report"
done