Skip to content

Remove blank (comment) line #4

Remove blank (comment) line

Remove blank (comment) line #4

name: Run tests from source on one platform
on: # Logic based on https://stackoverflow.com/a/73953210
workflow_call:
inputs:
if:
description: 'Run this job'
required: false
default: true
type: boolean
os:
description: 'Target platform'
required: false
default: ubuntu-latest
type: string
python-versions:
description: 'Python versions'
required: false
default: ['3.10', '3.11', '3.12']
tox-skip-env:
description: 'Regex for skipped tests'
required: false
default: ''
type: string
coverage:
description: 'Publish coverage'
required: false
default: false
type: boolean
jobs:
test:
if: ${{ inputs.if }}
runs-on: ${{ inputs.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Ensure tags are fetched for versioning
fetch-tags: true
- uses: actions/setup-python@v5
with:
python-version: ${{ inputs.python-versions }}
- name: Install llvm on MacOS
if: startsWith(${{ inputs.os }}, 'macos')
shell: bash -l {0}
env:
# Homebrew location is different on Intel Mac
LLVM_DIR: ${{ (${{ inputs.os }} == 'macos-13') && '/usr/local/opt/llvm' || '/opt/homebrew/opt/llvm' }}
run: |
brew install llvm
echo CC="${LLVM_DIR}/bin/clang" >> $GITHUB_ENV
echo LDFLAGS="-L${LLVM_DIR}/lib $LDFLAGS" >> $GITHUB_ENV
echo CPPFLAGS="-I${LLVM_DIR}/include $CPPFLAGS" >> $GITHUB_ENV
- name: Windows - find MSVC and set environment variables
if: startsWith(${{ inputs.os }}, 'windows')
shell: bash -l {0}
env:
MSVC_PREFIX: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC'
run: |
echo "Available MSVC installations:"
ls "$MSVC_PREFIX"
MSVC_BIN=$(ls "$MSVC_PREFIX" | tail -n 1)\\bin\\HostX64\\x64
CC="$MSVC_PREFIX\\$MSVC_BIN\\cl.exe"
echo "CC: $CC"
echo "CC=$CC" >> $GITHUB_ENV
CC_LD="$MSVC_PREFIX\\$MSVC_BIN\\link.exe"
echo "CC_LD: $CC_LD"
echo "CC_LD=$CC_LD" >> $GITHUB_ENV
- name: Update pip and install dependencies
shell: bash -l {0}
run: |
python -m pip install --upgrade pip
python -m pip install -r tests_and_analysis/ci_requirements.txt
- name: Run tests
env:
TOX_SKIP_ENV: ${{ inputs.tox-skip-env }}
shell: bash -l {0}
run: python -m tox run-parallel
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: Unit test results ${{ inputs.os }}
path: tests_and_analysis/test/reports/junit_report*.xml
- name: Publish Codacy coverage
uses: codacy/codacy-coverage-reporter-action@v1
if: ${{ inputs.coverage }}
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
coverage-reports: tests_and_analysis/test/reports/coverage*.xml
- uses: codecov/codecov-action@v3
if: ${{ inputs.coverage }}
with:
files: tests_and_analysis/test/reports/coverage*.xml