Bläddra i källkod

touch_sensor: move unit tests to test_app

wangyuanze 3 år sedan
förälder
incheckning
5e4ab6481f

+ 8 - 0
components/driver/.build-test-rules.yml

@@ -43,3 +43,11 @@ components/driver/test_apps/sdm:
 components/driver/test_apps/temperature_sensor:
   disable:
     - if: SOC_TEMP_SENSOR_SUPPORTED != 1
+
+components/driver/test_apps/touch_sensor_v1:
+  disable:
+    - if: SOC_TOUCH_VERSION_1 != 1
+
+components/driver/test_apps/touch_sensor_v2:
+  disable:
+    - if: SOC_TOUCH_VERSION_2 != 1

+ 2 - 2
components/driver/test/CMakeLists.txt

@@ -1,5 +1,5 @@
-idf_component_register(SRC_DIRS . param_test touch_sensor_test dac_dma_test
-                       PRIV_INCLUDE_DIRS include param_test/include touch_sensor_test/include
+idf_component_register(SRC_DIRS . param_test dac_dma_test
+                       PRIV_INCLUDE_DIRS include param_test/include
                        PRIV_REQUIRES cmock test_utils driver nvs_flash esp_serial_slave_link
                                      esp_timer esp_adc esp_event esp_wifi)
 target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")

+ 5 - 0
components/driver/test_apps/touch_sensor_v1/CMakeLists.txt

@@ -0,0 +1,5 @@
+# This is the project CMakeLists.txt file for the test subproject
+cmake_minimum_required(VERSION 3.16)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(touch_sensor_v1_test)

+ 2 - 0
components/driver/test_apps/touch_sensor_v1/README.md

@@ -0,0 +1,2 @@
+| Supported Targets | ESP32 |
+| ----------------- | ----- |

+ 3 - 0
components/driver/test_apps/touch_sensor_v1/main/CMakeLists.txt

@@ -0,0 +1,3 @@
+idf_component_register(SRCS "test_app_main.c" "test_touch_v1.c"
+                       WHOLE_ARCHIVE
+)

+ 40 - 0
components/driver/test_apps/touch_sensor_v1/main/test_app_main.c

@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include "unity.h"
+#include "unity_test_runner.h"
+#include "esp_heap_caps.h"
+
+#define TEST_MEMORY_LEAK_THRESHOLD (-200)
+
+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 >= TEST_MEMORY_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)
+{
+    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");
+}
+
+void app_main(void)
+{
+    unity_run_menu();
+}

+ 18 - 11
components/driver/test/touch_sensor_test/test_touch_v1.c → components/driver/test_apps/touch_sensor_v1/main/test_touch_v1.c

@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */
@@ -8,7 +8,6 @@
  Tests for the touch sensor device driver for ESP32
 */
 #include "sdkconfig.h"
-#if CONFIG_IDF_TARGET_ESP32
 
 #include "esp_system.h"
 #include "driver/touch_pad.h"
@@ -17,8 +16,6 @@
 #include "freertos/FreeRTOS.h"
 #include "freertos/task.h"
 #include "esp_log.h"
-#include "nvs_flash.h"
-#include "test_utils.h"
 #include "soc/rtc_cntl_reg.h"
 #include "soc/rtc_cntl_struct.h"
 #include "soc/sens_reg.h"
@@ -28,6 +25,9 @@
 #include "soc/rtc_io_reg.h"
 #include "soc/rtc_io_struct.h"
 #include "esp_rom_sys.h"
+#if CONFIG_PM_ENABLE
+#include "esp_pm.h"
+#endif
 
 static const char *TAG = "test_touch";
 
@@ -40,9 +40,9 @@ static const char *TAG = "test_touch";
    TEST_ASSERT_EQUAL_UINT32(REG_GET_FIELD(RTC_IO_DATE_REG, RTC_IO_IO_DATE), RTCIO.date.date);           \
 })
 
-#define TOUCH_READ_ERROR     (100)
-#define TEST_TOUCH_COUNT_NUM (10)
-#define TEST_TOUCH_CHANNEL   (3)
+#define TOUCH_READ_ERROR_THRESH (0.1) // 10% error
+#define TEST_TOUCH_COUNT_NUM    (10)
+#define TEST_TOUCH_CHANNEL      (3)
 static touch_pad_t touch_list[TEST_TOUCH_CHANNEL] = {
     // TOUCH_PAD_NUM0,
     // TOUCH_PAD_NUM1 is GPIO0, for download.
@@ -158,7 +158,7 @@ static esp_err_t test_touch_timer_read(void)
         for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) {
             TEST_ESP_OK( touch_pad_read(touch_list[i], &touch_temp[i]) );
             TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp[i]);
-            TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+            TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
         }
         vTaskDelay(50 / portTICK_PERIOD_MS);
     }
@@ -192,7 +192,7 @@ static esp_err_t test_touch_filtered_read(void)
             TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_value);
             TEST_ESP_OK( touch_pad_read_filtered(touch_list[i], &touch_temp) );
             TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp);
-            TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value);
+            TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value);
             printf("T%d:[%4d] ", touch_list[i], touch_value);
         }
         vTaskDelay(50 / portTICK_PERIOD_MS);
@@ -207,11 +207,20 @@ static esp_err_t test_touch_filtered_read(void)
 // test the basic configuration function with right parameters and error parameters
 TEST_CASE("Touch Sensor all channel read test", "[touch]")
 {
+#if CONFIG_PM_ENABLE
+    esp_pm_lock_handle_t pm_lock;
+    esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "test_touch", &pm_lock);
+    esp_pm_lock_acquire(pm_lock);
+#endif
     TOUCH_REG_BASE_TEST();
     test_touch_sw_read_test_runner();
     TEST_ESP_OK( test_touch_sw_read() );
     TEST_ESP_OK( test_touch_timer_read() );
     TEST_ESP_OK( test_touch_filtered_read() );
+#if CONFIG_PM_ENABLE
+    esp_pm_lock_release(pm_lock);
+    esp_pm_lock_delete(pm_lock);
+#endif
 }
 
 static int test_touch_parameter(touch_pad_t pad_num, int meas_time, int slp_time, int vol_h, int vol_l, int vol_a, int slope)
@@ -367,5 +376,3 @@ TEST_CASE("Touch Sensor interrupt test", "[touch]")
 {
     TEST_ESP_OK( test_touch_interrupt() );
 }
-
-#endif // CONFIG_IDF_TARGET_ESP32

+ 12 - 0
components/driver/test_apps/touch_sensor_v1/pytest_touch_sensor_v1.py

@@ -0,0 +1,12 @@
+# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
+# SPDX-License-Identifier: Unlicense OR CC0-1.0
+import pytest
+from pytest_embedded import Dut
+
+
+@pytest.mark.esp32
+@pytest.mark.generic
+def test_touch_sensor_v1(dut: Dut) -> None:
+    dut.expect_exact('Press ENTER to see the list of tests')
+    dut.write('*')
+    dut.expect_unity_test_output(timeout=60)

+ 2 - 0
components/driver/test_apps/touch_sensor_v1/sdkconfig.defaults

@@ -0,0 +1,2 @@
+CONFIG_FREERTOS_HZ=1000
+CONFIG_ESP_TASK_WDT=n

+ 5 - 0
components/driver/test_apps/touch_sensor_v2/CMakeLists.txt

@@ -0,0 +1,5 @@
+# This is the project CMakeLists.txt file for the test subproject
+cmake_minimum_required(VERSION 3.16)
+
+include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+project(touch_sensor_v2_test)

+ 2 - 0
components/driver/test_apps/touch_sensor_v2/README.md

@@ -0,0 +1,2 @@
+| Supported Targets | ESP32-S2 | ESP32-S3 |
+| ----------------- | -------- | -------- |

+ 3 - 0
components/driver/test_apps/touch_sensor_v2/main/CMakeLists.txt

@@ -0,0 +1,3 @@
+idf_component_register(SRCS "test_app_main.c" "test_touch_v2.c" "touch_scope.c"
+                       WHOLE_ARCHIVE
+)

+ 41 - 0
components/driver/test_apps/touch_sensor_v2/main/test_app_main.c

@@ -0,0 +1,41 @@
+/*
+ * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include "unity.h"
+#include "unity_test_runner.h"
+#include "esp_heap_caps.h"
+
+// que_touch may be created in any case and reused among all cases so we can't free it, the threshold is left for that
+#define TEST_MEMORY_LEAK_THRESHOLD (-500)
+
+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 >= TEST_MEMORY_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)
+{
+    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");
+}
+
+void app_main(void)
+{
+    unity_run_menu();
+}

+ 18 - 25
components/driver/test/touch_sensor_test/test_touch_v2.c → components/driver/test_apps/touch_sensor_v2/main/test_touch_v2.c

@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */
@@ -8,7 +8,6 @@
  Tests for the touch sensor device driver for ESP32-S2 & ESP32-S3
 */
 #include "sdkconfig.h"
-#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
 
 #include <string.h>
 #include <inttypes.h>
@@ -21,7 +20,6 @@
 #include "freertos/semphr.h"
 #include "freertos/queue.h"
 #include "esp_log.h"
-#include "test_utils.h"
 #include "soc/rtc_cntl_reg.h"
 #include "soc/rtc_cntl_struct.h"
 #include "soc/sens_reg.h"
@@ -60,7 +58,7 @@ void test_pxp_deinit_io(void)
 #endif
 
 #define TOUCH_READ_INVALID_VAL          (SOC_TOUCH_PAD_THRESHOLD_MAX)
-#define TOUCH_READ_ERROR                (100)
+#define TOUCH_READ_ERROR_THRESH         (0.1) // 10% error
 #define TOUCH_INTR_THRESHOLD            (0.1)
 #define TOUCH_EXCEED_TIME_MS            (1000)
 
@@ -235,7 +233,7 @@ esp_err_t test_touch_sw_read(void)
         /* Check the stable of reading. */
         for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) {
             if (touch_temp[i]) {
-                TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+                TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
             }
             touch_temp[i] = touch_value[i];
         }
@@ -304,7 +302,7 @@ esp_err_t test_touch_timer_read(void)
         printf("\n");
         for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) {
             if (touch_temp[i]) {
-                TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+                TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
             }
             touch_temp[i] = touch_value[i];
         }
@@ -369,10 +367,10 @@ esp_err_t test_touch_filtered_read(void)
         TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_value[i]);
         TEST_ESP_OK( touch_pad_read_raw_data(touch_list[i], &touch_temp[i]) );
         TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp[i]);
-        TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+        TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
         TEST_ESP_OK( touch_pad_filter_read_smooth(touch_list[i], &touch_temp[i]) );
         TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp[i]);
-        TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+        TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
     }
     printf("touch filter init value:\n");
     printf_touch_hw_read("raw  ");
@@ -386,13 +384,13 @@ esp_err_t test_touch_filtered_read(void)
         for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) {
             TEST_ESP_OK( touch_pad_read_raw_data(touch_list[i], &touch_value[i]) );
             TEST_ESP_OK( touch_pad_read_benchmark(touch_list[i], &touch_temp[i]) );
-            TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+            TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
             TEST_ESP_OK( touch_pad_filter_read_smooth(touch_list[i], &touch_temp[i]) );
-            TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+            TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
         }
         for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) {
             if (touch_temp[i]) {
-                TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]);
+                TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]);
             }
             touch_temp[i] = touch_value[i];
         }
@@ -461,15 +459,15 @@ int test_touch_base_parameter(touch_pad_t pad_num, int meas_time, int slp_time,
         /* Correctness of reading. Ideal: benchmark == raw data == smooth data. */
         TEST_ESP_OK( touch_pad_read_raw_data(pad_num, &touch_value) );
         TEST_ESP_OK( touch_pad_read_benchmark(pad_num, &touch_filter) );
-        TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_filter, touch_value);
+        TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_filter*TOUCH_READ_ERROR_THRESH), touch_filter, touch_value);
         TEST_ESP_OK( touch_pad_filter_read_smooth(pad_num, &touch_filter) );
-        TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_filter, touch_value);
+        TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_filter*TOUCH_READ_ERROR_THRESH), touch_filter, touch_value);
 
         /* Stable of reading */
         TEST_ESP_OK( touch_pad_read_raw_data(pad_num, &touch_value) );
         TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_value);
         if (touch_temp) {
-            TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value);
+            TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value);
         }
         touch_temp = touch_value;
 
@@ -764,7 +762,6 @@ static void test_touch_intr_cb(void *arg)
     evt.pad_num = touch_pad_get_current_meas_channel();
 
     if (!evt.intr_mask) {
-        esp_rom_printf(".");
         return;
     }
     if (evt.intr_mask & TOUCH_PAD_INTR_MASK_SCAN_DONE) {
@@ -778,7 +775,6 @@ static void test_touch_intr_cb(void *arg)
     }
     if (evt.intr_mask & TOUCH_PAD_INTR_MASK_TIMEOUT) {
         s_touch_timeout_mask |= (BIT(evt.pad_num));
-        esp_rom_printf("-%dtout-", SENS.sar_touch_status0.touch_scan_curr);
     }
 
     xQueueSendFromISR(que_touch, &evt, &task_awoken);
@@ -1668,13 +1664,13 @@ esp_err_t test_touch_sleep_reading_stable(touch_pad_t sleep_pad)
         for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) {
             TEST_ESP_OK( touch_pad_sleep_channel_read_data(sleep_pad, &touch_value) );
             TEST_ESP_OK( touch_pad_sleep_channel_read_benchmark(sleep_pad, &touch_temp) );
-            TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value);
+            TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value);
             TEST_ESP_OK( touch_pad_sleep_channel_read_smooth(sleep_pad, &touch_temp) );
-            TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value);
+            TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value);
         }
         for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) {
             if (touch_temp) {
-                TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value);
+                TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value);
             }
             touch_temp = touch_value;
         }
@@ -1929,6 +1925,8 @@ esp_err_t test_touch_sleep_pad_interrupt_wakeup_deep_sleep(touch_pad_t sleep_pad
     return ESP_OK;
 }
 
+#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3) //TODO: IDF-5218
+
 #include <sys/time.h>
 #include "esp_sleep.h"
 
@@ -1979,10 +1977,6 @@ static void test_deep_sleep_init(void)
 
 TEST_CASE("Touch Sensor sleep pad wakeup deep sleep test", "[touch][ignore]")
 {
-//TODO: IDF-5218
-#if TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2)
-    abort();
-#endif //TEMPORARY_DISABLED_FOR_TARGETS(..)
     test_deep_sleep_init();
 
     /* Change the work duty of touch sensor to reduce current. */
@@ -1997,6 +1991,7 @@ TEST_CASE("Touch Sensor sleep pad wakeup deep sleep test", "[touch][ignore]")
 
     esp_deep_sleep_start();
 }
+#endif //TEMPORARY_DISABLED_FOR_TARGETS(..)
 
 #include "touch_scope.h"
 /*
@@ -2140,5 +2135,3 @@ void test_touch_slope_debug(int pad_num)
 #endif
     TEST_ESP_OK( touch_pad_deinit() );
 }
-
-#endif // CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3

+ 1 - 1
components/driver/test/touch_sensor_test/touch_scope.c → components/driver/test_apps/touch_sensor_v2/main/touch_scope.c

@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */

+ 1 - 1
components/driver/test/touch_sensor_test/include/touch_scope.h → components/driver/test_apps/touch_sensor_v2/main/touch_scope.h

@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */

+ 13 - 0
components/driver/test_apps/touch_sensor_v2/pytest_touch_sensor_v2.py

@@ -0,0 +1,13 @@
+# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
+# SPDX-License-Identifier: Unlicense OR CC0-1.0
+import pytest
+from pytest_embedded import Dut
+
+
+@pytest.mark.esp32s2
+@pytest.mark.esp32s3
+@pytest.mark.generic
+def test_touch_sensor_v2(dut: Dut) -> None:
+    dut.expect_exact('Press ENTER to see the list of tests')
+    dut.write('*')
+    dut.expect_unity_test_output(timeout=120)

+ 2 - 0
components/driver/test_apps/touch_sensor_v2/sdkconfig.defaults

@@ -0,0 +1,2 @@
+CONFIG_FREERTOS_HZ=1000
+CONFIG_ESP_TASK_WDT=n