summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGeorge Joseph <gjoseph@digium.com>2017-05-24 14:50:56 -0600
committerGeorge Joseph <gjoseph@digium.com>2017-05-24 15:58:18 -0500
commit08edd54c1b11ec35bfa988bf9d3115e6ae9a94f3 (patch)
tree1d429d967a3cd0a7a1598a865c484e51fe987348 /tests
parent2e7866ebb7773fdd4f67e80f3747e41d84bcb93b (diff)
unittests: Add a unit test that causes a SEGV and...
...that can only be run by explicitly calling it with 'test execute category /DO_NOT_RUN/ name RAISE_SEGV' This allows us to more easily test CI and debugging tools that should do certain things when asterisk coredumps. To allow this a new member was added to the ast_test_info structure named 'explicit_only'. If set by a test, the test will be skipped during a 'test execute all' or 'test execute category ...'. Change-Id: Ia3a11856aae4887df9a02b6b081cc777b36eb6ed
Diffstat (limited to 'tests')
-rw-r--r--tests/test_pbx.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/test_pbx.c b/tests/test_pbx.c
index 576fe1fb8..00fa41130 100644
--- a/tests/test_pbx.c
+++ b/tests/test_pbx.c
@@ -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;
}