All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.py.rules.python.S5905.html Maven / Gradle / Ivy

There is a newer version: 4.23.0.17664
Show newest version

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





© 2015 - 2024 Weber Informatics LLC | Privacy Policy