Skip to content

Unit test and examples #1951

Unit test and examples

Unit test and examples #1951

name: Unit test and examples
on:
push:
pull_request:
# every day at 3 am UTC
schedule:
- cron: '0 3 * * *'
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
unit_test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, windows-latest, macos-14]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
exclude:
- os: macos-14
python-version: 3.7
- os: macos-14
python-version: 3.8
- os: macos-14
python-version: 3.9
- os: macos-13
python-version: 3.7
- os: macos-13
python-version: 3.8
- os: macos-13
python-version: 3.9
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: install-rtools
if: matrix.os == 'windows-latest'
run: |
choco install rtools --version=4.0.0.20220206 --no-progress --force
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH
- name: Install system dependencies in Linux
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt install -y gfortran ngspice python3-tk libboost-all-dev libopenblas-dev libfftw3-dev libsuitesparse-dev
- name: Install system dependencies in MacOS
if: >-
( contains(matrix.os, 'macos') )
run: |
brew reinstall gfortran openblas pkg-config
brew install ngspice boost suite-sparse
- name: Install system dependencies in Windows
if: matrix.os == 'windows-latest'
run: choco install ngspice
- name: Install Python dependecies
run: |
pip install --upgrade pip
pip install numpy --config-settings=setup-args="-Dallow-noblas=true"
pip install pytest meson-python ninja cython spin
python3 -m spin install-dependencies -test-dep
# - name: Install S4 (macOS - x86)
# if: matrix.os == 'macos-13'
# run: |
# pip install wheel setuptools
# git clone https://github.com/phoebe-p/S4
# cd S4
# make S4_pyext --file="Makefile.mac_intel"
# cd ..
# rm -rf S4
- name: Install S4 (macOS - arm)
if: matrix.os == 'macos-14'
run: |
pip install wheel setuptools
git clone https://github.com/phoebe-p/S4
cd S4
make S4_pyext --file="Makefile.m1"
cd ..
rm -rf S4
- name: Install S4 (ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
pip install wheel setuptools
git clone https://github.com/phoebe-p/S4
cd S4
make S4_pyext
cd ..
rm -rf S4
- name: Build solcore
run: |
python -m spin build -- -Dwith_pdd=true -Dinstall_test=true
- name: Unit and functional tests (MacOS and Linux)
if: matrix.os != 'windows-latest'
env:
SOLCORE_SPICE: ngspice
run: |
python -m spin test -- -r a -v --cov=solcore/ --ignore=solcore/tests/test_examples.py -n "auto"
- name: Unit and functional tests (Windows)
if: matrix.os == 'windows-latest'
run: |
cd D:\a\solcore5\solcore5\build-install\usr\Lib\site-packages
python -m pytest -r a -v --ignore=solcore/tests/test_examples.py -n "auto"
- name: Codecov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
python -m pip install codecov
python -m spin codecov
test_examples:
needs: unit_test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, windows-latest, macos-14]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
exclude:
- os: macos-14
python-version: 3.7
- os: macos-14
python-version: 3.8
- os: macos-14
python-version: 3.9
- os: macos-13
python-version: 3.7
- os: macos-13
python-version: 3.8
- os: macos-13
python-version: 3.9
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: install-rtools
if: matrix.os == 'windows-latest'
run: |
choco install rtools --version=4.0.0.20220206 --no-progress --force
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH
- name: Install system dependencies in Linux
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt install -y gfortran ngspice python3-tk libboost-all-dev libopenblas-dev libfftw3-dev libsuitesparse-dev
- name: Install system dependencies in MacOS
if: >-
( contains(matrix.os, 'macos') )
run: |
brew reinstall gfortran openblas pkg-config
brew install ngspice boost suite-sparse
- name: Install system dependencies in Windows
if: matrix.os == 'windows-latest'
run: choco install ngspice
- name: Install Python dependecies
run: |
pip install --upgrade pip
pip install numpy --config-settings=setup-args="-Dallow-noblas=true"
pip install pytest meson-python ninja cython spin
python3 -m spin install-dependencies -test-dep
# - name: Install S4 (macOS - x86)
# if: if: matrix.os == 'macos-13'
# run: |
# pip install wheel setuptools
# git clone https://github.com/phoebe-p/S4
# cd S4
# make S4_pyext --file="Makefile.mac_intel"
# cd ..
# rm -rf S4
- name: Install S4 (macOS - arm)
if: matrix.os == 'macos-14'
run: |
pip install wheel setuptools
git clone https://github.com/phoebe-p/S4
cd S4
make S4_pyext --file="Makefile.m1"
cd ..
rm -rf S4
- name: Install S4 (ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
pip install wheel setuptools
git clone https://github.com/phoebe-p/S4
cd S4
make S4_pyext
cd ..
rm -rf S4
- name: Build solcore
run: |
python -m spin build -- -Dwith_pdd=true -Dinstall_test=true
- name: Unit and functional tests (MacOS and Linux)
if: matrix.os != 'windows-latest'
env:
SOLCORE_SPICE: ngspice
run: |
python -m spin test -- -r a -v solcore/tests/test_examples.py -n "auto"