mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 12:16:00 +00:00
Merge "unittests: Add a unit test that causes a SEGV and..."
This commit is contained in:
@@ -241,6 +241,14 @@ struct ast_test_info {
|
||||
* \note The description must not end with a newline.
|
||||
*/
|
||||
const char *description;
|
||||
/*!
|
||||
* \brief Only run if explicitly named
|
||||
*
|
||||
* \details
|
||||
* Run this test only if it's explicitly named on the command line.
|
||||
* Do NOT run it as part of an execute category or execute all command.
|
||||
*/
|
||||
unsigned int explicit_only;
|
||||
};
|
||||
|
||||
#ifdef TEST_FRAMEWORK
|
||||
|
@@ -344,7 +344,7 @@ static int test_execute_multiple(const char *name, const char *category, struct
|
||||
execute = 0;
|
||||
switch (mode) {
|
||||
case TEST_CATEGORY:
|
||||
if (!test_cat_cmp(test->info.category, category)) {
|
||||
if (!test_cat_cmp(test->info.category, category) && !test->info.explicit_only) {
|
||||
execute = 1;
|
||||
}
|
||||
break;
|
||||
@@ -354,7 +354,7 @@ static int test_execute_multiple(const char *name, const char *category, struct
|
||||
}
|
||||
break;
|
||||
case TEST_ALL:
|
||||
execute = 1;
|
||||
execute = !test->info.explicit_only;
|
||||
}
|
||||
|
||||
if (execute) {
|
||||
|
@@ -321,8 +321,29 @@ cleanup:
|
||||
return res;
|
||||
}
|
||||
|
||||
AST_TEST_DEFINE(segv)
|
||||
{
|
||||
switch (cmd) {
|
||||
case TEST_INIT:
|
||||
info->name = "RAISE_SEGV";
|
||||
info->category = "/DO_NOT_RUN/";
|
||||
info->summary = "RAISES SEGV!!! (will only be run if explicitly called)";
|
||||
info->description = "RAISES SEGV!!! (will only be run if explicitly called). "
|
||||
"This test is mainly used for testing CI and tool failure scenarios.";
|
||||
info->explicit_only = 1;
|
||||
return AST_TEST_NOT_RUN;
|
||||
case TEST_EXECUTE:
|
||||
break;
|
||||
}
|
||||
|
||||
raise(SIGSEGV);
|
||||
|
||||
return AST_TEST_FAIL;
|
||||
}
|
||||
|
||||
static int unload_module(void)
|
||||
{
|
||||
AST_TEST_UNREGISTER(segv);
|
||||
AST_TEST_UNREGISTER(pattern_match_test);
|
||||
return 0;
|
||||
}
|
||||
@@ -330,6 +351,7 @@ static int unload_module(void)
|
||||
static int load_module(void)
|
||||
{
|
||||
AST_TEST_REGISTER(pattern_match_test);
|
||||
AST_TEST_REGISTER(segv);
|
||||
return AST_MODULE_LOAD_SUCCESS;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user