Merge pull request #4057 from jeffreyrack/4051-improve-error-messaging

Improve error messaging when invalid syntax is passed to the -m option
This commit is contained in:
Ronny Pfannschmidt 2018-10-01 07:16:59 +02:00 committed by GitHub
commit 5d2d64c190
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 1 deletions

View File

@ -0,0 +1 @@
Imrpove Error messaging when Invalid Python Syntax is passed through the ``-m`` option to limit what marks to run against.

View File

@ -66,7 +66,10 @@ python_keywords_allowed_list = ["or", "and", "not"]
def matchmark(colitem, markexpr): def matchmark(colitem, markexpr):
"""Tries to match on any marker names, attached to the given colitem.""" """Tries to match on any marker names, attached to the given colitem."""
try:
return eval(markexpr, {}, MarkMapping.from_item(colitem)) return eval(markexpr, {}, MarkMapping.from_item(colitem))
except SyntaxError as e:
raise SyntaxError(str(e) + "\nMarker expression must be valid Python!")
def matchkeyword(colitem, keywordexpr): def matchkeyword(colitem, keywordexpr):

View File

@ -799,6 +799,18 @@ class TestFunctional(object):
deselected_tests = dlist[0].items deselected_tests = dlist[0].items
assert len(deselected_tests) == 2 assert len(deselected_tests) == 2
def test_invalid_m_option(self, testdir):
testdir.makepyfile(
"""
def test_a():
pass
"""
)
result = testdir.runpytest("-m bogus/")
result.stdout.fnmatch_lines(
["INTERNALERROR> Marker expression must be valid Python!"]
)
def test_keywords_at_node_level(self, testdir): def test_keywords_at_node_level(self, testdir):
testdir.makepyfile( testdir.makepyfile(
""" """