Explorar o código

freertos: re-enable "mutex released not by owner causes an assert" test in CI

Marius Vikhammer %!s(int64=2) %!d(string=hai) anos
pai
achega
bf8934002b

+ 12 - 6
components/freertos/test_apps/freertos/kernel/queue/test_freertos_mutex.c

@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */
@@ -9,6 +9,7 @@
 #include "freertos/semphr.h"
 #include "unity.h"
 #include "test_utils.h"
+#include "esp_system.h"
 
 /* If assertions aren't set to fail this code still crashes, but not with an abort... */
 #if CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER && !CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
@@ -20,11 +21,12 @@ static void mutex_release_task(void* arg)
     TEST_FAIL_MESSAGE("should not be reached");
 }
 
-/*
-Reset tests are temporarily ignored until the test app supports running them separately.
-IDF-6096
-*/
-TEST_CASE("mutex released not by owner causes an assert", "[freertos][ignore][reset=assert,SW_CPU_RESET]")
+static void check_reset_reason_panic(void)
+{
+    TEST_ASSERT_EQUAL(ESP_RST_PANIC, esp_reset_reason());
+}
+
+static void do_mutex_release_assert(void)
 {
     SemaphoreHandle_t mutex = xSemaphoreCreateMutex();
     xSemaphoreTake(mutex, portMAX_DELAY);
@@ -32,4 +34,8 @@ TEST_CASE("mutex released not by owner causes an assert", "[freertos][ignore][re
     vTaskDelay(1);
 }
 
+TEST_CASE_MULTIPLE_STAGES("mutex released not by owner causes an assert", "[freertos][reset=assert,SW_CPU_RESET]",
+                          do_mutex_release_assert,
+                          check_reset_reason_panic)
+
 #endif

+ 6 - 0
components/freertos/test_apps/freertos/kernel/tasks/test_freertos_task_notify.c

@@ -196,12 +196,18 @@ TEST_CASE("Test Task_Notify", "[freertos]")
     }
 }
 
+/* Test causes asserts, so it cannot be run as a normal unity test case.
+   Test case is ran as a seperate test case in test_task_notify_too_high_index_fails
+ */
 TEST_CASE("Notify too high index fails", "[ignore]")
 {
     uint32_t notification_value = 47;
     xTaskNotifyIndexed(xTaskGetCurrentTaskHandle(), 2, notification_value, eNoAction);
 }
 
+/* Test causes asserts, so it cannot be run as a normal unity test case.
+   Test case is ran as a seperate test case in test_task_notify_wait_too_high_index_fails
+ */
 TEST_CASE("Notify Wait too high index fails", "[ignore]")
 {
     uint32_t notification_value;