From da8450323f9d391737bfeff42306905b27419942 Mon Sep 17 00:00:00 2001
From: Tilghman Lesher <tilghman@meg.abyt.es>
Date: Fri, 9 Jul 2010 17:00:22 +0000
Subject: [PATCH] Kill some startup warnings and errors and make some messages
 more helpful in tracking down the source.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@275105 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_meetme.c                  |  2 +-
 apps/app_voicemail.c               |  8 ++++----
 channels/chan_iax2.c               |  4 ++--
 channels/chan_sip.c                |  2 +-
 channels/sip/config_parser.c       |  4 ++--
 channels/sip/dialplan_functions.c  |  2 +-
 channels/sip/reqresp_parser.c      | 16 ++++++++--------
 funcs/func_math.c                  |  2 +-
 funcs/func_strings.c               |  2 +-
 include/asterisk/channel.h         |  8 ++++----
 include/asterisk/netsock2.h        | 15 ++++++++++-----
 main/data.c                        |  2 +-
 main/features.c                    |  2 +-
 main/netsock2.c                    | 21 +++++++++++----------
 main/test.c                        |  2 +-
 res/res_agi.c                      |  2 +-
 res/res_timing_kqueue.c            |  2 +-
 tests/test_acl.c                   |  4 ++--
 tests/test_aoc.c                   |  4 ++--
 tests/test_app.c                   |  4 ++--
 tests/test_ast_format_str_reduce.c |  2 +-
 tests/test_astobj2.c               |  2 +-
 tests/test_devicestate.c           |  2 +-
 tests/test_event.c                 |  4 ++--
 tests/test_gosub.c                 |  2 +-
 tests/test_heap.c                  |  6 +++---
 tests/test_pbx.c                   |  2 +-
 tests/test_sched.c                 |  2 +-
 tests/test_skel.c                  |  2 +-
 tests/test_stringfields.c          |  2 +-
 tests/test_strings.c               |  2 +-
 tests/test_substitution.c          |  2 +-
 tests/test_time.c                  |  2 +-
 tests/test_utils.c                 |  8 ++++----
 34 files changed, 77 insertions(+), 71 deletions(-)

diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index be1d36375d..831449ce63 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -6849,7 +6849,7 @@ AST_TEST_DEFINE(test_meetme_data_provider)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "meetme_get_data_test";
-		info->category = "main/data/app_meetme/list";
+		info->category = "/main/data/app_meetme/list/";
 		info->summary = "Meetme data provider unit test";
 		info->description =
 			"Tests whether the Meetme data provider implementation works as expected.";
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 4e7a26e79d..18867028bc 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -10359,7 +10359,7 @@ AST_TEST_DEFINE(test_voicemail_vmuser)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "vmuser";
-		info->category = "apps/app_voicemail/";
+		info->category = "/apps/app_voicemail/";
 		info->summary = "Vmuser unit test";
 		info->description =
 			"This tests passing all supported parameters to apply_options, the voicemail user config parser";
@@ -12110,7 +12110,7 @@ AST_TEST_DEFINE(test_voicemail_vmsayname)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "vmsayname_exec";
-		info->category = "apps/app_voicemail/";
+		info->category = "/apps/app_voicemail/";
 		info->summary = "Vmsayname unit test";
 		info->description =
 			"This tests passing various parameters to vmsayname";
@@ -12207,7 +12207,7 @@ AST_TEST_DEFINE(test_voicemail_msgcount)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "test_voicemail_msgcount";
-		info->category = "apps/app_voicemail/";
+		info->category = "/apps/app_voicemail/";
 		info->summary = "Test Voicemail status checks";
 		info->description =
 			"Verify that message counts are correct when retrieved through the public API";
@@ -12375,7 +12375,7 @@ AST_TEST_DEFINE(test_voicemail_notify_endl)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "test_voicemail_notify_endl";
-		info->category = "apps/app_voicemail/";
+		info->category = "/apps/app_voicemail/";
 		info->summary = "Test Voicemail notification end-of-line";
 		info->description =
 			"Verify that notification emails use a consistent end-of-line character";
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 7880e719de..7db0215816 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -13887,7 +13887,7 @@ AST_TEST_DEFINE(test_iax2_peers_get)
 	switch (cmd) {
 		case TEST_INIT:
 			info->name = "iax2_peers_get_data_test";
-			info->category = "main/data/iax2/peers";
+			info->category = "/main/data/iax2/peers/";
 			info->summary = "IAX2 peers data providers unit test";
 			info->description =
 				"Tests whether the IAX2 peers data provider implementation works as expected.";
@@ -13947,7 +13947,7 @@ AST_TEST_DEFINE(test_iax2_users_get)
 	switch (cmd) {
 		case TEST_INIT:
 			info->name = "iax2_users_get_data_test";
-			info->category = "main/data/iax2/users";
+			info->category = "/main/data/iax2/users/";
 			info->summary = "IAX2 users data providers unit test";
 			info->description =
 				"Tests whether the IAX2 users data provider implementation works as expected.";
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index ad6e00ab2c..a93dea2b82 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -27673,7 +27673,7 @@ AST_TEST_DEFINE(test_sip_peers_get)
 	switch (cmd) {
 		case TEST_INIT:
 			info->name = "sip_peers_get_data_test";
-			info->category = "main/data/sip/peers";
+			info->category = "/main/data/sip/peers/";
 			info->summary = "SIP peers data providers unit test";
 			info->description =
 				"Tests whether the SIP peers data provider implementation works as expected.";
diff --git a/channels/sip/config_parser.c b/channels/sip/config_parser.c
index 988231f128..659e8cecc3 100644
--- a/channels/sip/config_parser.c
+++ b/channels/sip/config_parser.c
@@ -288,7 +288,7 @@ AST_TEST_DEFINE(sip_parse_register_line_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_parse_register_line_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "tests sip register line parsing";
 		info->description =
 							"Tests parsing of various register line configurations. "
@@ -696,7 +696,7 @@ AST_TEST_DEFINE(sip_parse_host_line_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_parse_host_line_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "tests sip.conf host line parsing";
 		info->description =
 							"Tests parsing of various host line configurations. "
diff --git a/channels/sip/dialplan_functions.c b/channels/sip/dialplan_functions.c
index 6e1f65b84f..e14975d5dd 100644
--- a/channels/sip/dialplan_functions.c
+++ b/channels/sip/dialplan_functions.c
@@ -316,7 +316,7 @@ AST_TEST_DEFINE(test_sip_rtpqos_1)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "test_sip_rtpqos";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "Test retrieval of SIP RTP QOS stats";
 		info->description =
 			"Verify values in the RTP instance structure can be accessed through the dialplan.";
diff --git a/channels/sip/reqresp_parser.c b/channels/sip/reqresp_parser.c
index eb5c1803e4..ddfc304c68 100644
--- a/channels/sip/reqresp_parser.c
+++ b/channels/sip/reqresp_parser.c
@@ -428,7 +428,7 @@ AST_TEST_DEFINE(sip_parse_uri_fully_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_uri_full_parse_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "tests sip full uri parsing";
 		info->description =
 			"Tests full parsing of various URIs "
@@ -501,7 +501,7 @@ AST_TEST_DEFINE(sip_parse_uri_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_uri_parse_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "tests sip uri parsing";
 		info->description =
 							"Tests parsing of various URIs "
@@ -758,7 +758,7 @@ AST_TEST_DEFINE(get_calleridname_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_get_calleridname_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "decodes callerid name from sip header";
 		info->description = "Decodes display-name field of sip header.  Checks for valid output and expected failure cases.";
 		return AST_TEST_NOT_RUN;
@@ -872,7 +872,7 @@ AST_TEST_DEFINE(get_name_and_number_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_get_name_and_number_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "Tests getting name and number from sip header";
 		info->description =
 				"Runs through various test situations in which a name and "
@@ -1056,7 +1056,7 @@ AST_TEST_DEFINE(get_in_brackets_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_get_in_brackets_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "Tests getting a sip uri in <> brackets within a sip header.";
 		info->description =
 				"Runs through various test situations in which a sip uri "
@@ -1266,7 +1266,7 @@ AST_TEST_DEFINE(parse_name_andor_addr_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "parse_name_andor_addr_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "tests parsing of name_andor_addr abnf structure";
 		info->description =
 			"Tests parsing of abnf name-andor-addr = name-addr / addr-spec "
@@ -1496,7 +1496,7 @@ AST_TEST_DEFINE(parse_contact_header_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "parse_contact_header_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "tests parsing of sip contact header";
 		info->description =
 			"Tests parsing of a contact header including those with multiple contacts "
@@ -1714,7 +1714,7 @@ AST_TEST_DEFINE(sip_parse_options_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sip_parse_options_test";
-		info->category = "channels/chan_sip/";
+		info->category = "/channels/chan_sip/";
 		info->summary = "Tests parsing of sip options";
 		info->description =
 							"Tests parsing of SIP options from supported and required "
diff --git a/funcs/func_math.c b/funcs/func_math.c
index de9120d5b3..f3a690c5d6 100644
--- a/funcs/func_math.c
+++ b/funcs/func_math.c
@@ -464,7 +464,7 @@ AST_TEST_DEFINE(test_MATH_function)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "test_MATH_function";
-		info->category = "main/pbx/";
+		info->category = "/main/pbx/";
 		info->summary = "Test MATH function substitution";
 		info->description =
 			"Executes a series of variable substitutions using the MATH function and ensures that the expected results are received.";
diff --git a/funcs/func_strings.c b/funcs/func_strings.c
index 184300d25e..9adc3364d6 100644
--- a/funcs/func_strings.c
+++ b/funcs/func_strings.c
@@ -1454,7 +1454,7 @@ AST_TEST_DEFINE(test_FILTER)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "func_FILTER_test";
-		info->category = "funcs/func_strings/";
+		info->category = "/funcs/func_strings/";
 		info->summary = "Test FILTER function";
 		info->description = "Verify FILTER behavior";
 		return AST_TEST_NOT_RUN;
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h
index 0ea2cb11a4..c61513065b 100644
--- a/include/asterisk/channel.h
+++ b/include/asterisk/channel.h
@@ -753,10 +753,10 @@ struct ast_channel {
 	unsigned int flags;				/*!< channel flags of AST_FLAG_ type */
 	int alertpipe[2];
 	format_t nativeformats;         /*!< Kinds of data this channel can natively handle */
-	format_t readformat;            /*!< Requested read format */
-	format_t writeformat;           /*!< Requested write format */
-	format_t rawreadformat;         /*!< Raw read format */
-	format_t rawwriteformat;        /*!< Raw write format */
+	format_t readformat;            /*!< Requested read format (after translation) */
+	format_t writeformat;           /*!< Requested write format (after translation) */
+	format_t rawreadformat;         /*!< Raw read format (before translation) */
+	format_t rawwriteformat;        /*!< Raw write format (before translation) */
 	unsigned int emulate_dtmf_duration;		/*!< Number of ms left to emulate DTMF for */
 #ifdef HAVE_EPOLL
 	int epfd;
diff --git a/include/asterisk/netsock2.h b/include/asterisk/netsock2.h
index dd4fba97ee..e7121cb949 100644
--- a/include/asterisk/netsock2.h
+++ b/include/asterisk/netsock2.h
@@ -293,7 +293,8 @@ int ast_sockaddr_resolve(struct ast_sockaddr **addrs, const char *str,
  * \retval 0 Address is null
  * \retval non-zero The port number of the ast_sockaddr
  */
-uint16_t ast_sockaddr_port(const struct ast_sockaddr *addr);
+#define ast_sockaddr_port(addr)	_ast_sockaddr_port(addr, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+uint16_t _ast_sockaddr_port(const struct ast_sockaddr *addr, const char *file, int line, const char *func);
 
 /*!
  * \since 1.8
@@ -308,7 +309,8 @@ uint16_t ast_sockaddr_port(const struct ast_sockaddr *addr);
  * \param port The port you wish to set the address to use
  * \retval void
  */
-void ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port);
+#define ast_sockaddr_set_port(addr,port)	_ast_sockaddr_set_port(addr,port,__FILE__,__LINE__,__PRETTY_FUNCTION__)
+void _ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port, const char *file, int line, const char *func);
 
 /*!
  * \since 1.8
@@ -500,8 +502,9 @@ int ast_set_qos(int sockfd, int tos, int cos, const char *desc);
  * \retval nonzero Success
  * \retval zero Failure
  */
-int ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
-			struct sockaddr_in *sin);
+#define ast_sockaddr_to_sin(addr,sin)	_ast_sockaddr_to_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+int _ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
+			struct sockaddr_in *sin, const char *file, int line, const char *func);
 
 /*!
  * \since 1.8
@@ -512,7 +515,9 @@ int ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
  * \param sin The sockaddr_in to convert
  * \return an ast_sockaddr structure
  */
-void ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin);
+#define ast_sockaddr_from_sin(addr,sin)	_ast_sockaddr_from_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+void _ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin,
+		const char *file, int line, const char *func);
 
 /*@}*/
 
diff --git a/main/data.c b/main/data.c
index 2a4559c04c..3b2c124abc 100644
--- a/main/data.c
+++ b/main/data.c
@@ -3216,7 +3216,7 @@ AST_TEST_DEFINE(test_data_get)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "data_test";
-		info->category = "main/data/";
+		info->category = "/main/data/";
 		info->summary = "Data API unit test";
 		info->description =
 			"Tests whether data API get implementation works as expected.";
diff --git a/main/features.c b/main/features.c
index a973004bae..9e0127a6e8 100644
--- a/main/features.c
+++ b/main/features.c
@@ -1169,7 +1169,7 @@ AST_TEST_DEFINE(features_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "features_test";
-		info->category = "main/features/";
+		info->category = "/main/features/";
 		info->summary = "Features unit test";
 		info->description =
 			"Tests whether parking respects PARKINGLOT settings";
diff --git a/main/netsock2.c b/main/netsock2.c
index ba671c1dcd..6066604b9a 100644
--- a/main/netsock2.c
+++ b/main/netsock2.c
@@ -328,7 +328,7 @@ int ast_sockaddr_cmp_addr(const struct ast_sockaddr *a, const struct ast_sockadd
 	return ret;
 }
 
-uint16_t ast_sockaddr_port(const struct ast_sockaddr *addr)
+uint16_t _ast_sockaddr_port(const struct ast_sockaddr *addr, const char *file, int line, const char *func)
 {
 	if (addr->ss.ss_family == AF_INET &&
 	    addr->len == sizeof(struct sockaddr_in)) {
@@ -337,11 +337,11 @@ uint16_t ast_sockaddr_port(const struct ast_sockaddr *addr)
 		 addr->len == sizeof(struct sockaddr_in6)) {
 		return ntohs(((struct sockaddr_in6 *)&addr->ss)->sin6_port);
 	}
-	ast_log(LOG_ERROR, "Not an IPv4 nor IPv6 address, cannot get port.\n");
+	ast_log(__LOG_DEBUG, file, line, func, "Not an IPv4 nor IPv6 address, cannot get port.\n");
 	return 0;
 }
 
-void ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port)
+void _ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port, const char *file, int line, const char *func)
 {
 	if (addr->ss.ss_family == AF_INET &&
 	    addr->len == sizeof(struct sockaddr_in)) {
@@ -350,7 +350,7 @@ void ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port)
 		 addr->len == sizeof(struct sockaddr_in6)) {
 		((struct sockaddr_in6 *)&addr->ss)->sin6_port = htons(port);
 	} else {
-		ast_log(LOG_ERROR,
+		ast_log(__LOG_DEBUG, file, line, func,
 			"Not an IPv4 nor IPv6 address, cannot set port.\n");
 	}
 }
@@ -466,8 +466,8 @@ int ast_set_qos(int sockfd, int tos, int cos, const char *desc)
 	return res;
 }
 
-int ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
-			struct sockaddr_in *sin)
+int _ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
+			struct sockaddr_in *sin, const char *file, int line, const char *func)
 {
 	if (ast_sockaddr_isnull(addr)) {
 		memset(sin, 0, sizeof(*sin));
@@ -475,24 +475,25 @@ int ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
 	}
 
 	if (addr->len != sizeof(*sin)) {
-		ast_log(LOG_ERROR, "Bad address cast to IPv4\n");
+		ast_log(__LOG_ERROR, file, line, func, "Bad address cast to IPv4\n");
 		return 0;
 	}
 
 	if (addr->ss.ss_family != AF_INET) {
-		ast_log(LOG_DEBUG, "Address family is not AF_INET\n");
+		ast_log(__LOG_DEBUG, file, line, func, "Address family is not AF_INET\n");
 	}
 
 	*sin = *(struct sockaddr_in *)&addr->ss;
 	return 1;
 }
 
-void ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin)
+void _ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin,
+		const char *file, int line, const char *func)
 {
 	memcpy(&addr->ss, sin, sizeof(*sin));
 
 	if (addr->ss.ss_family != AF_INET) {
-		ast_log(LOG_DEBUG, "Address family is not AF_INET\n");
+		ast_log(__LOG_DEBUG, file, line, func, "Address family is not AF_INET\n");
 	}
 
 	addr->len = sizeof(*sin);
diff --git a/main/test.c b/main/test.c
index f35dbdb21a..ad5c16f5b3 100644
--- a/main/test.c
+++ b/main/test.c
@@ -548,7 +548,7 @@ static struct ast_test *test_alloc(ast_test_cb_t *cb)
 	}
 
 	if (test->info.category[0] != '/' || test->info.category[strlen(test->info.category) - 1] != '/') {
-		ast_log(LOG_WARNING, "Test category is missing a leading or trailing backslash for test %s%s",
+		ast_log(LOG_WARNING, "Test category is missing a leading or trailing backslash for test %s%s\n",
 				test->info.category, test->info.name);
 	}
 
diff --git a/res/res_agi.c b/res/res_agi.c
index 0a46640157..4150fe1a91 100644
--- a/res/res_agi.c
+++ b/res/res_agi.c
@@ -3787,7 +3787,7 @@ AST_TEST_DEFINE(test_agi_null_docs)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "null_agi_docs";
-		info->category = "res/agi/";
+		info->category = "/res/agi/";
 		info->summary = "AGI command with no documentation";
 		info->description = "Test whether an AGI command with no documentation will crash Asterisk";
 		return AST_TEST_NOT_RUN;
diff --git a/res/res_timing_kqueue.c b/res/res_timing_kqueue.c
index d6cb8336ad..757fc528bf 100644
--- a/res/res_timing_kqueue.c
+++ b/res/res_timing_kqueue.c
@@ -284,7 +284,7 @@ AST_TEST_DEFINE(test_kqueue_timing)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "test_kqueue_timing";
-		info->category = "res/res_timing_kqueue";
+		info->category = "/res/res_timing_kqueue/";
 		info->summary = "Test KQueue timing interface";
 		info->description = "Verify that the KQueue timing interface correctly generates timing events";
 		return AST_TEST_NOT_RUN;
diff --git a/tests/test_acl.c b/tests/test_acl.c
index 61bffe5de0..a0f005bc2f 100644
--- a/tests/test_acl.c
+++ b/tests/test_acl.c
@@ -59,7 +59,7 @@ AST_TEST_DEFINE(invalid_acl)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "invalid_acl";
-		info->category = "main/acl/";
+		info->category = "/main/acl/";
 		info->summary = "Invalid ACL unit test";
 		info->description =
 			"Ensures that garbage ACL values are not accepted";
@@ -129,7 +129,7 @@ AST_TEST_DEFINE(acl)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "acl";
-		info->category = "main/acl/";
+		info->category = "/main/acl/";
 		info->summary = "ACL unit test";
 		info->description =
 			"Tests that hosts are properly permitted or denied";
diff --git a/tests/test_aoc.c b/tests/test_aoc.c
index f6355e54f8..23663ee025 100644
--- a/tests/test_aoc.c
+++ b/tests/test_aoc.c
@@ -48,7 +48,7 @@ AST_TEST_DEFINE(aoc_event_generation_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "aoc_event_test";
-		info->category = "main/aoc/";
+		info->category = "/main/aoc/";
 		info->summary = "Advice of Charge event generation test";
 		info->description =
 			"Creates AOC messages, verify event string matches expected results";
@@ -315,7 +315,7 @@ AST_TEST_DEFINE(aoc_encode_decode_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "aoc_encode_decode_test";
-		info->category = "main/aoc/";
+		info->category = "/main/aoc/";
 		info->summary = "Advice of Charge encode and decode test";
 		info->description =
 			"This tests the Advice of Charge encode and decode routines.";
diff --git a/tests/test_app.c b/tests/test_app.c
index 9962a1c591..b4b2c22e11 100644
--- a/tests/test_app.c
+++ b/tests/test_app.c
@@ -75,7 +75,7 @@ AST_TEST_DEFINE(options_parsing)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "options_parsing";
-		info->category = "main/app/";
+		info->category = "/main/app/";
 		info->summary = "App options unit test";
 		info->description =
 			"This tests the options parsing code to ensure that it behaves as expected";
@@ -161,7 +161,7 @@ AST_TEST_DEFINE(app_group)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "app_group";
-		info->category = "main/app/";
+		info->category = "/main/app/";
 		info->summary = "App group unit test";
 		info->description =
 			"This tests various app group functionality";
diff --git a/tests/test_ast_format_str_reduce.c b/tests/test_ast_format_str_reduce.c
index 8dd1f500fc..c92245213c 100644
--- a/tests/test_ast_format_str_reduce.c
+++ b/tests/test_ast_format_str_reduce.c
@@ -83,7 +83,7 @@ AST_TEST_DEFINE(ast_format_str_reduce_test_1)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "ast_format_str_reduce_test_1";
-		info->category = "main/file/";
+		info->category = "/main/file/";
 		info->summary = "reduce format strings";
 		info->description = "Reduce some format strings and make sure the results match what we expect.";
 		return AST_TEST_NOT_RUN;
diff --git a/tests/test_astobj2.c b/tests/test_astobj2.c
index 44b53fa886..f76f2185eb 100644
--- a/tests/test_astobj2.c
+++ b/tests/test_astobj2.c
@@ -325,7 +325,7 @@ AST_TEST_DEFINE(astobj2_test_1)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "astobj2_test1";
-		info->category = "main/astobj2/";
+		info->category = "/main/astobj2/";
 		info->summary = "astobj2 test using ao2 objects, containers, callbacks, and iterators";
 		info->description =
 			"Builds ao2_containers with various item numbers, bucket sizes, cmp and hash "
diff --git a/tests/test_devicestate.c b/tests/test_devicestate.c
index 962fcda860..a441370739 100644
--- a/tests/test_devicestate.c
+++ b/tests/test_devicestate.c
@@ -220,7 +220,7 @@ AST_TEST_DEFINE(device2extenstate_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "device2extenstate_test";
-		info->category = "main/devicestate/";
+		info->category = "/main/devicestate/";
 		info->summary = "Tests combined devstate mapping and device to extension state mapping.";
 		info->description =
 			"Verifies device state aggregate results match the expected combined "
diff --git a/tests/test_event.c b/tests/test_event.c
index 6a557b5251..82ef29bb37 100644
--- a/tests/test_event.c
+++ b/tests/test_event.c
@@ -134,7 +134,7 @@ AST_TEST_DEFINE(event_new_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "ast_event_new_test";
-		info->category = "main/event/";
+		info->category = "/main/event/";
 		info->summary = "Test event creation";
 		info->description =
 			"This test exercises the API calls that allow allocation "
@@ -272,7 +272,7 @@ AST_TEST_DEFINE(event_sub_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "ast_event_subscribe_test";
-		info->category = "main/event/";
+		info->category = "/main/event/";
 		info->summary = "Test event subscriptions";
 		info->description =
 			"This test exercises the API calls that allow subscriptions "
diff --git a/tests/test_gosub.c b/tests/test_gosub.c
index c2b510367b..e69acfb17e 100644
--- a/tests/test_gosub.c
+++ b/tests/test_gosub.c
@@ -85,7 +85,7 @@ AST_TEST_DEFINE(test_gosub)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "gosub application";
-		info->category = "apps/app_gosub/";
+		info->category = "/apps/app_gosub/";
 		info->summary = "Verify functionality of gosub application";
 		info->description =
 			"Verify functionality of gosub application";
diff --git a/tests/test_heap.c b/tests/test_heap.c
index de48f0ae4d..3e70848d1e 100644
--- a/tests/test_heap.c
+++ b/tests/test_heap.c
@@ -68,7 +68,7 @@ AST_TEST_DEFINE(heap_test_1)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "heap_test_1";
-		info->category = "main/heap/";
+		info->category = "/main/heap/";
 		info->summary = "push and pop elements";
 		info->description = "Push a few elements onto a heap and make sure that they come back off in the right order.";
 		return AST_TEST_NOT_RUN;
@@ -129,7 +129,7 @@ AST_TEST_DEFINE(heap_test_2)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "heap_test_2";
-		info->category = "main/heap/";
+		info->category = "/main/heap/";
 		info->summary = "load test";
 		info->description =
 				"Push one hundred thousand random elements on to a heap, "
@@ -204,7 +204,7 @@ AST_TEST_DEFINE(heap_test_3)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "heap_test_3";
-		info->category = "main/heap/";
+		info->category = "/main/heap/";
 		info->summary = "random element removal test";
 		info->description =
 			"Push a hundred thousand random elements on to a heap, "
diff --git a/tests/test_pbx.c b/tests/test_pbx.c
index 19c7d19f25..3ecc9e937e 100644
--- a/tests/test_pbx.c
+++ b/tests/test_pbx.c
@@ -242,7 +242,7 @@ AST_TEST_DEFINE(pattern_match_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "pattern_match_test";
-		info->category = "main/pbx/";
+		info->category = "/main/pbx/";
 		info->summary = "Test pattern matching";
 		info->description = "Create a context with a bunch of extensions within. Then attempt\n"
 			"to match some strings to the extensions.";
diff --git a/tests/test_sched.c b/tests/test_sched.c
index 6cb9f61cb0..1090e5b488 100644
--- a/tests/test_sched.c
+++ b/tests/test_sched.c
@@ -53,7 +53,7 @@ AST_TEST_DEFINE(sched_test_order)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sched_test_order";
-		info->category = "main/sched/";
+		info->category = "/main/sched/";
 		info->summary = "Test ordering of events in the scheduler API";
 		info->description =
 			"This test ensures that events are properly ordered by the "
diff --git a/tests/test_skel.c b/tests/test_skel.c
index c1ce5e844d..609e399a70 100644
--- a/tests/test_skel.c
+++ b/tests/test_skel.c
@@ -45,7 +45,7 @@ AST_TEST_DEFINE(sample_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sample_test";
-		info->category = "main/sample/";
+		info->category = "/main/sample/";
 		info->summary = "sample unit test";
 		info->description =
 			"This demonstrates what is required to implement "
diff --git a/tests/test_stringfields.c b/tests/test_stringfields.c
index 3b8da6fc46..dd3f0aaa13 100644
--- a/tests/test_stringfields.c
+++ b/tests/test_stringfields.c
@@ -64,7 +64,7 @@ AST_TEST_DEFINE(string_field_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "string_field_test";
-		info->category = "main/utils/";
+		info->category = "/main/utils/";
 		info->summary = "Test stringfield operations";
 		info->description =
 			"This tests the stringfield API";
diff --git a/tests/test_strings.c b/tests/test_strings.c
index 2a54beb549..34062f04df 100644
--- a/tests/test_strings.c
+++ b/tests/test_strings.c
@@ -58,7 +58,7 @@ AST_TEST_DEFINE(str_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "str_test";
-		info->category = "main/strings/";
+		info->category = "/main/strings/";
 		info->summary = "Test dynamic string operations";
 		info->description = "Test setting and appending stack and heap-allocated strings";
 		return AST_TEST_NOT_RUN;
diff --git a/tests/test_substitution.c b/tests/test_substitution.c
index 78b4ad2838..412b6f4bba 100644
--- a/tests/test_substitution.c
+++ b/tests/test_substitution.c
@@ -205,7 +205,7 @@ AST_TEST_DEFINE(test_substitution)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "test_substitution";
-		info->category = "main/pbx/";
+		info->category = "/main/pbx/";
 		info->summary = "Test variable and function substitution";
 		info->description =
 			"This test executes a variety of variable and function substitutions "
diff --git a/tests/test_time.c b/tests/test_time.c
index 61a201498d..0fc7785265 100644
--- a/tests/test_time.c
+++ b/tests/test_time.c
@@ -58,7 +58,7 @@ AST_TEST_DEFINE(test_timezone_watch)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "timezone_watch";
-		info->category = "main/stdtime/";
+		info->category = "/main/stdtime/";
 		info->summary = "Verify deleting timezone file purges cache";
 		info->description =
 			"Verifies that the caching engine properly destroys a timezone entry when its file is deleted.";
diff --git a/tests/test_utils.c b/tests/test_utils.c
index 78a0ba7859..3f2718ff63 100644
--- a/tests/test_utils.c
+++ b/tests/test_utils.c
@@ -48,7 +48,7 @@ AST_TEST_DEFINE(uri_encode_decode_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "uri_encode_decode_test";
-		info->category = "main/utils/";
+		info->category = "/main/utils/";
 		info->summary = "encode and decode a hex escaped string";
 		info->description = "encode a string, verify encoded string matches what we expect.  Decode the encoded string, verify decoded string matches the original string.";
 		return AST_TEST_NOT_RUN;
@@ -114,7 +114,7 @@ AST_TEST_DEFINE(md5_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "md5_test";
-		info->category = "main/utils/";
+		info->category = "/main/utils/";
 		info->summary = "MD5 test";
 		info->description =
 			"This test exercises MD5 calculations."
@@ -159,7 +159,7 @@ AST_TEST_DEFINE(sha1_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "sha1_test";
-		info->category = "main/utils/";
+		info->category = "/main/utils/";
 		info->summary = "SHA1 test";
 		info->description =
 			"This test exercises SHA1 calculations."
@@ -204,7 +204,7 @@ AST_TEST_DEFINE(base64_test)
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "base64_test";
-		info->category = "main/utils/";
+		info->category = "/main/utils/";
 		info->summary = "base64 test";
 		info->description = "This test exercises the base64 conversions.";
 		return AST_TEST_NOT_RUN;
-- 
GitLab