New issue 628: UnicodeDecodeError (INTERNALERROR) when doctests contain Unicode
https://bitbucket.org/hpk42/pytest/issue/628/unicodedecodeerror-internalerror-when

Jason R. Coombs:

Consider this test:

```
def foo():
    """
    >>> name = 'с'
    'anything'
    """
```

Note that isn't the letter 'c' but instead Cyrillic 's'.

Save it as mod.py, then invoke `pytest --doctest-modules`. It will fail with 
this output:

```
> py.test --doctest-modules
============================= test session starts =============================

platform win32 -- Python 3.4.2 -- py-1.4.26 -- pytest-2.6.4
collected 1 items

mod.py
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\main.py", line 84, 
in wrap_session
INTERNALERROR>     doit(config, session)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\main.py", line 122, 
in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 413, 
in __call__
INTERNALERROR>     return self._docall(methods, kwargs)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 424, 
in _docall
INTERNALERROR>     res = mc.execute()
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 315, 
in execute
INTERNALERROR>     res = method(**kwargs)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\main.py", line 142, 
in pytest_runtestloop
INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, 
nextitem=nextitem)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 413, 
in __call__
INTERNALERROR>     return self._docall(methods, kwargs)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 424, 
in _docall
INTERNALERROR>     res = mc.execute()
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 315, 
in execute
INTERNALERROR>     res = method(**kwargs)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\runner.py", line 
65, in pytest_runtest_protocol
INTERNALERROR>     runtestprotocol(item, nextitem=nextitem)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\runner.py", line 
75, in runtestprotocol
INTERNALERROR>     reports.append(call_and_report(item, "call", log))
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\runner.py", line 
111, in call_and_report
INTERNALERROR>     report = hook.pytest_runtest_makereport(item=item, call=call)

INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\main.py", line 167, 
in call_matching_hooks
INTERNALERROR>     return hookmethod.pcall(plugins, **kwargs)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 417, 
in pcall
INTERNALERROR>     return self._docall(methods, kwargs)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 424, 
in _docall
INTERNALERROR>     res = mc.execute()
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\core.py", line 315, 
in execute
INTERNALERROR>     res = method(**kwargs)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\runner.py", line 
214, in pytest_runtest_makereport
INTERNALERROR>     longrepr = item.repr_failure(excinfo)
INTERNALERROR>   File 
"c:\python\lib\site-packages\pytest-2.6.4-py3.4.egg\_pytest\doctest.py", line 
62, in repr_failure
INTERNALERROR>     filelines = py.path.local(filename).readlines(cr=0)
INTERNALERROR>   File 
"c:\python\lib\site-packages\py-1.4.26-py3.4.egg\py\_path\common.py", line 141, 
in readlines
INTERNALERROR>     content = self.read('rU')
INTERNALERROR>   File 
"c:\python\lib\site-packages\py-1.4.26-py3.4.egg\py\_path\common.py", line 135, 
in read
INTERNALERROR>     return f.read()
INTERNALERROR>   File "c:\python\lib\encodings\cp1252.py", line 23, in decode
INTERNALERROR>     return 
codecs.charmap_decode(input,self.errors,decoding_table)[0]
INTERNALERROR> UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in 
position 36: character maps to <undefined>

==============================  in 0.30 seconds ===============================
```


_______________________________________________
pytest-commit mailing list
pytest-commit@python.org
https://mail.python.org/mailman/listinfo/pytest-commit

Reply via email to