aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
authorVincent Mailhol <mailhol@kernel.org>2025-09-23 00:53:21 +0900
committerChris Li <sparse@chrisli.org>2025-09-23 23:43:00 -0700
commitc47766ce0620001dfaf201674c990cde2e10423e (patch)
tree84c188195a70f478622e2466a3664470f1327e59
parent0196afe16a50c76302921b139d412e82e5be2349 (diff)
downloadsparse-dev-c47766ce0620001dfaf201674c990cde2e10423e.tar.gz
vadidation: add used-to-be-signed unit tests
Add unit tests for the new used-to-be-signed check as introduced in [1]: Results before applying [1]: $ ./test-suite used-to-be-signed.c TEST used-to-be-signed (used-to-be-signed.c) error: actual error text does not match expected error text. error: see used-to-be-signed.c.error.* for further investigation. --- used-to-be-signed.c.error.expected 2025-09-23 00:50:07.079654644 +0900 +++ used-to-be-signed.c.error.got 2025-09-23 00:50:07.073654719 +0900 @@ -1,8 +0,0 @@ -used-to-be-signed.c:8:19: warning: unsigned value that used to be signed checked against zero? -used-to-be-signed.c:6:33: signed value source -used-to-be-signed.c:11:17: warning: unsigned value that used to be signed checked against zero? -used-to-be-signed.c:6:33: signed value source -used-to-be-signed.c:14:20: warning: unsigned value that used to be signed checked against zero? -used-to-be-signed.c:6:33: signed value source -used-to-be-signed.c:17:18: warning: unsigned value that used to be signed checked against zero? -used-to-be-signed.c:6:33: signed value source error: FAIL: test 'used-to-be-signed.c' failed KO: out of 1 tests, 0 passed, 1 failed ...and after: $ ./test-suite used-to-be-signed.c TEST used-to-be-signed (used-to-be-signed.c) OK: out of 1 tests, 1 passed, 0 failed [1] Warn about "unsigned value that used to be signed against zero" Link: https://lore.kernel.org/linux-sparse/20250921061337.3047616-1-mailhol@kernel.org/ Signed-off-by: Vincent Mailhol <mailhol@kernel.org> Signed-off-by: Chris Li <sparse@chrisli.org>
-rw-r--r--validation/used-to-be-signed.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/validation/used-to-be-signed.c b/validation/used-to-be-signed.c
new file mode 100644
index 00000000..75eab7f3
--- /dev/null
+++ b/validation/used-to-be-signed.c
@@ -0,0 +1,49 @@
+void error(void);
+int check(void);
+
+static void positive_tests(unsigned int val)
+{
+ unsigned int ret = check();
+
+ if (ret < 0)
+ error();
+
+ if (0 > ret)
+ error();
+
+ if (ret >= 0)
+ /* Do stuff */;
+
+ if (0 <= ret)
+ /* Do stuff */;
+}
+
+static void negative_tests(unsigned int val)
+{
+ if (val < 0 || val > 42)
+ error();
+
+ if (0 > val || 42 < val)
+ error();
+
+ if (val >= 0 && val < 42)
+ /* Do stuff */;
+
+ if (0 <= val && 42 > val)
+ /* Do stuff */;
+}
+
+/*
+ * check-name: used-to-be-signed
+ *
+ * check-error-start
+used-to-be-signed.c:8:19: warning: unsigned value that used to be signed checked against zero?
+used-to-be-signed.c:6:33: signed value source
+used-to-be-signed.c:11:17: warning: unsigned value that used to be signed checked against zero?
+used-to-be-signed.c:6:33: signed value source
+used-to-be-signed.c:14:20: warning: unsigned value that used to be signed checked against zero?
+used-to-be-signed.c:6:33: signed value source
+used-to-be-signed.c:17:18: warning: unsigned value that used to be signed checked against zero?
+used-to-be-signed.c:6:33: signed value source
+ * check-error-end
+ */