fix(modem): Update target test builds to use external Catch2

Switched from the deprecated Catch framework (IDF/tools) to Catch2,
as Catch will be removed in v6.0.
Note that Catch2 has higher memory requirements,
necessitating an increase in stack size and partition table.
Additionally, Catch2 increases compilation time due to its larger footprint.
This commit is contained in:
David Cermak
2024-09-18 08:55:36 +02:00
parent 6705bcae5e
commit 554f022cbf
5 changed files with 38 additions and 17 deletions

View File

@ -1,6 +1,6 @@
idf_component_register(SRCS "pppd_test.cpp"
"NetworkDCE.cpp"
REQUIRES esp_modem)
REQUIRES esp_modem catch2)
set_target_properties(${COMPONENT_LIB} PROPERTIES
CXX_STANDARD 17

View File

@ -0,0 +1,4 @@
dependencies:
espressif/catch2: "*"
idf:
version: ">=4.4"

View File

@ -17,6 +17,10 @@
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
#define CATCH_CONFIG_MAIN
#include "catch2/catch_test_macros.hpp"
#include "catch2/catch_session.hpp"
static const char *TAG = "pppd_test";
static EventGroupHandle_t event_group = NULL;
@ -73,9 +77,6 @@ esp_err_t modem_init_network(esp_netif_t *netif);
void modem_start_network();
void modem_stop_network();
bool test_connect();
bool test_disconnect();
extern "C" void app_main(void)
{
@ -99,27 +100,41 @@ extern "C" void app_main(void)
#endif
modem_start_network();
bool t1 = test_connect();
bool t2 = test_disconnect();
if (t1 && t2) {
ESP_LOGI(TAG, "All tests passed");
} else {
Catch::Session session;
int numFailed = session.run();
if (numFailed > 0) {
ESP_LOGE(TAG, "Test FAILED!");
} else {
ESP_LOGI(TAG, "Test passed!");
}
}
bool test_connect() //("Connect test", "[esp_modem]")
TEST_CASE("Connect test", "[esp_modem]")
{
EventBits_t b = xEventGroupWaitBits(event_group, 1, pdTRUE, pdFALSE, pdMS_TO_TICKS(15000));
return b == 1;
CHECK(b == 1);
}
bool test_disconnect() //("Disconnection test", "[esp_modem]")
TEST_CASE("Disconnection test", "[esp_modem]")
{
modem_stop_network();
EventBits_t b = xEventGroupWaitBits(event_group, 2, pdTRUE, pdFALSE, pdMS_TO_TICKS(15000));
return b == 2;
CHECK(b == 2);
}
extern "C" {
static void handle(int nr)
{
ESP_LOGE(TAG, "Signal handler %d", nr);
}
_sig_func_ptr signal (int nr, _sig_func_ptr)
{
return handle;
}
}

View File

@ -1,4 +1,5 @@
CONFIG_COMPILER_CXX_EXCEPTIONS=y
CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192
CONFIG_LWIP_PPP_SUPPORT=y
CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y
CONFIG_TEST_APP_AUTH=y

View File

@ -1,3 +1,4 @@
CONFIG_COMPILER_CXX_EXCEPTIONS=y
CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192
CONFIG_LWIP_PPP_SUPPORT=y
CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y