diff options
Diffstat (limited to 'tests/test_quickstart.py')
-rw-r--r-- | tests/test_quickstart.py | 71 |
1 files changed, 37 insertions, 34 deletions
diff --git a/tests/test_quickstart.py b/tests/test_quickstart.py index 8f630700..1d3bcd9e 100644 --- a/tests/test_quickstart.py +++ b/tests/test_quickstart.py @@ -11,10 +11,11 @@ import sys import time -from StringIO import StringIO -import tempfile -from util import raises, with_tempdir, with_app, SkipTest +from six import PY2, text_type, StringIO +from six.moves import input + +from util import raises, with_tempdir, SkipTest from sphinx import application from sphinx import quickstart as qs @@ -28,18 +29,20 @@ warnfile = StringIO() def setup_module(): nocolor() -def mock_raw_input(answers, needanswer=False): + +def mock_input(answers, needanswer=False): called = set() - def raw_input(prompt): + + def input_(prompt): if prompt in called: raise AssertionError('answer for %r missing and no default ' 'present' % prompt) called.add(prompt) - if sys.version_info < (3, 0): + if PY2: prompt = str(prompt) # Python2.x raw_input emulation # `raw_input` encode `prompt` by default encoding to print. else: - prompt = unicode(prompt) # Python3.x input emulation + prompt = text_type(prompt) # Python3.x input emulation # `input` decode prompt by default encoding before print. for question in answers: if prompt.startswith(qs.PROMPT_PREFIX + question): @@ -47,15 +50,14 @@ def mock_raw_input(answers, needanswer=False): if needanswer: raise AssertionError('answer for %r missing' % prompt) return '' - return raw_input + return input_ + + +real_input = input -try: - real_raw_input = raw_input -except NameError: - real_raw_input = input def teardown_module(): - qs.term_input = real_raw_input + qs.term_input = real_input qs.TERM_ENCODING = getattr(sys.stdin, 'encoding', None) coloron() @@ -63,12 +65,12 @@ def teardown_module(): def test_quickstart_inputstrip(): d = {} answers = { - 'Q1': 'Y\r', # input() return with '\r' on Python-3.2.0 for Windows - 'Q2': ' Yes \r', + 'Q1': 'Y', + 'Q2': ' Yes ', 'Q3': 'N', 'Q4': 'N ', } - qs.term_input = mock_raw_input(answers) + qs.term_input = mock_input(answers) qs.do_prompt(d, 'k1', 'Q1') assert d['k1'] == 'Y' qs.do_prompt(d, 'k2', 'Q2') @@ -88,7 +90,7 @@ def test_do_prompt(): 'Q5': 'no', 'Q6': 'foo', } - qs.term_input = mock_raw_input(answers) + qs.term_input = mock_input(answers) try: qs.do_prompt(d, 'k1', 'Q1') except AssertionError: @@ -113,7 +115,7 @@ def test_do_prompt_with_nonascii(): answers = { 'Q1': u'\u30c9\u30a4\u30c4', } - qs.term_input = mock_raw_input(answers) + qs.term_input = mock_input(answers) try: qs.do_prompt(d, 'k1', 'Q1', default=u'\u65e5\u672c') except UnicodeEncodeError: @@ -131,7 +133,7 @@ def test_quickstart_defaults(tempdir): 'Author name': 'Georg Brandl', 'Project version': '0.1', } - qs.term_input = mock_raw_input(answers) + qs.term_input = mock_input(answers) d = {} qs.ask_user(d) qs.generate(d) @@ -170,6 +172,7 @@ def test_quickstart_all_answers(tempdir): 'Author name': u'Wolfgang Schäuble & G\'Beckstein'.encode('utf-8'), 'Project version': '2.0', 'Project release': '2.0.1', + 'Project language': 'de', 'Source file suffix': '.txt', 'Name of your master document': 'contents', 'autodoc': 'y', @@ -185,7 +188,7 @@ def test_quickstart_all_answers(tempdir): 'Create Windows command file': 'no', 'Do you want to use the epub builder': 'yes', } - qs.term_input = mock_raw_input(answers, needanswer=True) + qs.term_input = mock_input(answers, needanswer=True) qs.TERM_ENCODING = 'utf-8' d = {} qs.ask_user(d) @@ -201,7 +204,7 @@ def test_quickstart_all_answers(tempdir): assert ns['master_doc'] == 'contents' assert ns['project'] == u'STASI™' assert ns['copyright'] == u'%s, Wolfgang Schäuble & G\'Beckstein' % \ - time.strftime('%Y') + time.strftime('%Y') assert ns['version'] == '2.0' assert ns['release'] == '2.0.1' assert ns['html_static_path'] == ['.static'] @@ -215,7 +218,7 @@ def test_quickstart_all_answers(tempdir): assert ns['texinfo_documents'] == [ ('contents', 'STASI', u'STASI™ Documentation', u'Wolfgang Schäuble & G\'Beckstein', 'STASI', - 'One line description of project.', 'Miscellaneous'),] + 'One line description of project.', 'Miscellaneous')] assert (tempdir / 'build').isdir() assert (tempdir / 'source' / '.static').isdir() @@ -231,14 +234,14 @@ def test_generated_files_eol(tempdir): 'Author name': 'Georg Brandl', 'Project version': '0.1', } - qs.term_input = mock_raw_input(answers) + qs.term_input = mock_input(answers) d = {} qs.ask_user(d) qs.generate(d) def assert_eol(filename, eol): content = filename.bytes().decode('unicode-escape') - assert all([l[-len(eol):]==eol for l in content.splitlines(True)]) + assert all([l[-len(eol):] == eol for l in content.splitlines(True)]) assert_eol(tempdir / 'make.bat', '\r\n') assert_eol(tempdir / 'Makefile', '\n') @@ -252,19 +255,19 @@ def test_quickstart_and_build(tempdir): 'Author name': 'Georg Brandl', 'Project version': '0.1', } - qs.term_input = mock_raw_input(answers) + qs.term_input = mock_input(answers) d = {} qs.ask_user(d) qs.generate(d) app = application.Sphinx( - tempdir, #srcdir - tempdir, #confdir - (tempdir / '_build' / 'html'), #outdir - (tempdir / '_build' / '.doctree'), #doctreedir - 'html', #buildername - status=StringIO(), - warning=warnfile) + tempdir, # srcdir + tempdir, # confdir + (tempdir / '_build' / 'html'), # outdir + (tempdir / '_build' / '.doctree'), # doctreedir + 'html', # buildername + status=StringIO(), + warning=warnfile) app.builder.build_all() warnings = warnfile.getvalue() assert not warnings @@ -274,11 +277,11 @@ def test_quickstart_and_build(tempdir): def test_default_filename(tempdir): answers = { 'Root path': tempdir, - 'Project name': u'\u30c9\u30a4\u30c4', #Fullwidth characters only + 'Project name': u'\u30c9\u30a4\u30c4', # Fullwidth characters only 'Author name': 'Georg Brandl', 'Project version': '0.1', } - qs.term_input = mock_raw_input(answers) + qs.term_input = mock_input(answers) d = {} qs.ask_user(d) qs.generate(d) |