|
|
@@ -1,25 +1,78 @@
|
|
|
-/* IDF-specific additions to "Unity Fixture" */
|
|
|
+// Copyright 2016-2021 Espressif Systems (Shanghai) Co. Ltd.
|
|
|
+//
|
|
|
+// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
+// you may not use this file except in compliance with the License.
|
|
|
+// You may obtain a copy of the License at
|
|
|
+//
|
|
|
+// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
+//
|
|
|
+// Unless required by applicable law or agreed to in writing, software
|
|
|
+// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
+// See the License for the specific language governing permissions and
|
|
|
+// limitations under the License.
|
|
|
+
|
|
|
+/* IDF-specific additions to "Unity Fixture".
|
|
|
+ * This file doesn't need to be included directly, it gets included into unity.h
|
|
|
+ * through unity_config.h.
|
|
|
+ */
|
|
|
+
|
|
|
#pragma once
|
|
|
|
|
|
-#ifndef CONFIG_IDF_TARGET
|
|
|
+#include "sdkconfig.h"
|
|
|
|
|
|
-/* A shorthand for running one test group from the main function */
|
|
|
-#define UNITY_MAIN(group_) do { \
|
|
|
- const char* argv[] = { "test", "-v" }; \
|
|
|
- const int argc = sizeof(argv)/sizeof(argv[0]); \
|
|
|
- int rc = UnityMain(argc, argv, TEST_ ## group_ ## _GROUP_RUNNER); \
|
|
|
- printf("\nTests finished, rc=%d\n", rc); \
|
|
|
- exit(rc); \
|
|
|
-} while(0)
|
|
|
+#ifdef __cplusplus
|
|
|
+extern "C" {
|
|
|
+#endif
|
|
|
|
|
|
-#else // CONFIG_IDF_TARGET
|
|
|
+#if !defined(CONFIG_IDF_TARGET) || defined(CONFIG_IDF_TARGET_LINUX)
|
|
|
+#define UNITY_MAYBE_EXIT(rc) do { exit(rc); } while(0)
|
|
|
+#else
|
|
|
+#define UNITY_MAYBE_EXIT(rc) do { (void) rc; } while(0)
|
|
|
+#endif
|
|
|
|
|
|
-/* A shorthand for running one test group from the main function */
|
|
|
-#define UNITY_MAIN(group_) do { \
|
|
|
+/* A shorthand for running all tests called from one function "func_", from the app_main function.
|
|
|
+ * Use this when there is more than one test group.
|
|
|
+ *
|
|
|
+ * Example:
|
|
|
+ *
|
|
|
+ * #include "unity.h"
|
|
|
+ * #include "unity_fixture.h"
|
|
|
+ *
|
|
|
+ * static_void run_all_tests(void) {
|
|
|
+ * RUN_TEST_GROUP(group1); // test group defined in another file, e.g. test_group1.c
|
|
|
+ * RUN_TEST_GROUP(group2); // test group defined in another file, e.g. test_group2.c
|
|
|
+ * }
|
|
|
+ *
|
|
|
+ * void app_main(void) {
|
|
|
+ * UNITY_MAIN_FUNC(run_all_tests);
|
|
|
+ * }
|
|
|
+ */
|
|
|
+#define UNITY_MAIN_FUNC(func_) do { \
|
|
|
const char* argv[] = { "test", "-v" }; \
|
|
|
const int argc = sizeof(argv)/sizeof(argv[0]); \
|
|
|
- int rc = UnityMain(argc, argv, TEST_ ## group_ ## _GROUP_RUNNER); \
|
|
|
+ int rc = UnityMain(argc, argv, func_); \
|
|
|
printf("\nTests finished, rc=%d\n", rc); \
|
|
|
+ UNITY_MAYBE_EXIT(rc); \
|
|
|
} while(0)
|
|
|
|
|
|
-#endif // CONFIG_IDF_TARGET
|
|
|
+/* A shorthand for running one test group from the app_main function, when there is only
|
|
|
+ * one test group and it is defined in the same file.
|
|
|
+ *
|
|
|
+ * Example:
|
|
|
+ *
|
|
|
+ * #include "unity.h"
|
|
|
+ * #include "unity_fixture.h"
|
|
|
+ *
|
|
|
+ * TEST_GROUP(my_feature);
|
|
|
+ * // also define TEST_SETUP, TEST_TEARDOWN, TESTs, TEST_GROUP_RUNNER
|
|
|
+ *
|
|
|
+ * void app_main(void) {
|
|
|
+ * UNITY_MAIN(my_feature);
|
|
|
+ * }
|
|
|
+ */
|
|
|
+#define UNITY_MAIN(group_) UNITY_MAIN_FUNC(TEST_ ## group_ ## _GROUP_RUNNER)
|
|
|
+
|
|
|
+#ifdef __cplusplus
|
|
|
+}
|
|
|
+#endif
|