58 lines
1.3 KiB
Plaintext
58 lines
1.3 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Using the ``++assert++`` statement on a tuple literal will always fail if the tuple is empty, and always succeed otherwise.
|
|
|
|
|
|
The ``++assert++`` statement does not have 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.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,python]
|
|
----
|
|
def test_values(a, b):
|
|
assert (a, b) # Noncompliant
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,python]
|
|
----
|
|
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
|
|
|
|
* https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement[Python documentation - The ``++assert++`` statement]
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
include::highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|