Do not trigger warning about tuples being always True if the tuple has size != 2

This commit is contained in:
Bruno Oliveira 2018-09-04 13:41:11 -03:00
parent 615c671434
commit 9ae0a3cd85
2 changed files with 13 additions and 4 deletions

View File

@ -750,7 +750,7 @@ class AssertionRewriter(ast.NodeVisitor):
the expression is false.
"""
if isinstance(assert_.test, ast.Tuple):
if isinstance(assert_.test, ast.Tuple) and len(assert_.test.elts) == 2:
from _pytest.warning_types import PytestWarning
import warnings

View File

@ -1077,16 +1077,25 @@ def test_diff_newline_at_end(monkeypatch, testdir):
@pytest.mark.filterwarnings("default")
def test_assert_tuple_warning(testdir):
msg = "assertion is always true"
testdir.makepyfile(
"""
def test_tuple():
assert(False, 'you shall not pass')
"""
)
result = testdir.runpytest("-rw")
result.stdout.fnmatch_lines(
["*test_assert_tuple_warning.py:2:*assertion is always true*"]
result = testdir.runpytest()
result.stdout.fnmatch_lines(["*test_assert_tuple_warning.py:2:*{}*".format(msg)])
# tuples with size != 2 should not trigger the warning
testdir.makepyfile(
"""
def test_tuple():
assert ()
"""
)
result = testdir.runpytest()
assert msg not in result.stdout.str()
def test_assert_indirect_tuple_no_warning(testdir):