# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: PR on: pull_request: branches: [ master, main ] permissions: contents: read jobs: build: runs-on: ubuntu-latest strategy: matrix: container: [ "python:3.8", "python:3.9", "python:3.10", "python:3.11" ] container: image: ${{ matrix.container }} steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Cache virtualenvironment uses: actions/cache@v3 with: path: ~/.venv key: ${{ hashFiles('requirements.txt', 'requirements-dev.txt') }} - name: Upgrade pip run: pip install --upgrade pip - name: Create and activate Virtualenv run: | pip install virtualenv [ ! -d ".venv" ] && virtualenv .venv . .venv/bin/activate - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: python - name: Install dependencies run: pip install -r requirements-dev.txt - name: Run black formatter check run: black --check . - name: Run flake8 formatter check run: flake8 . - name: Run isort formatter check run: isort . - name: Test with pytest run: coverage run --omit="*/test*" -m pytest - name: Upload coverage to Codecov uses: codecov/codecov-action@04adcebd9b38cae0bb0fd4a05e3497ce0bce41a0 with: flags: unittests # optional name: coverage # optional fail_ci_if_error: true # optional (default = false) verbose: true # optional (default = false) - name: Run E2E tests with behave run: | cp test-harness/features/evaluation.feature tests/features/ behave tests/features/ - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2