Skip to content

Tests

Tests #2854

Workflow file for this run

name: Tests
on:
# Allow to manually trigger through github API
workflow_dispatch:
# Triggers with push to these branches
push:
branches:
- master
- development
# Triggers with push to pr targeting these branches
pull_request:
branches:
- master
- development
schedule:
# Every day at 7AM UTC
- cron: '0 07 * * *'
env:
# Arguments used for pytest
pytest-args: >-
--forked
--durations=20
--timeout=600
--timeout-method=signal
-v
# Arguments used for code-cov which is later used to annotate PR's on github
code-cov-args: >-
--cov=autoPyTorch
--cov-report=xml
--cov-config=.coveragerc
jobs:
tests:
name: ${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.kind }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
python-version: ['3.7', '3.8', '3.9', '3.10']
kind: ['source', 'dist']
exclude:
# Exclude all configurations *-*-dist, include one later
- kind: 'dist'
# Exclude windows as bash commands wont work in windows runner
- os: windows-latest
# Exclude macos as there are permission errors using conda as we do
- os: macos-latest
# Exclude python 3.10 as torch is not support python 3.10 yet
- python-version: '3.10'
include:
# Add the tag code-cov to ubuntu-3.7-source
- os: ubuntu-latest
python-version: 3.7
kind: 'source'
code-cov: true
# Include one config with dist, ubuntu-3.7-dist
- os: ubuntu-latest
python-version: 3.7
kind: 'dist'
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Source install
if: matrix.kind == 'source'
run: |
git submodule update --init --recursive
python -m pip install --upgrade pip
pip install -e .[forecasting,test]
- name: Dist install
if: matrix.kind == 'dist'
run: |
git submodule update --init --recursive
python setup.py sdist
last_dist=$(ls -t dist/autoPyTorch-*.tar.gz | head -n 1)
pip install $last_dist[forecasting,test]
- name: Store repository status
id: status-before
run: |
echo "::set-output name=BEFORE::$(git status --porcelain -b)"
- name: Run tests
run: |
if [ ${{ matrix.code-cov }} ]; then
python -m pytest ${{ env.pytest-args }} ${{ env.code-cov-args }} test
else
python -m pytest ${{ env.pytest-args }} test
fi
- name: Check for files left behind by test
if: ${{ always() }}
run: |
before="${{ steps.status-before.outputs.BEFORE }}"
after="$(git status --porcelain -b)"
if [[ "$before" != "$after" ]]; then
echo "git status from before: $before"
echo "git status from after: $after"
echo "Not all generated files have been deleted!"
exit 1
fi
- name: Upload coverage
if: matrix.code-cov && always()
uses: codecov/codecov-action@v1
with:
fail_ci_if_error: true
verbose: true