File: tests.yml

package info (click to toggle)
sphinx-book-theme 1.1.4-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,104 kB
  • sloc: python: 1,302; javascript: 170; makefile: 56; sh: 8
file content (132 lines) | stat: -rw-r--r-- 4,381 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: continuous-integration

on:
  push:
    branches: [master]
    tags:
      - 'v*'
  pull_request:
  workflow_call:

env:
  PY_COLORS: 1
  FORCE_COLOR: True

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: 3.11
    - uses: pre-commit/action@v3.0.1

  tests:
    continue-on-error: ${{ matrix.experimental || false }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest]
        python-version: ["3.10", "3.11", "3.12.*", "3.13"]
        # Only test the latest major release of Sphinx because otherwise we need to
        # keep multiple versions of regression tests on file and this creates lots of
        # noise in the tests.
        sphinx: ["~=6.0","~=7.0", "~=8.0"]
        include:
        - os: windows-latest
          # Python 3.12 is broken on windows builds until the following PR is released:
          # https://github.com/pradyunsg/sphinx-theme-builder/pull/47
          python-version: 3.11
          # Windows pulling in dependencies fails
          experimental: true
        - os: macos-latest
          python-version: 3.x
        # Sphinx <8 is 3.9+
        - os: ubuntu-latest
          python-version: "3.9"
          sphinx: "~=7.0"
        - os: ubuntu-latest
          python-version: "3.9"
          sphinx: "~=6.0"

    runs-on: ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
        cache: "pip"
        cache-dependency-path: "pyproject.toml"

    - name: Install dependencies with Sphinx ${{ matrix.sphinx }}
      run: |
        python -m pip install --upgrade pip
        python -m pip install --upgrade "sphinx${{matrix.sphinx}}" -e .[test] --pre

    - name: Run pytest
      run: >
        pytest --durations=10 --cov=sphinx_book_theme --cov-report=xml --cov-report=term-missing

    # Only upload to codecov on pull requests so that we don't trigger rate limit blocks
    # Disabled for now with false &&
    - name: Upload to Codecov
      if: false && matrix.os == 'ubuntu-latest' && matrix.python-version == 3.9 && matrix.sphinx == '~=7.0' && github.repository == 'executablebooks/sphinx-book-theme' && github.event_name == 'pull_request'
      uses: codecov/codecov-action@v5.0.7
      with:
        name: ebp-sbt-pytests-py3.7
        flags: pytests
        file: ./coverage.xml
        fail_ci_if_error: true

  # Build the docs and fail if an *unexpected* warning occurs.
  docs-audit:
    runs-on: ubuntu-latest
    name: Build and Audit Documentation
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.9'
        cache: "pip"
        cache-dependency-path: "pyproject.toml"
    - name: Install fonts
      # This is required until sphinx-opengraph fixes their fallback
      run: sudo apt-get install -y fonts-roboto

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -e .[doc]

    # Only check for broken links on pull requests so that we don't block releases
    - name: Check for broken links
      if: github.event_name == 'pull_request'
      run: >
        sphinx-build -b linkcheck docs docs/_build/linkcheck

    - name: Build documentation to audit
      run: >
        sphinx-build -b html docs docs/_build/html -w warnings.txt

    - name: Check that there are no unexpected warnings
      shell: python
      run: |
        from pathlib import Path
        import re
        text = Path("./warnings.txt").read_text().strip()
        expected_warning_patterns = [r"kitchen\-sink", r"urllib/parse\.py", r"Glyph 10024 .*? missing from current font"]
        print("\n=== Sphinx Warnings ===\n\n" + text)  # Print just for reference so we can look at the logs
        unexpected = [l for l in text.splitlines() if not any(re.search(p, l) for p in expected_warning_patterns)]
        assert len(unexpected) == 0, unexpected

    - name: Audit with Lighthouse
      uses: treosh/lighthouse-ci-action@12.1.0
      with:
        configPath: ".github/workflows/lighthouserc.json"
        temporaryPublicStorage: true
        uploadArtifacts: true
        runs: 5