summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-08 14:56:22 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-08 14:56:22 +1100
commit9f572cb92738c2f6d435f47fef9bad7344bc6e09 (patch)
treeb7d7145ee3d5ac19a2aea2c17e4e68c1164f02b1 /test
parente219925fac2d9b0b054445ac9c094d51ae30fd17 (diff)
downloadtangara-fw-9f572cb92738c2f6d435f47fef9bad7344bc6e09.tar.gz
Working test runner!!!
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt5
-rw-r--r--test/main/CMakeLists.txt5
-rw-r--r--test/main/main.cpp40
3 files changed, 39 insertions, 11 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index ddcc063a..8d8229d3 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,9 +1,14 @@
cmake_minimum_required(VERSION 3.16)
include(../common.cmake)
+idf_build_set_property(
+ COMPILE_OPTIONS "-DCATCH_CONFIG_NO_POSIX_SIGNALS -DCATCH_CONFIG_FAST_COMPILE" APPEND)
+
# Treat warnings as errors for test purposes.
list(APPEND EXTRA_WARNINGS "-Werror")
+list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/src/drivers")
+
# List all components that include tests here.
set(TEST_COMPONENTS "drivers")
diff --git a/test/main/CMakeLists.txt b/test/main/CMakeLists.txt
index 687802d4..650dcc24 100644
--- a/test/main/CMakeLists.txt
+++ b/test/main/CMakeLists.txt
@@ -1 +1,4 @@
-idf_component_register(SRCS "main.cpp" INCLUDE_DIRS "." REQUIRE "catch2")
+idf_component_register(
+ SRCS "main.cpp"
+ INCLUDE_DIRS "."
+ REQUIRES "catch2")
diff --git a/test/main/main.cpp b/test/main/main.cpp
index 06e733c4..8dbbda8e 100644
--- a/test/main/main.cpp
+++ b/test/main/main.cpp
@@ -1,17 +1,37 @@
#include <stdio.h>
#include <string.h>
-static void print_banner(const char* text);
+#include "esp_console.h"
+#include "esp_log.h"
+#include "esp_system.h"
-extern "C" {
- void app_main(void)
- {
- print_banner("Running tests without [ignore] tag");
- }
-}
+#include "catch_runner.hpp"
-static void print_banner(const char* text)
-{
- printf("\n#### %s #####\n\n", text);
+void register_catch2() {
+ esp_console_cmd_t cmd{
+ .command = "catch",
+ .help = "Execute the catch2 test runner. Use -? for options.",
+ .hint = NULL,
+ .func = &exec_catch2,
+ .argtable = NULL};
+ esp_console_cmd_register(&cmd);
}
+extern "C" void app_main(void) {
+ esp_console_repl_t* repl = nullptr;
+ esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT();
+ repl_config.max_history_len = 16;
+ repl_config.prompt = " →";
+ repl_config.max_cmdline_length = 256;
+ // Catch2 needs a huge stack, since it does a lot of pretty string formatting.
+ repl_config.task_stack_size = 1024 * 24;
+
+ esp_console_dev_uart_config_t hw_config =
+ ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT();
+ ESP_ERROR_CHECK(esp_console_new_repl_uart(&hw_config, &repl_config, &repl));
+
+ esp_console_register_help_command();
+ register_catch2();
+
+ ESP_ERROR_CHECK(esp_console_start_repl(repl));
+}