Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ jobs:
- name: Install dependencies
run: uv pip install . --group test
- name: Install Docutils' HEAD
run: uv pip install "docutils @ git+https://repo.or.cz/docutils.git#subdirectory=docutils"
run: uv pip install "docutils @ git+https://github.com/docutils/docutils.git#subdirectory=docutils"
- name: Test with pytest
run: python -m pytest -n logical --dist=worksteal -vv
env:
Expand Down Expand Up @@ -313,7 +313,7 @@ jobs:
- name: Install dependencies
run: uv pip install . --group test
- name: Install Docutils' HEAD
run: uv pip install "docutils @ git+https://repo.or.cz/docutils.git#subdirectory=docutils"
run: uv pip install "docutils @ git+https://github.com/docutils/docutils.git#subdirectory=docutils"
- name: Test with pytest
run: python -m pytest -vv --durations 25
env:
Expand Down
4 changes: 4 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ Release 9.1.1 (released Oct 19, 2026)
Bugs fixed
----------

* #14690: Fix test isolation issues caused by shared test directories and
inherited ``NO_COLOR`` and ``NO_COLOUR`` environment variables.
Patch by Kilian Paul

* #14465: LaTeX: PDF build crash since LaTeX June 2026 release if tables are
styled with ``'colorrows'`` (which is the default).
Patch by Jean-François B.
Expand Down
4 changes: 3 additions & 1 deletion tests/roots/test-linkcheck-case-check/conf.py
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
linkcheck_timeout = 0.25
# Short but not too short: CI runners with few CPUs can stall
# a local test server for a few hundred milliseconds under load.
linkcheck_timeout = 2
2 changes: 1 addition & 1 deletion tests/test_builders/test_build_html_5_output.py
Original file line number Diff line number Diff line change
Expand Up @@ -551,7 +551,7 @@ def test_html5_output(
check_xpath(cached_etree_parse(app.outdir / fname), fname, path, check)


@pytest.mark.sphinx('html', testroot='markup-rubric')
@pytest.mark.sphinx('html', testroot='markup-rubric', srcdir='markup-rubric-html')
def test_html5_rubric(app: SphinxTestApp) -> None:
def insert_invalid_rubric_heading_level(
app: SphinxTestApp,
Expand Down
2 changes: 1 addition & 1 deletion tests/test_builders/test_build_latex.py
Original file line number Diff line number Diff line change
Expand Up @@ -2284,7 +2284,7 @@ def test_one_parameter_per_line_without_trailing_comma(app: SphinxTestApp) -> No
assert r'\sphinxparam{\DUrole{n}{f}}}}' in result


@pytest.mark.sphinx('latex', testroot='markup-rubric')
@pytest.mark.sphinx('latex', testroot='markup-rubric', srcdir='markup-rubric-latex')
def test_latex_rubric(app: SphinxTestApp) -> None:
app.build()
content = (app.outdir / 'test.tex').read_text(encoding='utf8')
Expand Down
16 changes: 9 additions & 7 deletions tests/test_builders/test_build_linkcheck.py
Original file line number Diff line number Diff line change
Expand Up @@ -1461,20 +1461,22 @@ class CapitalisePathHandler(BaseHTTPRequestHandler):

protocol_version = 'HTTP/1.1'

def do_GET(self) -> None:
def _respond(self) -> None:
if self.path.islower():
# Redirect lowercase paths to uppercase versions
self.send_response(301, 'Moved Permanently')
self.send_header('Location', self.path.upper())
self.send_header('Content-Length', '0')
self.end_headers()
else:
# Serve uppercase paths
content = b'ok\n\n'
self.send_response(200, 'OK')
self.send_header('Content-Length', str(len(content)))
self.end_headers()
self.wfile.write(content)
self.send_header('Content-Length', '0')
self.end_headers()

def do_GET(self) -> None:
self._respond()

def do_HEAD(self) -> None:
self._respond()


@pytest.mark.sphinx(
Expand Down
2 changes: 1 addition & 1 deletion tests/test_builders/test_build_manpage.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def test_default_man_pages() -> None:
assert default_man_pages(config) == expected


@pytest.mark.sphinx('man', testroot='markup-rubric')
@pytest.mark.sphinx('man', testroot='markup-rubric', srcdir='markup-rubric-man')
def test_rubric(app: SphinxTestApp) -> None:
app.build()
content = (app.outdir / 'projectnamenotset.1').read_text(encoding='utf8')
Expand Down
2 changes: 1 addition & 1 deletion tests/test_builders/test_build_texinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def test_texinfo(app: SphinxTestApp) -> None:
raise AssertionError(msg) from exc


@pytest.mark.sphinx('texinfo', testroot='markup-rubric')
@pytest.mark.sphinx('texinfo', testroot='markup-rubric', srcdir='markup-rubric-texinfo')
def test_texinfo_rubric(app: SphinxTestApp) -> None:
app.build()

Expand Down
Loading