from __future__ import annotations import hashlib import re import pytest @pytest.mark.sphinx('html', testroot='root') def test_html_download(app): app.build() # subdir/includes.html result = (app.outdir / 'subdir' / 'includes.html').read_text(encoding='utf8') pattern = ( '' ) matched = re.search(pattern, result) assert matched assert (app.outdir / matched.group(1)).exists() filename = matched.group(1) # includes.html result = (app.outdir / 'includes.html').read_text(encoding='utf8') pattern = ( '' ) matched = re.search(pattern, result) assert matched assert (app.outdir / matched.group(1)).exists() assert matched.group(1) == filename pattern = ( '' ) matched = re.search(pattern, result) assert matched assert (app.outdir / matched.group(1) / 'file_with_special_#_chars.xyz').exists() @pytest.mark.sphinx('html', testroot='roles-download') def test_html_download_role(app): app.build() digest = hashlib.md5(b'dummy.dat', usedforsecurity=False).hexdigest() assert (app.outdir / '_downloads' / digest / 'dummy.dat').exists() digest_another = hashlib.md5( b'another/dummy.dat', usedforsecurity=False ).hexdigest() assert (app.outdir / '_downloads' / digest_another / 'dummy.dat').exists() content = (app.outdir / 'index.html').read_text(encoding='utf8') assert ( '
  • ' '' 'dummy.dat

  • ' % digest ) in content assert ( '
  • ' '' 'another/dummy.dat

  • ' % digest_another ) in content assert ( '
  • ' 'not_found.dat

  • ' ) in content assert ( '
  • ' '' 'Sphinx logo' '

  • ' ) in content