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