summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-12-13 00:40:49 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-12-13 00:40:49 +0000
commit3a5e4317f569abc860a8554f6dcdd573e5211adb (patch)
tree1f6204ce658d43b72f270a2272e99488d35a4107
parentd2eb007bf0b3d362abb914f0851ac495ec39e50d (diff)
test_voicemail_api: Add check for a registered voicemail provider before tests.
It is much nicer diagnosing a test failure if app_voicemail is actually loaded. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@403726 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--include/asterisk/app.h9
-rw-r--r--main/app.c11
-rw-r--r--tests/test_voicemail_api.c5
3 files changed, 24 insertions, 1 deletions
diff --git a/include/asterisk/app.h b/include/asterisk/app.h
index 2b5d5bf16..623f0884e 100644
--- a/include/asterisk/app.h
+++ b/include/asterisk/app.h
@@ -568,6 +568,15 @@ struct ast_vm_functions {
};
/*!
+ * \brief Determine if a voicemail provider is registered.
+ * \since 13.0.0
+ *
+ * \retval 0 if no privider registered.
+ * \retval 1 if a privider is registered.
+ */
+int ast_vm_is_registered(void);
+
+/*!
* \brief Set voicemail function callbacks
*
* \param vm_table Voicemail function table to install.
diff --git a/main/app.c b/main/app.c
index 140afde7b..579984dab 100644
--- a/main/app.c
+++ b/main/app.c
@@ -432,6 +432,17 @@ static AO2_GLOBAL_OBJ_STATIC(vm_provider);
/*! Voicemail not registered warning */
static int vm_warnings;
+int ast_vm_is_registered(void)
+{
+ struct ast_vm_functions *table;
+ int is_registered;
+
+ table = ao2_global_obj_ref(vm_provider);
+ is_registered = table ? 1 : 0;
+ ao2_cleanup(table);
+ return is_registered;
+}
+
int __ast_vm_register(const struct ast_vm_functions *vm_table, struct ast_module *module)
{
RAII_VAR(struct ast_vm_functions *, table, NULL, ao2_cleanup);
diff --git a/tests/test_voicemail_api.c b/tests/test_voicemail_api.c
index 2357b0a3d..01efeeec2 100644
--- a/tests/test_voicemail_api.c
+++ b/tests/test_voicemail_api.c
@@ -72,7 +72,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
* envelope files on the file system
*/
#define VM_API_TEST_SETUP do { \
- if (test_vm_api_test_setup()) { \
+ if (!ast_vm_is_registered()) { \
+ ast_test_status_update(test, "No voicemail provider registered.\n"); \
+ return AST_TEST_FAIL; \
+ } else if (test_vm_api_test_setup()) { \
VM_API_TEST_CLEANUP; \
ast_test_status_update(test, "Failed to set up necessary mock objects for voicemail API test\n"); \
return AST_TEST_FAIL; \