fix #4649 - also transfer markers to keywordmapping

as it turns out it is distinct from nodekeywords and behaves completely different
This commit is contained in:
Ronny Pfannschmidt 2019-01-18 22:05:41 +01:00
parent 6154a5ac02
commit f28b834426
5 changed files with 19 additions and 4 deletions

View File

@ -0,0 +1 @@
Restore marks being considered keywords for keyword expressions.

View File

@ -45,13 +45,14 @@ class KeywordMapping(object):
mapped_names.add(item.name)
# Add the names added as extra keywords to current or parent items
for name in item.listextrakeywords():
mapped_names.add(name)
mapped_names.update(item.listextrakeywords())
# Add the names attached to the current function through direct assignment
if hasattr(item, "function"):
for name in item.function.__dict__:
mapped_names.add(name)
mapped_names.update(item.function.__dict__)
# add the markers to the keywords as we no longer handle them correctly
mapped_names.update(mark.name for mark in item.iter_markers())
return cls(mapped_names)

View File

@ -0,0 +1,6 @@
import pytest
@pytest.mark.foo
def test_mark():
pass

View File

@ -292,6 +292,13 @@ def test_keyword_option_custom(spec, testdir):
assert list(passed) == list(passed_result)
def test_keyword_option_considers_mark(testdir):
testdir.copy_example("marks/marks_considered_keywords")
rec = testdir.inline_run("-k", "foo")
passed = rec.listoutcomes()[0]
assert len(passed) == 1
@pytest.mark.parametrize(
"spec",
[