name: gatelock tests on: push: branches: [main] # The workflow's own file counts as gatelock: editing only this file used # to trigger nothing, so a fix to the job itself could never prove itself. paths: ['gatelock/**', '.github/workflows/gatelock-tests.yml'] pull_request: branches: [main] paths: ['gatelock/**', '.github/workflows/gatelock-tests.yml'] jobs: test: runs-on: ubuntu-latest defaults: run: working-directory: gatelock steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install dependencies run: pip install -r requirements.txt # The viewport, fit-check and keyboard tests drive real Tk: focus # delivery, canvas scrolling and widget heights are Tk's own behaviour, # and mocking them is what let a viewport that scrolled itself pass # every check for a week. Headless they skip, silently taking coverage # with them -- so the runner gets a display instead. - 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