summaryrefslogtreecommitdiff
path: root/include/asterisk/test.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asterisk/test.h')
-rw-r--r--include/asterisk/test.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/asterisk/test.h b/include/asterisk/test.h
index 2ea8332b1..69f88374e 100644
--- a/include/asterisk/test.h
+++ b/include/asterisk/test.h
@@ -389,6 +389,28 @@ int __ast_test_status_update(const char *file, const char *func, int line, struc
} \
} while(0)
+/*!
+ * \brief Check a test condition, report error and goto cleanup label if failed.
+ *
+ * \since 13.4.0
+ *
+ * This macro evaluates \a condition. If the condition evaluates to true (non-zero),
+ * nothing happens. If it evaluates to false (zero), then the failure is printed
+ * using \ref ast_test_status_update, the variable \a rc_variable is set to AST_TEST_FAIL,
+ * and a goto to \a cleanup_label is executed.
+ *
+ * \param test Currently executing test
+ * \param condition Boolean condition to check.
+ * \param rc_variable Variable to receive AST_TEST_FAIL.
+ * \param cleanup_label The label to go to on failure.
+ */
+#define ast_test_validate_cleanup(test, condition, rc_variable, cleanup_label) ({ \
+ if (!(condition)) { \
+ ast_test_status_update((test), "%s: %s\n", "Condition failed", #condition); \
+ rc_variable = AST_TEST_FAIL; \
+ goto cleanup_label; \
+ } \
+})
#endif /* TEST_FRAMEWORK */
#endif /* _AST_TEST_H */