mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 00:04:53 +00:00
test.c: Add unit test registration checks for summary and description.
Added checks when a unit test is registered to see that the summary and description strings do not end with a new-line '\n' for consistency. The check generates a warning message and will cause the /main/test/registrations unit test to fail. * Updated struct ast_test_info member doxygen comments. Change-Id: I295909b6bc013ed9b6882e85c05287082497534d
This commit is contained in:
@@ -224,13 +224,22 @@ struct ast_test_info {
|
|||||||
/*!
|
/*!
|
||||||
* \brief test category
|
* \brief test category
|
||||||
*
|
*
|
||||||
|
* \details
|
||||||
* Tests are categorized in a directory tree style hierarchy. It is expected that
|
* Tests are categorized in a directory tree style hierarchy. It is expected that
|
||||||
* this string have both a leading and trailing forward slash ('/').
|
* this string have both a leading and trailing forward slash ('/').
|
||||||
*/
|
*/
|
||||||
const char *category;
|
const char *category;
|
||||||
/*! \brief optional short summary of test */
|
/*!
|
||||||
|
* \brief Short summary of test
|
||||||
|
*
|
||||||
|
* \note The summary must not end with a newline.
|
||||||
|
*/
|
||||||
const char *summary;
|
const char *summary;
|
||||||
/*! \brief optional brief detailed description of test */
|
/*!
|
||||||
|
* \brief More detailed description of test
|
||||||
|
*
|
||||||
|
* \note The description must not end with a newline.
|
||||||
|
*/
|
||||||
const char *description;
|
const char *description;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
36
main/test.c
36
main/test.c
@@ -640,33 +640,53 @@ static struct ast_test *test_alloc(ast_test_cb_t *cb)
|
|||||||
|
|
||||||
if (ast_strlen_zero(test->info.category)) {
|
if (ast_strlen_zero(test->info.category)) {
|
||||||
ast_log(LOG_ERROR, "Test %s has no category, test registration refused.\n",
|
ast_log(LOG_ERROR, "Test %s has no category, test registration refused.\n",
|
||||||
test->info.name);
|
test->info.name);
|
||||||
return test_free(test);
|
return test_free(test);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (test->info.category[0] != '/' || test->info.category[strlen(test->info.category) - 1] != '/') {
|
if (test->info.category[0] != '/' || test->info.category[strlen(test->info.category) - 1] != '/') {
|
||||||
ast_log(LOG_WARNING, "Test category '%s' for test '%s' is missing a leading or trailing slash.\n",
|
ast_log(LOG_WARNING, "Test category '%s' for test '%s' is missing a leading or trailing slash.\n",
|
||||||
test->info.category, test->info.name);
|
test->info.category, test->info.name);
|
||||||
/* Flag an error anyways so test_registrations fails but allow the test to be
|
/*
|
||||||
* registered. */
|
* Flag an error anyways so test_registrations fails but allow the
|
||||||
registration_errors++;
|
* test to be registered.
|
||||||
|
*/
|
||||||
|
++registration_errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ast_strlen_zero(test->info.summary)) {
|
if (ast_strlen_zero(test->info.summary)) {
|
||||||
ast_log(LOG_ERROR, "Test %s%s has no summary, test registration refused.\n",
|
ast_log(LOG_ERROR, "Test %s%s has no summary, test registration refused.\n",
|
||||||
test->info.category, test->info.name);
|
test->info.category, test->info.name);
|
||||||
return test_free(test);
|
return test_free(test);
|
||||||
}
|
}
|
||||||
|
if (test->info.summary[strlen(test->info.summary) - 1] == '\n') {
|
||||||
|
ast_log(LOG_WARNING, "Test %s%s summary has a trailing newline.\n",
|
||||||
|
test->info.category, test->info.name);
|
||||||
|
/*
|
||||||
|
* Flag an error anyways so test_registrations fails but allow the
|
||||||
|
* test to be registered.
|
||||||
|
*/
|
||||||
|
++registration_errors;
|
||||||
|
}
|
||||||
|
|
||||||
if (ast_strlen_zero(test->info.description)) {
|
if (ast_strlen_zero(test->info.description)) {
|
||||||
ast_log(LOG_ERROR, "Test %s%s has no description, test registration refused.\n",
|
ast_log(LOG_ERROR, "Test %s%s has no description, test registration refused.\n",
|
||||||
test->info.category, test->info.name);
|
test->info.category, test->info.name);
|
||||||
return test_free(test);
|
return test_free(test);
|
||||||
}
|
}
|
||||||
|
if (test->info.description[strlen(test->info.description) - 1] == '\n') {
|
||||||
|
ast_log(LOG_WARNING, "Test %s%s description has a trailing newline.\n",
|
||||||
|
test->info.category, test->info.name);
|
||||||
|
/*
|
||||||
|
* Flag an error anyways so test_registrations fails but allow the
|
||||||
|
* test to be registered.
|
||||||
|
*/
|
||||||
|
++registration_errors;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(test->status_str = ast_str_create(128))) {
|
if (!(test->status_str = ast_str_create(128))) {
|
||||||
ast_log(LOG_ERROR, "Failed to allocate status_str for %s%s, test registration failed.\n",
|
ast_log(LOG_ERROR, "Failed to allocate status_str for %s%s, test registration failed.\n",
|
||||||
test->info.category, test->info.name);
|
test->info.category, test->info.name);
|
||||||
return test_free(test);
|
return test_free(test);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user