merge, add changelog entry

This commit is contained in:
holger krekel 2013-11-02 07:04:26 +01:00
commit a9d1f40c29
3 changed files with 24 additions and 5 deletions

View File

@ -1,6 +1,8 @@
Changes between 2.4.2 and 2.4.3 Unreleased
----------------------------------- -----------------------------------
- allow nested parametrize-value markers, thanks James Lan for the PR.
- fix unicode handling with new monkeypatch.setattr(import_path, value) - fix unicode handling with new monkeypatch.setattr(import_path, value)
API. Thanks Rob Dennis. Fixes issue371. API. Thanks Rob Dennis. Fixes issue371.
@ -30,6 +32,7 @@ Changes between 2.4.2 and 2.4.3
arg is an lambda and thus the example will work. Thanks Alex Gaynor arg is an lambda and thus the example will work. Thanks Alex Gaynor
for bringing it up. for bringing it up.
Changes between 2.4.1 and 2.4.2 Changes between 2.4.1 and 2.4.2
----------------------------------- -----------------------------------

View File

@ -693,16 +693,17 @@ class Metafunc(FuncargnamesCompatAttr):
to set a dynamic scope using test context or configuration. to set a dynamic scope using test context or configuration.
""" """
# individual parametrized argument sets can be wrapped in a # individual parametrized argument sets can be wrapped in a series
# marker in which case we unwrap the values and apply the mark # of markers in which case we unwrap the values and apply the mark
# at Function init # at Function init
newkeywords = {} newkeywords = {}
unwrapped_argvalues = [] unwrapped_argvalues = []
for i, argval in enumerate(argvalues): for i, argval in enumerate(argvalues):
if isinstance(argval, MarkDecorator): while isinstance(argval, MarkDecorator):
newmark = MarkDecorator(argval.markname, newmark = MarkDecorator(argval.markname,
argval.args[:-1], argval.kwargs) argval.args[:-1], argval.kwargs)
newkeywords[i] = {newmark.markname: newmark} newmarks = newkeywords.setdefault(i, {})
newmarks[newmark.markname] = newmark
argval = argval.args[-1] argval = argval.args[-1]
unwrapped_argvalues.append(argval) unwrapped_argvalues.append(argval)
argvalues = unwrapped_argvalues argvalues = unwrapped_argvalues

View File

@ -355,6 +355,21 @@ class TestFunction:
rec = testdir.inline_run() rec = testdir.inline_run()
rec.assertoutcome(passed=2) rec.assertoutcome(passed=2)
def test_parametrize_with_mark(selfself, testdir):
items = testdir.getitems("""
import pytest
@pytest.mark.foo
@pytest.mark.parametrize('arg', [
1,
pytest.mark.bar(pytest.mark.baz(2))
])
def test_function(arg):
pass
""")
keywords = [item.keywords for item in items]
assert 'foo' in keywords[0] and 'bar' not in keywords[0] and 'baz' not in keywords[0]
assert 'foo' in keywords[1] and 'bar' in keywords[1] and 'baz' in keywords[1]
def test_function_equality_with_callspec(self, testdir, tmpdir): def test_function_equality_with_callspec(self, testdir, tmpdir):
items = testdir.getitems(""" items = testdir.getitems("""
import pytest import pytest