Run Import and Application Tests: branch main by rfrenchseti #482
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test OPUS | |
run-name: "Run Import and Application Tests: ${{ github.ref_type }} ${{ github.ref_name }} by ${{ github.triggering_actor }}" | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: [ main ] | |
push: | |
branches: [ main ] | |
schedule: | |
- cron: "00 11 * * *" # 3am PST, 4am PDT | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
test: | |
name: Test OPUS | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
# Because we can run multiple imports at the same time | |
# under Linux, we can do our multi-Python-version test | |
# there, and then just run a single version under | |
# Windows and MacOS to make sure the code still works there. | |
# | |
# Windows: We can't efficiently run multiple Windows tests because | |
# a GitHub Windows runner can only run a single version | |
# of Python at a time and thus we don't get any | |
# parallelism. | |
# | |
# MacOS: Our current self-hosted runner is very slow with little | |
# memory and it would be prohibitive to run many versions. Also | |
# Python 3.8-3.10 does not currently work on MacOS. | |
include: | |
- os: self-hosted-linux | |
python-version: "3.10" | |
- os: self-hosted-linux | |
python-version: "3.11" | |
- os: self-hosted-linux | |
python-version: "3.12" | |
- os: self-hosted-windows | |
python-version: "3.12" | |
- os: self-hosted-macos | |
python-version: "3.12" | |
fail-fast: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Test with coverage | |
# Because self-hosted runners keep a global Python environment that | |
# isn't wiped between runs, the various requirements.txt files will | |
# interfere with each other. As a result, we use a venv for cases | |
# where it matters. | |
run: | | |
echo | |
env | |
echo | |
python -m venv venv | |
if [[ ${{ matrix.os }} == self-hosted-windows ]]; then | |
source venv/Scripts/activate | |
else | |
source venv/bin/activate | |
fi | |
python -m pip install --upgrade pip | |
python -m pip install wheel | |
python -m pip install -r requirements.txt | |
echo | |
python -m pip freeze | |
echo | |
scripts/automated_tests/opus_main_test.sh | |
- name: Upload coverage report to codecov | |
uses: codecov/codecov-action@v4 | |
if: matrix.os == 'self-hosted-linux' && matrix.python-version == '3.12' | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: ./opus/application/coverage.xml | |
verbose: true | |
- name: Check coverage level | |
run: | | |
scripts/automated_tests/opus_check_coverage.sh |