Skip to content

Tests

Tests #2065

name: Tests
on:
push:
branches: main
pull_request:
branches: main
workflow_dispatch:
schedule:
- cron: '0 14 * * *' # 2pm UTC == 9am EST
jobs:
generate_python_matrix:
runs-on: ubuntu-latest
outputs:
python_versions: ${{ steps.set-matrix.outputs.python_versions }}
min_python_version: ${{ steps.set-matrix.outputs.min_python_version }}
steps:
- name: Checkout STUMPY
uses: actions/checkout@v4
with:
repository: stumpy-dev/stumpy
- name: Upgrade Pip, Install Minimum Requirements
run: |
python -m pip install --upgrade pip pandas lxml packaging
shell: bash
- name: Generate Python versions
id: set-matrix
run: |
MIN_PYTHON=$(python ./versions.py -mode min | grep python | awk '{print $2}')
MAX_PYTHON=$(python ./versions.py -mode max | grep python | awk '{print $2}')
echo "python_versions=$(python ./versions.py -mode range $MIN_PYTHON $MAX_PYTHON)" >> $GITHUB_OUTPUT
echo "min_python_version=\"$MIN_PYTHON\"" >> $GITHUB_OUTPUT
shell: bash
minimum-version-testing:
needs: generate_python_matrix
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v5
with:
python-version: ${{ fromJSON(needs.generate_python_matrix.outputs.min_python_version) }}
- name: Display Python Version
run: python -c "import sys; print(sys.version)"
shell: bash
- name: Upgrade Pip
run: python -m pip install --upgrade pip
shell: bash
- name: Generate Minimum Requirements File
run: sed 's/>/=/g' requirements.txt | sed 's/$/\.*/g' > requirements.min.txt
shell: bash
- name: Install Minimum Requirements
run: python -m pip install --upgrade -r requirements.min.txt
shell: bash
- name: Install STUMPY And Other Dependencies
run: python -m pip install --editable .[ci]
shell: bash
- name: Run Black
run: black --check --diff ./
shell: bash
- name: Run Flake8
run: flake8 ./
shell: bash
- name: Install and Link OpenMP
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Installing OpenMP"
brew install libomp
echo "Linking OpenMP"
brew link --force libomp
echo "Find OpenMP Linking Location"
libfile=`brew list libomp --verbose | grep libomp.dylib`
echo $libfile
echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in $libfile"
ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libomp.dylib $libfile
fi
shell: bash
- name: Show Full Numba Environment
run: python -m numba -s
shell: bash
- name: Run Unit Tests
run: ./test.sh unit
shell: bash
unit-testing:
needs: generate_python_matrix
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ${{ fromJSON(needs.generate_python_matrix.outputs.python_versions) }}
steps:
- uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Display Python Version
run: python -c "import sys; print(sys.version)"
shell: bash
- name: Upgrade Pip
run: python -m pip install --upgrade pip
shell: bash
- name: Install STUMPY And Other Dependencies
run: python -m pip install --editable .[ci]
shell: bash
- name: Run Black
run: black --check --diff ./
shell: bash
- name: Run Flake8
run: flake8 ./
shell: bash
- name: Install OpenMP
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Installing OpenMP"
brew install libomp
echo "Linking OpenMP"
brew link --force libomp
echo "Find OpenMP Linking Location"
libfile=`brew list libomp --verbose | grep libomp.dylib`
echo $libfile
echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in $libfile"
ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libomp.dylib $libfile
fi
shell: bash
- name: Show Full Numba Environment
run: python -m numba -s
shell: bash
- name: Run Unit Tests
run: ./test.sh unit
shell: bash
coverage-testing:
needs: generate_python_matrix
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ${{ fromJSON(needs.generate_python_matrix.outputs.python_versions) }}
steps:
- uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Display Python Version
run: python -c "import sys; print(sys.version)"
shell: bash
- name: Upgrade Pip
run: python -m pip install --upgrade pip
shell: bash
- name: Install STUMPY And Other Dependencies
run: python -m pip install --editable .[ci]
shell: bash
- name: Run Black
run: black --check --diff ./
shell: bash
- name: Run Flake8
run: flake8 ./
shell: bash
- name: Link OpenMP
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Installing OpenMP"
brew install libomp
echo "Linking OpenMP"
brew link --force libomp
echo "Find OpenMP Linking Location"
libfile=`brew list libomp --verbose | grep libomp.dylib`
echo $libfile
echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in $libfile"
ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libomp.dylib $libfile
fi
shell: bash
- name: Show Full Numba Environment
run: python -m numba -s
shell: bash
- name: Run Coverage Tests
run: ./test.sh coverage
shell: bash