From daea773fce00eb460612df70522f06c4721ce47d Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 14 Jun 2024 17:23:23 +0200 Subject: [PATCH] Python: tests with false positives around `match` --- .../Functions/return_values/ConsistentReturns.expected | 1 + .../Functions/return_values/functions_test.py | 10 +++++++++- .../Statements/unreachable/UnreachableCode.expected | 2 ++ .../ql/test/query-tests/Statements/unreachable/test.py | 9 +++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected b/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected index 7c0bad373b3..62289acfe3f 100644 --- a/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected +++ b/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected @@ -1,2 +1,3 @@ | functions_test.py:18:1:18:11 | Function cr1 | Mixing implicit and explicit returns may indicate an error as implicit returns always return None. | | functions_test.py:22:1:22:11 | Function cr2 | Mixing implicit and explicit returns may indicate an error as implicit returns always return None. | +| functions_test.py:336:1:336:16 | Function ok_match | Mixing implicit and explicit returns may indicate an error as implicit returns always return None. | diff --git a/python/ql/test/query-tests/Functions/return_values/functions_test.py b/python/ql/test/query-tests/Functions/return_values/functions_test.py index c8a7cf37734..409cbb30fd9 100644 --- a/python/ql/test/query-tests/Functions/return_values/functions_test.py +++ b/python/ql/test/query-tests/Functions/return_values/functions_test.py @@ -330,4 +330,12 @@ def indirectly_returning_different_tuple_sizes(x): def mismatched_multi_assign(x): a,b = returning_different_tuple_sizes(x) - return a,b \ No newline at end of file + return a,b + + +def ok_match(x): # FP + match x: + case True | 'true': + return 0 + case _: + raise ValueError(x) diff --git a/python/ql/test/query-tests/Statements/unreachable/UnreachableCode.expected b/python/ql/test/query-tests/Statements/unreachable/UnreachableCode.expected index 2417041f472..013d7a0fe68 100644 --- a/python/ql/test/query-tests/Statements/unreachable/UnreachableCode.expected +++ b/python/ql/test/query-tests/Statements/unreachable/UnreachableCode.expected @@ -4,3 +4,5 @@ | test.py:21:5:21:38 | For | This statement is unreachable. | | test.py:28:9:28:21 | ExprStmt | This statement is unreachable. | | test.py:84:5:84:21 | ExceptStmt | This statement is unreachable. | +| test.py:144:13:144:16 | Pass | This statement is unreachable. | +| test.py:147:9:148:16 | Case | This statement is unreachable. | diff --git a/python/ql/test/query-tests/Statements/unreachable/test.py b/python/ql/test/query-tests/Statements/unreachable/test.py index 493dcc24dd1..a58f4172b1b 100755 --- a/python/ql/test/query-tests/Statements/unreachable/test.py +++ b/python/ql/test/query-tests/Statements/unreachable/test.py @@ -137,3 +137,12 @@ def unreachable_catch_all_raise(x): pass else: raise ValueError(x) + +def ok_match(x): + match x: + case False: + pass # FP + case True: + pass + case _: # FP + pass