name: Test Textual module on: pull_request: paths: - ".github/workflows/pythonpackage.yml" - "**.py" - "**.pyi" - "**.css" - "**.ambr" - "**.lock" - "Makefile" env: PYTEST_ADDOPTS: "--color=yes" jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] defaults: run: shell: bash steps: - uses: actions/checkout@v4.1.1 - name: Install Poetry run: pipx install poetry==1.7.1 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "poetry" - name: Install dependencies run: poetry install --no-interaction --extras syntax if: ${{ matrix.python-version != '3.9' }} - name: Install dependencies for 3.9 run: poetry install --no-interaction if: ${{ matrix.python-version == '3.9' }} - name: Test with pytest (Py310+ - with syntax highlighting) run: | poetry run pytest tests -v --cov=./src/textual --cov-report=xml:./coverage.xml --cov-report term-missing if: ${{ matrix.python-version != '3.9' }} - name: Test with pytest (Py39 - without syntax highlighting) run: | poetry run pytest tests -v --cov=./src/textual --cov-report=xml:./coverage.xml --cov-report term-missing -m 'not syntax' if: ${{ matrix.python-version == '3.9' }} - name: Upload snapshot report if: always() uses: actions/upload-artifact@v4 with: name: snapshot_report_textual path: snapshot_report.html overwrite: true