This rule raises an issue when using an `assert`

statement on a tuple literal.

## Why is this an issue?

When tested for truthiness, a sequence or collection will evaluate to `False`

if it is empty (its `__len__`

method returns 0)
and to `True`

if it contains at least one element.

Using the `assert`

statement on a tuple literal will therefore always fail if the tuple is empty, and always succeed otherwise.

The `assert`

statement does not take parentheses around its parameters. Calling `assert(x, y)`

will test if the tuple
`(x, y)`

is True, which is always the case.

There are two possible fixes:

- If your intention is to test the first value of the tuple and use the second value as a message, simply remove the parentheses.
- If your intention is to check that every element of the tuple is
`True`

, test each value separately.

### Code examples

#### Noncompliant code example

def test_values(a, b):
assert (a, b) # Noncompliant: will always be True

#### Compliant solution

def test_values(a, b):
# If you mean to test "a" and use "b" as an error message
assert a, b
# If you mean to test the values of "a" and "b"
assert a and b

## Resources