name: sickdays tests on: push: branches: [main] # The workflow's own file counts as sickdays: editing only this file would # otherwise trigger nothing, so a fix to the job itself could never prove # itself. paths: ['sickdays/**', '.github/workflows/sickdays-tests.yml'] pull_request: branches: [main] paths: ['sickdays/**', '.github/workflows/sickdays-tests.yml'] jobs: test: runs-on: ubuntu-latest defaults: run: working-directory: sickdays steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.x" cache: pip cache-dependency-path: sickdays/requirements.txt # crdt-sync and freedays are siblings in this repo, so they install from # the checkout rather than from a tag -- CI must test what is on this # branch, not what was last released. Deliberately NOT gatelock: # importing it pulls in tkinter, and this job has no display precisely # because sickdays must work without one. - name: Install the sibling packages run: pip install ../crdt-sync && pip install --no-deps ../freedays - name: Install dependencies run: pip install -r requirements.txt && pip install --no-deps -e . # The library draws nothing, but sickdays.gui (0.3.0) does, and its # tests drive real Tk: option names and Checkbutton/variable wiring are # Tk's own behaviour. Headless they skip, taking coverage with them -- # so the runner gets a virtual display, as gatelock's does. - name: Install a virtual X display run: sudo apt-get update && sudo apt-get install -y xvfb - name: Run tests with coverage run: xvfb-run -a -s "-screen 0 1600x1200x24" python -m pytest -v