mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #6500 from tk0miya/1464_warning_html_static_path_inside_outdir
Close #1464: html: warn html_static_path is inside outdir
This commit is contained in:
commit
aeb9401c20
2
CHANGES
2
CHANGES
@ -25,6 +25,8 @@ Features added
|
|||||||
--------------
|
--------------
|
||||||
|
|
||||||
* #5124: graphviz: ``:graphviz_dot:`` option is renamed to ``:layout:``
|
* #5124: graphviz: ``:graphviz_dot:`` option is renamed to ``:layout:``
|
||||||
|
* #1464: html: emit a warning if :confval:`html_static_path` and
|
||||||
|
:confval:`html_extra_path` directories are inside output directory
|
||||||
|
|
||||||
Bugs fixed
|
Bugs fixed
|
||||||
----------
|
----------
|
||||||
|
@ -1151,17 +1151,25 @@ def validate_math_renderer(app: Sphinx) -> None:
|
|||||||
def validate_html_extra_path(app: Sphinx, config: Config) -> None:
|
def validate_html_extra_path(app: Sphinx, config: Config) -> None:
|
||||||
"""Check html_extra_paths setting."""
|
"""Check html_extra_paths setting."""
|
||||||
for entry in config.html_extra_path[:]:
|
for entry in config.html_extra_path[:]:
|
||||||
if not path.exists(path.join(app.confdir, entry)):
|
extra_path = path.normpath(path.join(app.confdir, entry))
|
||||||
|
if not path.exists(extra_path):
|
||||||
logger.warning(__('html_extra_path entry %r does not exist'), entry)
|
logger.warning(__('html_extra_path entry %r does not exist'), entry)
|
||||||
config.html_extra_path.remove(entry)
|
config.html_extra_path.remove(entry)
|
||||||
|
elif path.commonpath([app.outdir, extra_path]) == app.outdir:
|
||||||
|
logger.warning(__('html_extra_path entry %r is placed inside outdir'), entry)
|
||||||
|
config.html_extra_path.remove(entry)
|
||||||
|
|
||||||
|
|
||||||
def validate_html_static_path(app: Sphinx, config: Config) -> None:
|
def validate_html_static_path(app: Sphinx, config: Config) -> None:
|
||||||
"""Check html_static_paths setting."""
|
"""Check html_static_paths setting."""
|
||||||
for entry in config.html_static_path[:]:
|
for entry in config.html_static_path[:]:
|
||||||
if not path.exists(path.join(app.confdir, entry)):
|
static_path = path.normpath(path.join(app.confdir, entry))
|
||||||
|
if not path.exists(static_path):
|
||||||
logger.warning(__('html_static_path entry %r does not exist'), entry)
|
logger.warning(__('html_static_path entry %r does not exist'), entry)
|
||||||
config.html_static_path.remove(entry)
|
config.html_static_path.remove(entry)
|
||||||
|
elif path.commonpath([app.outdir, static_path]) == app.outdir:
|
||||||
|
logger.warning(__('html_static_path entry %r is placed inside outdir'), entry)
|
||||||
|
config.html_static_path.remove(entry)
|
||||||
|
|
||||||
|
|
||||||
def validate_html_logo(app: Sphinx, config: Config) -> None:
|
def validate_html_logo(app: Sphinx, config: Config) -> None:
|
||||||
|
@ -16,6 +16,7 @@ from itertools import cycle, chain
|
|||||||
import pytest
|
import pytest
|
||||||
from html5lib import HTMLParser
|
from html5lib import HTMLParser
|
||||||
|
|
||||||
|
from sphinx.builders.html import validate_html_extra_path, validate_html_static_path
|
||||||
from sphinx.errors import ConfigError
|
from sphinx.errors import ConfigError
|
||||||
from sphinx.testing.util import strip_escseq
|
from sphinx.testing.util import strip_escseq
|
||||||
from sphinx.util import docutils
|
from sphinx.util import docutils
|
||||||
@ -1496,3 +1497,29 @@ def test_html_pygments_style_manually(app):
|
|||||||
def test_html_pygments_for_classic_theme(app):
|
def test_html_pygments_for_classic_theme(app):
|
||||||
style = app.builder.highlighter.formatter_args.get('style')
|
style = app.builder.highlighter.formatter_args.get('style')
|
||||||
assert style.__name__ == 'SphinxStyle'
|
assert style.__name__ == 'SphinxStyle'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.sphinx(testroot='basic', srcdir='validate_html_extra_path')
|
||||||
|
def test_validate_html_extra_path(app):
|
||||||
|
(app.confdir / '_static').makedirs()
|
||||||
|
app.config.html_extra_path = [
|
||||||
|
'/path/to/not_found', # not found
|
||||||
|
'_static',
|
||||||
|
app.outdir, # outdir
|
||||||
|
app.outdir / '_static', # inside outdir
|
||||||
|
]
|
||||||
|
validate_html_extra_path(app, app.config)
|
||||||
|
assert app.config.html_extra_path == ['_static']
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.sphinx(testroot='basic', srcdir='validate_html_static_path')
|
||||||
|
def test_validate_html_static_path(app):
|
||||||
|
(app.confdir / '_static').makedirs()
|
||||||
|
app.config.html_static_path = [
|
||||||
|
'/path/to/not_found', # not found
|
||||||
|
'_static',
|
||||||
|
app.outdir, # outdir
|
||||||
|
app.outdir / '_static', # inside outdir
|
||||||
|
]
|
||||||
|
validate_html_static_path(app, app.config)
|
||||||
|
assert app.config.html_static_path == ['_static']
|
||||||
|
Loading…
Reference in New Issue
Block a user