Expand tests to account for queue use assertion (#1423)
CI Checks / git-secrets (push) Canceled after 0s
CI Checks / formatting (push) Canceled after 0s
CI Checks / spell-check (push) Canceled after 0s
CI Checks / doxygen (push) Canceled after 0s
CI Checks / verify-manifest (push) Canceled after 0s
CI Checks / memory-statistics (push) Canceled after 0s
CI Checks / proof_ci (push) Canceled after 0s
FreeRTOS Demos / WIN32 MSVC (push) Canceled after 0s
FreeRTOS Demos / WIN32 MingW (push) Canceled after 0s
FreeRTOS Demos / Posix GCC (push) Canceled after 0s
FreeRTOS Demos / GNU MSP430 Toolchain (push) Canceled after 0s
FreeRTOS Demos / GNU ARM Toolchain (push) Canceled after 0s
FreeRTOS MPU Demo / TI-Hercules RM46 and RM57 MPU Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / Windows Simulator Cellular Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / coreHTTP WinSim Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / corePKCS11 WinSim Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / core Library Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / AWS IoT Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP Posix Simulator Demo (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP QEMU ARM MPS2 AN385 (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+CLI Windows Simulator Demos (push) Canceled after 0s
Kernel Unit Tests / FreeRTOS/Source Submodule Revision (push) Canceled after 0s
Kernel Unit Tests / FreeRTOS-Kernel Main Branch (push) Canceled after 0s

Unit tests need to update now that the queue
asserts if in use during a deletion call.
Updated existing mutex test which left a queue
with a user during cleanup.
This commit is contained in:
Kody Stribrny
2026-07-22 11:21:55 -07:00
committed by GitHub
parent 6f81e4ecb1
commit 602e1e76be
6 changed files with 91 additions and 2 deletions
@@ -129,3 +129,74 @@ void test_vQueueDelete_full( void )
vQueueDelete( xQueue );
TEST_ASSERT_EQUAL_PTR( ( void * ) xQueue, getLastFreedAddress() );
}
/**
* @brief Test vQueueDelete asserts when tasks are waiting to send and waiting to receive
* @details Verify that vQueueDelete triggers a configASSERT when both the
* xTasksWaitingToSend and xTasksWaitingToReceive lists are non-empty.
* @coverage vQueueDelete
*/
void test_vQueueDelete_assert_tasks_waiting_to_send_and_receive( void )
{
QueueHandle_t xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
/* Add a fake task to the WaitingToSend list */
td_task_addFakeTaskWaitingToSendToQueue( xQueue );
/* Expect the assert to fire due to non-empty WaitingToSend list */
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
/* Clean up the fake task from the list */
td_task_removeFakeTaskFromList();
/* Now add a fake task to WaitingToReceive and verify that assert fires too */
td_task_addFakeTaskWaitingToReceiveFromQueue( xQueue );
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
/* Clean up and delete */
td_task_removeFakeTaskFromList();
vQueueDelete( xQueue );
}
/**
* @brief Test vQueueDelete asserts when tasks are waiting to send only
* @details Verify that vQueueDelete triggers a configASSERT when the
* xTasksWaitingToSend list is non-empty.
* @coverage vQueueDelete
*/
void test_vQueueDelete_assert_tasks_waiting_to_send( void )
{
QueueHandle_t xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
/* Add a fake task to the WaitingToSend list */
td_task_addFakeTaskWaitingToSendToQueue( xQueue );
/* Expect the assert to fire due to non-empty WaitingToSend list */
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
/* Clean up and delete */
td_task_removeFakeTaskFromList();
vQueueDelete( xQueue );
}
/**
* @brief Test vQueueDelete asserts when tasks are waiting to receive only
* @details Verify that vQueueDelete triggers a configASSERT when the
* xTasksWaitingToReceive list is non-empty.
* @coverage vQueueDelete
*/
void test_vQueueDelete_assert_tasks_waiting_to_receive( void )
{
QueueHandle_t xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
/* Add a fake task to the WaitingToReceive list */
td_task_addFakeTaskWaitingToReceiveFromQueue( xQueue );
/* Expect the assert to fire due to non-empty WaitingToReceive list */
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
/* Clean up and delete */
td_task_removeFakeTaskFromList();
vQueueDelete( xQueue );
}
@@ -326,6 +326,13 @@ void td_task_addFakeTaskWaitingToSendToQueue( QueueHandle_t xQueue );
*/
void td_task_addFakeTaskWaitingToReceiveFromQueue( QueueHandle_t xQueue );
/**
* @brief Remove the fake task from whatever waiting list it is currently in.
* @details This should be called before deleting a queue that has a fake task
* in one of its waiting lists (xTasksWaitingToSend or xTasksWaitingToReceive).
*/
void td_task_removeFakeTaskFromList( void );
/**
* @brief Test double for xTaskCheckForTimeOut
*/
@@ -540,6 +540,9 @@ void test_macro_xSemaphoreTake_blocking_mutex_inherit_timeout_high_prio_waiting(
TEST_ASSERT_EQUAL( TICKS_TO_WAIT + 1, td_task_getCount_YieldFromTaskResumeAll() );
/* Remove the fake task from the waiting list before deleting the semaphore */
td_task_removeFakeTaskFromList();
vSemaphoreDelete( xSemaphore );
}
+8
View File
@@ -290,6 +290,14 @@ void td_task_addFakeTaskWaitingToReceiveFromQueue( QueueHandle_t xQueue )
vListInsert( pxTasksWaitingToReceive, &fakeTaskListItem );
}
void td_task_removeFakeTaskFromList( void )
{
if( listLIST_ITEM_CONTAINER( &fakeTaskListItem ) != NULL )
{
uxListRemove( &fakeTaskListItem );
}
}
TickType_t td_task_getFakeTaskPriority( void )
{
return( configMAX_PRIORITIES - fakeTaskListItem.xItemValue );
+1 -1
View File
@@ -5,7 +5,7 @@ license: "MIT"
dependencies:
- name: "FreeRTOS-Kernel"
version: "fcc6653"
version: "78069a7"
repository:
type: "git"
url: "https://github.com/FreeRTOS/FreeRTOS-Kernel.git"