Skip to content

Commit

Permalink
change(expat): move unit tests to component test app
Browse files Browse the repository at this point in the history
  • Loading branch information
igrr committed Sep 19, 2024
1 parent 5f084fc commit 2dc22c6
Show file tree
Hide file tree
Showing 10 changed files with 79 additions and 3 deletions.
1 change: 1 addition & 0 deletions .idf_build_apps.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ manifest_file = [
"dhara/.build-test-rules.yml",
"esp_encrypted_img/.build-test-rules.yml",
"esp_serial_slave_link/.build-test-rules.yml",
"expat/.build-test-rules.yml",
".build-test-rules.yml",
]
check_warnings = true
Expand Down
4 changes: 4 additions & 0 deletions expat/.build-test-rules.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
expat/test_apps:
enable:
- if: IDF_TARGET in ["esp32", "esp32c3"]
reason: "Sufficient to test on one Xtensa and one RISC-V target"
3 changes: 0 additions & 3 deletions expat/test/CMakeLists.txt

This file was deleted.

5 changes: 5 additions & 0 deletions expat/test_apps/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
cmake_minimum_required(VERSION 3.16)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
set(COMPONENTS main)
project(expat_test)
4 changes: 4 additions & 0 deletions expat/test_apps/main/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
idf_component_register(SRCS "test_expat.c" "test_main.c"
PRIV_INCLUDE_DIRS "."
PRIV_REQUIRES unity
WHOLE_ARCHIVE)
4 changes: 4 additions & 0 deletions expat/test_apps/main/idf_component.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
dependencies:
espressif/expat:
version: "*"
override_path: "../.."
File renamed without changes.
50 changes: 50 additions & 0 deletions expat/test_apps/main/test_main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/

#include "unity.h"
#include "unity_test_runner.h"
#include "esp_heap_caps.h"
#include "esp_newlib.h"

#define TEST_MEMORY_LEAK_THRESHOLD_DEFAULT 0
static int leak_threshold = TEST_MEMORY_LEAK_THRESHOLD_DEFAULT;
void set_leak_threshold(int threshold)
{
leak_threshold = threshold;
}

static size_t before_free_8bit;
static size_t before_free_32bit;

static void check_leak(size_t before_free, size_t after_free, const char *type)
{
ssize_t delta = after_free - before_free;
printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta);
TEST_ASSERT_MESSAGE(delta >= leak_threshold, "memory leak");
}

void setUp(void)
{
before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
}

void tearDown(void)
{
esp_reent_cleanup(); //clean up some of the newlib's lazy allocations
size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT);
size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT);
check_leak(before_free_8bit, after_free_8bit, "8BIT");
check_leak(before_free_32bit, after_free_32bit, "32BIT");

leak_threshold = TEST_MEMORY_LEAK_THRESHOLD_DEFAULT;
}

void app_main(void)
{
printf("Running expat component tests\n");
unity_run_menu();
}
7 changes: 7 additions & 0 deletions expat/test_apps/pytest_expat.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import pytest


@pytest.mark.esp32
@pytest.mark.esp32c3
def test_expat(dut) -> None:
dut.run_all_single_board_cases()
4 changes: 4 additions & 0 deletions expat/test_apps/sdkconfig.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# This file was generated using idf.py save-defconfig. It can be edited manually.
# Espressif IoT Development Framework (ESP-IDF) 5.4.0 Project Minimal Configuration
#
CONFIG_ESP_TASK_WDT_INIT=n

0 comments on commit 2dc22c6

Please sign in to comment.