mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Add test for docutils.conf and prevent 'html4css1.css' missing warning.
Now --embed-stylesheet option default become false.
This commit is contained in:
parent
fa7fe88d74
commit
91ef671ea9
@ -12,6 +12,7 @@
|
||||
import sys
|
||||
import posixpath
|
||||
import os
|
||||
import copy
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.writers.html4css1 import Writer, HTMLTranslator as BaseTranslator
|
||||
@ -32,6 +33,13 @@ except ImportError:
|
||||
# http://www.arnebrodowski.de/blog/write-your-own-restructuredtext-writer.html
|
||||
|
||||
class HTMLWriter(Writer):
|
||||
|
||||
# override embed-stylesheet default value to 0.
|
||||
settings_spec = copy.deepcopy(Writer.settings_spec)
|
||||
for _setting in settings_spec[2]:
|
||||
if '--embed-stylesheet' in _setting[1]:
|
||||
_setting[2]['default'] = 0
|
||||
|
||||
def __init__(self, builder):
|
||||
Writer.__init__(self)
|
||||
self.builder = builder
|
||||
|
5
tests/roots/test-docutilsconf/conf.py
Normal file
5
tests/roots/test-docutilsconf/conf.py
Normal file
@ -0,0 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
project = 'Sphinx docutils conf <Tests>'
|
||||
source_suffix = '.txt'
|
||||
keep_warnings = True
|
15
tests/roots/test-docutilsconf/contents.txt
Normal file
15
tests/roots/test-docutilsconf/contents.txt
Normal file
@ -0,0 +1,15 @@
|
||||
docutils conf
|
||||
=============
|
||||
|
||||
field-name-limit
|
||||
----------------
|
||||
|
||||
:short: desc
|
||||
:long long long long: long title
|
||||
|
||||
option-limit
|
||||
------------
|
||||
|
||||
--short short desc
|
||||
--long-long-long-long long desc
|
||||
|
0
tests/roots/test-docutilsconf/docutils.conf
Normal file
0
tests/roots/test-docutilsconf/docutils.conf
Normal file
101
tests/test_docutilsconf.py
Normal file
101
tests/test_docutilsconf.py
Normal file
@ -0,0 +1,101 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
test_docutilsconf
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Test docutils.conf support for several writers.
|
||||
|
||||
:copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
|
||||
:license: BSD, see LICENSE for details.
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
from StringIO import StringIO
|
||||
from functools import wraps
|
||||
|
||||
from util import test_roots, TestApp
|
||||
|
||||
|
||||
html_warnfile = StringIO()
|
||||
root = test_roots / 'test-docutilsconf'
|
||||
|
||||
|
||||
# need cleanenv to rebuild everytime.
|
||||
# docutils.conf change did not effect to rebuild.
|
||||
def with_conf_app(docutilsconf='', *args, **kwargs):
|
||||
default_kw = {
|
||||
'srcdir': root,
|
||||
'cleanenv': True,
|
||||
}
|
||||
default_kw.update(kwargs)
|
||||
def generator(func):
|
||||
@wraps(func)
|
||||
def deco(*args2, **kwargs2):
|
||||
app = TestApp(*args, **default_kw)
|
||||
(app.srcdir / 'docutils.conf').write_text(docutilsconf)
|
||||
try:
|
||||
cwd = os.getcwd()
|
||||
os.chdir(app.srcdir)
|
||||
func(app, *args2, **kwargs2)
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
# don't execute cleanup if test failed
|
||||
app.cleanup()
|
||||
return deco
|
||||
return generator
|
||||
|
||||
|
||||
def regex_count(expr, result):
|
||||
return len(re.findall(expr, result))
|
||||
|
||||
|
||||
@with_conf_app(buildername='html')
|
||||
def test_html_with_default_docutilsconf(app):
|
||||
app.builder.build(['contents'])
|
||||
result = (app.outdir / 'contents.html').text(encoding='utf-8')
|
||||
|
||||
assert regex_count(r'<th class="field-name">', result) == 1
|
||||
assert regex_count(r'<th class="field-name" colspan="2">', result) == 1
|
||||
assert regex_count(r'<td class="option-group">', result) == 1
|
||||
assert regex_count(r'<td class="option-group" colspan="2">', result) == 1
|
||||
|
||||
|
||||
@with_conf_app(buildername='html', docutilsconf=(
|
||||
'\n[html4css1 writer]'
|
||||
'\noption-limit:1'
|
||||
'\nfield-name-limit:1'
|
||||
'\n')
|
||||
)
|
||||
def test_html_with_docutilsconf(app):
|
||||
app.builder.build(['contents'])
|
||||
result = (app.outdir / 'contents.html').text(encoding='utf-8')
|
||||
|
||||
assert regex_count(r'<th class="field-name">', result) == 0
|
||||
assert regex_count(r'<th class="field-name" colspan="2">', result) == 2
|
||||
assert regex_count(r'<td class="option-group">', result) == 0
|
||||
assert regex_count(r'<td class="option-group" colspan="2">', result) == 2
|
||||
|
||||
|
||||
@with_conf_app(buildername='html', warning=html_warnfile)
|
||||
def test_html(app):
|
||||
app.builder.build(['contents'])
|
||||
assert html_warnfile.getvalue() == ''
|
||||
|
||||
|
||||
@with_conf_app(buildername='latex', warning=html_warnfile)
|
||||
def test_latex(app):
|
||||
app.builder.build(['contents'])
|
||||
assert html_warnfile.getvalue() == ''
|
||||
|
||||
|
||||
@with_conf_app(buildername='man', warning=html_warnfile)
|
||||
def test_man(app):
|
||||
app.builder.build(['contents'])
|
||||
assert html_warnfile.getvalue() == ''
|
||||
|
||||
|
||||
@with_conf_app(buildername='texinfo', warning=html_warnfile)
|
||||
def test_texinfo(app):
|
||||
app.builder.build(['contents'])
|
||||
assert html_warnfile.getvalue() == ''
|
Loading…
Reference in New Issue
Block a user