|
22 | 22 | import java.util.ArrayList;
|
23 | 23 | import java.util.List;
|
24 | 24 | import org.junit.jupiter.api.Test;
|
| 25 | +import org.sonar.plugins.python.api.tree.Argument; |
25 | 26 | import org.sonar.plugins.python.api.tree.BaseTreeVisitor;
|
| 27 | +import org.sonar.plugins.python.api.tree.CallExpression; |
26 | 28 | import org.sonar.plugins.python.api.tree.Expression;
|
27 | 29 | import org.sonar.plugins.python.api.tree.FileInput;
|
28 | 30 | import org.sonar.plugins.python.api.tree.Name;
|
|
37 | 39 | import org.sonar.python.tree.TreeUtils;
|
38 | 40 |
|
39 | 41 | import static org.assertj.core.api.Assertions.assertThat;
|
| 42 | +import static org.sonar.python.checks.utils.Expressions.containsSpreadOperator; |
40 | 43 | import static org.sonar.python.checks.utils.Expressions.getAssignedName;
|
41 | 44 | import static org.sonar.python.checks.utils.Expressions.isFalsy;
|
42 | 45 | import static org.sonar.python.checks.utils.Expressions.isTruthy;
|
@@ -213,6 +216,26 @@ void unescape_string_element_invalid_escape_sequences() {
|
213 | 216 |
|
214 | 217 | }
|
215 | 218 |
|
| 219 | + @Test |
| 220 | + void testContainsSpreadOperator() { |
| 221 | + assertThat(containsSpreadOperator(args("some(**some_dict)"))).isTrue(); |
| 222 | + assertThat(containsSpreadOperator(args("some(**{})"))).isTrue(); |
| 223 | + assertThat(containsSpreadOperator(args("some(1, test=True, **some_dict)"))).isTrue(); |
| 224 | + assertThat(containsSpreadOperator(args("some(*some_list)"))).isTrue(); |
| 225 | + assertThat(containsSpreadOperator(args("some(*[])"))).isTrue(); |
| 226 | + assertThat(containsSpreadOperator(args("some(1, test=True, *some_list)"))).isTrue(); |
| 227 | + |
| 228 | + |
| 229 | + assertThat(containsSpreadOperator(args("some(1, test=True)"))).isFalse(); |
| 230 | + assertThat(containsSpreadOperator(args("some()"))).isFalse(); |
| 231 | + } |
| 232 | + |
| 233 | + private List<Argument> args(String source) { |
| 234 | + Expression callExpr = exp(source); |
| 235 | + assertThat(callExpr).isInstanceOf(CallExpression.class); |
| 236 | + return ((CallExpression) callExpr).arguments(); |
| 237 | + } |
| 238 | + |
216 | 239 | private StringElement stringElement(String source) {
|
217 | 240 | return stringLiteral(source).stringElements().get(0);
|
218 | 241 | }
|
|
0 commit comments