# This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Build and Test on: ['push', 'pull_request'] jobs: build: runs-on: ubuntu-24.04 services: database: image: postgres:15-alpine env: # password for postgres user in the Docker container POSTGRES_PASSWORD: postgres # default database to create POSTGRES_DB: dspacestatistics options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - uses: actions/checkout@v4 - name: Install poetry run: pipx install poetry - uses: actions/setup-python@v5 with: python-version: '3.12' cache: 'poetry' - run: poetry install - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names poetry run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide poetry run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Set up PostgreSQL run: | pg_isready -U postgres -d dspacestatistics createuser -U postgres dspacestatistics psql -U postgres -c "ALTER USER dspacestatistics WITH PASSWORD 'dspacestatistics'" psql -U postgres -d dspacestatistics < tests/dspacestatistics.sql env: PGHOST: localhost PGPASSWORD: postgres - name: Test with pytest run: | poetry run pytest env: PGHOST: localhost PGPASSWORD: dspacestatistics