summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Bartell <pbartell@amazon.com>2021-04-01 22:18:36 -0700
committerPaul Bartell <paul.bartell@gmail.com>2021-04-07 13:56:04 -0700
commitc82e6caa34589be2fd69704bfad3010a3ad61951 (patch)
tree32a6931d8155bd479664807e5a6fff9181ac480c
parent68cb6142ae7461272c3cf380a473048e0cdabeaf (diff)
downloadfreertos-git-c82e6caa34589be2fd69704bfad3010a3ad61951.tar.gz
Remove imporper TEST_PROTECT usage from message_buffer_utest.c.
The way TEST_PROTECT is currently used in this test causes an infinite loop if the expected configASSERT failure does not occur.
-rw-r--r--FreeRTOS/Test/CMock/message_buffer/message_buffer_utest.c81
1 files changed, 42 insertions, 39 deletions
diff --git a/FreeRTOS/Test/CMock/message_buffer/message_buffer_utest.c b/FreeRTOS/Test/CMock/message_buffer/message_buffer_utest.c
index 2a2c00f2a..afbff7628 100644
--- a/FreeRTOS/Test/CMock/message_buffer/message_buffer_utest.c
+++ b/FreeRTOS/Test/CMock/message_buffer/message_buffer_utest.c
@@ -29,7 +29,7 @@
#include <stdlib.h>
#include <stdbool.h>
-/* Queue includes */
+/* Message Buffer includes */
#include "FreeRTOS.h"
#include "FreeRTOSConfig.h"
#include "message_buffer.h"
@@ -37,6 +37,7 @@
/* Test includes. */
#include "unity.h"
#include "unity_memory.h"
+#include "CException.h"
/* Mock includes. */
#include "mock_task.h"
@@ -72,6 +73,31 @@
*/
#define TEST_MESSAGE_BUFFER_WAIT_TICKS ( 1000U )
+/**
+ * @brief CException code for when a configASSERT should be intercepted.
+ */
+#define configASSERT_E 0xAA101
+
+/**
+ * @brief Expect a configASSERT from the funciton called.
+ * Break out of the called function when this occurs.
+ * @details Use this macro when the call passsed in as a parameter is expected
+ * to cause invalid memory access.
+ */
+#define EXPECT_ASSERT_BREAK( call ) \
+ do \
+ { \
+ shouldAbortOnAssertion = true; \
+ CEXCEPTION_T e = CEXCEPTION_NONE; \
+ Try \
+ { \
+ call; \
+ TEST_FAIL(); \
+ } \
+ Catch( e ) \
+ TEST_ASSERT_EQUAL( configASSERT_E, e ); \
+ } while ( 0 )
+
/* ============================ GLOBAL VARIABLES =========================== */
/**
@@ -131,7 +157,7 @@ static void vFakeAssertStub( bool x,
if( shouldAbortOnAssertion == pdTRUE )
{
- TEST_ABORT();
+ Throw( configASSERT_E );
}
}
}
@@ -328,10 +354,7 @@ void test_xMessageBufferCreate_malloc_fail( void )
*/
void test_xMessageBufferCreate_zero_size( void )
{
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferCreate( 0 );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreate( 0 ) );
validate_and_clear_assertions();
}
@@ -341,10 +364,7 @@ void test_xMessageBufferCreate_zero_size( void )
*/
void test_xMessageBufferCreate_invalid_size( void )
{
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferCreate( TEST_MESSAGE_METADATA_SIZE );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreate( TEST_MESSAGE_METADATA_SIZE ) );
validate_and_clear_assertions();
}
@@ -379,6 +399,7 @@ void test_xMessageBufferCreateStatic_null_array( void )
/* Returns NULL when NULL storage area is passed as a parameter. */
xMessageBuffer = xMessageBufferCreateStatic( TEST_MESSAGE_BUFFER_SIZE, NULL, &messageBufferStruct );
TEST_ASSERT_NULL( xMessageBuffer );
+
validate_and_clear_assertions();
}
@@ -396,6 +417,7 @@ void test_xMessageBufferCreateStatic_null_struct( void )
/* Returns NULL when NULL message buffer struct is passed as a parameter. */
xMessageBuffer = xMessageBufferCreateStatic( sizeof( messageBufferArray ), messageBufferArray, NULL );
TEST_ASSERT_NULL( xMessageBuffer );
+
validate_and_clear_assertions();
}
@@ -408,10 +430,7 @@ void test_xMessageBufferCreateStatic_invalid_size( void )
/* The size of message buffer array should be one greater than the required size of message buffer. */
uint8_t messageBufferArray[ TEST_MESSAGE_BUFFER_SIZE + 1 ] = { 0 };
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferCreateStatic( TEST_MESSAGE_METADATA_SIZE, messageBufferArray, &messageBufferStruct );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreateStatic( TEST_MESSAGE_METADATA_SIZE, messageBufferArray, &messageBufferStruct ) );
validate_and_clear_assertions();
}
@@ -425,10 +444,7 @@ void test_xMessageBufferCreateStatic_zero_size( void )
/* The size of message buffer array should be one greater than the required size of message buffer. */
uint8_t messageBufferArray[ TEST_MESSAGE_BUFFER_SIZE + 1 ] = { 0 };
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferCreateStatic( 0, messageBufferArray, &messageBufferStruct );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreateStatic( 0, messageBufferArray, &messageBufferStruct ) );
validate_and_clear_assertions();
}
@@ -461,7 +477,7 @@ void test_xMessageBufferSend_success( void )
/**
* @brief An integer overflow in message size to be sent should result in an
- * assertion failure
+ * assertion failure
*/
void test_xMessageBufferSend_message_size_integer_overflow( void )
{
@@ -475,10 +491,8 @@ void test_xMessageBufferSend_message_size_integer_overflow( void )
xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE );
TEST_ASSERT_NOT_NULL( xMessageBuffer );
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferSend( xMessageBuffer, data, TEST_MESSAGE_BUFFER_MAX_UINT_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferSend( xMessageBuffer, data, TEST_MESSAGE_BUFFER_MAX_UINT_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
+
validate_and_clear_assertions();
vStreamBufferDelete( xMessageBuffer );
@@ -521,10 +535,7 @@ void test_xMessageBufferSend_null_message( void )
xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE );
TEST_ASSERT_NOT_NULL( xMessageBuffer );
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferSend( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferSend( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
validate_and_clear_assertions();
@@ -546,10 +557,7 @@ void test_xMessageBufferSend_null_message_buffer( void )
xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE );
TEST_ASSERT_NOT_NULL( xMessageBuffer );
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferSend( NULL, message, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferSend( NULL, message, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
validate_and_clear_assertions();
@@ -643,12 +651,10 @@ void test_xMessageBufferReceive_null_input_message( void )
TEST_ASSERT_NOT_NULL( xMessageBuffer );
/* Should assert if a null input mssage is passed. */
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferReceive( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferReceive( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
validate_and_clear_assertions();
+
vStreamBufferDelete( xMessageBuffer );
}
@@ -669,10 +675,7 @@ void test_xMessageBufferReceive_invalid_params( void )
TEST_ASSERT_NOT_NULL( xMessageBuffer );
/* Should assert if a null message buffer handle is passed. */
- if( TEST_PROTECT() )
- {
- ( void ) xMessageBufferReceive( NULL, message, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS );
- }
+ EXPECT_ASSERT_BREAK( ( void ) xMessageBufferReceive( NULL, message, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
validate_and_clear_assertions();