zephyr/scripts/coccinelle/ztest_strcmp.cocci
Rubin Gerritsen 470a0fcaa5 cocinelle: Add a sematic patch file for ztest string assertions
ztest now provides functionality to compare strings.
These are simpler to use than the strcmp ways.

The semantic patch transforms many of the commonly used patterns.
It does not handle variable length macros.

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2024-06-14 19:25:42 +02:00

79 lines
1.7 KiB
Text

/// Find cases where ztest string comparisons macros can be used
// Copyright: (C) 2024 Nordic Semiconductor ASA
// SPDX-License-Identifier: Apache-2.0
// Confidence: LOW
// Options: --no-includes --include-headers
virtual patch
virtual context
virtual org
virtual report
// Comparing result of strcmp with 0
@@ expression E1,E2; @@
- zassert_equal(strcmp(E1, E2), 0);
+ zassert_str_equal(E1, E2);
@@ expression E1,E2,E3; @@
- zassert_equal(strcmp(E1, E2), 0, E3);
+ zassert_str_equal(E1, E2, E3);
@@ expression E1,E2; @@
- zassert_equal(0, strcmp(E1, E2));
+ zassert_str_equal(E1, E2);
@@ expression E1,E2,E3; @@
- zassert_equal(0, !strcmp(E1, E2), E3);
+ zassert_str_equal(E1, E2, E3);
// Using assert_true with !strcmp
@@ expression E1,E2; @@
- zassert_true(!strcmp(E1, E2));
+ zassert_str_equal(E1, E2);
@@ expression E1,E2,E3; @@
- zassert_true(!strcmp(E1, E2), E3);
+ zassert_str_equal(E1, E2, E3);
// using zassert_true with strcmp(E1, E2) == 0
@@expression E1,E2; @@
- zassert_true(strcmp(E1, E2) == 0);
+ zassert_str_equal(E1, E2);
@@expression E1,E2; @@
- zassert_true((strcmp(E1, E2) == 0));
+ zassert_str_equal(E1, E2);
@@expression E1,E2,E3; @@
- zassert_true(strcmp(E1, E2) == 0, E3);
+ zassert_str_equal(E1, E2, E3);
@@expression E1,E2,E3; @@
- zassert_true((strcmp(E1, E2) == 0), E3);
+ zassert_str_equal(E1, E2, E3);
// using zassert_true with 0 == strcmp(E1, E2)
@@expression E1,E2; @@
- zassert_true(0 == strcmp(E1, E2));
+ zassert_str_equal(E1, E2);
@@expression E1,E2; @@
- zassert_true((0 == strcmp(E1, E2)));
+ zassert_str_equal(E1, E2);
@@expression E1,E2,E3; @@
- zassert_true(0 == strcmp(E1, E2), E3);
+ zassert_str_equal(E1, E2, E3);
@@expression E1,E2,E3; @@
- zassert_true((0 == strcmp(E1, E2)), E3);
+ zassert_str_equal(E1, E2, E3);