Hi everyone, Besides the problem that reinterpret is executing code in a context without unicode_literals enabled, this also showcases that when moving a fixture with has asserts on it from a test file to a conftest file, asserts will not be rewritten anymore and reinterpretation will be used instead, which might cause unexpected issues, as illustrated by Gustavo. The first issue looks like a bug to me, not sure what to do about this second point. Any thoughts? Cheers, On Mon, Nov 24, 2014 at 1:51 PM, Edison Gustavo Muenz < edisongustavo@gmail.com> wrote:
TL;DR;
The eval() method of the Frame object is not “inheriting” the __future__ imports from the frame. Long explanation
Suppose I have a fixture in which I write my assert statements. If this fixture has strings on the assert statement then when the assert fails I get the wrong kind of errors.
The problem is that the pytest assertion rewrite mechanism is calling eval() on the code that contains the frame
To better illustrate what happens, see this gist <https://gist.github.com/edisongustavo/5533a1c36de6cab6f39a>
The tests <https://gist.github.com/edisongustavo/5533a1c36de6cab6f39a#file-test_unicode...> have the following output:
- test_plugin_fixture - *fail* - test_conftest_fixture - *fail* - test_inline_fixture - pass - test_no_fixture - pass
The output of *test_plugin_fixture* (omitted some output for brevity):
$ pytest -k test_plugin_fixture
msg = e.value.msg
assert msg.startswith('assert <classes.ValueAndString object'), msg
E AssertionError: ValueError: ValueAndString(2, 'lkajflaskjfalskf') << Error!
While debugging I found out that the ValueAndString constructor was being called 3 times, instead of 2. The 3rd call happened in code.py:100, which is part of the py lib <https://bitbucket.org/hpk42/py> library. The “wrong” behaviour can be seen on the run_pyframe_eval.py <https://gist.github.com/edisongustavo/5533a1c36de6cab6f39a#file-run_pyframe_...> .
I’ve tested this code on Pytest 2.6.4 with Python 2.7.8 in Windows 7 - 64bits.
_______________________________________________ pytest-dev mailing list pytest-dev@python.org https://mail.python.org/mailman/listinfo/pytest-dev