From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Cc: "René Scharfe" <l.s.r@web.de>,
"Junio C Hamano" <gitster@pobox.com>,
"Kyle Lippincott" <spectral@google.com>,
"Phillip Wood" <phillip.wood@dunelm.org.uk>,
"Josh Steadmon" <steadmon@google.com>,
rsbecker@nexbridge.com,
"Edward Thomson" <ethomson@edwardthomson.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>
Subject: [PATCH v7 14/14] clar: add CMake support
Date: Tue, 3 Sep 2024 11:15:15 +0200 [thread overview]
Message-ID: <d51c146cd9d866b4900e0e75a4bf98ca45c720f5.1725349234.git.ps@pks.im> (raw)
In-Reply-To: <cover.1725349234.git.ps@pks.im>
From: Johannes Schindelin <johannes.schindelin@gmx.de>
Now that we're using `clar` as powerful test framework, we have to
adjust the Visual C build (read: the CMake definition) to be able to
handle that, too.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
contrib/buildsystems/CMakeLists.txt | 53 +++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 832f46b316b..608fd3fe709 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -1004,6 +1004,59 @@ foreach(unit_test ${unit_test_PROGRAMS})
endif()
endforeach()
+parse_makefile_for_scripts(unit_tests_SUITES "UNIT_TESTS_SUITES" "")
+
+set(clar_decls "")
+set(clar_cbs "")
+set(clar_cbs_count 0)
+set(clar_suites "static struct clar_suite _clar_suites[] = {\n")
+list(LENGTH unit_tests_SUITES clar_suites_count)
+foreach(suite ${unit_tests_SUITES})
+ file(STRINGS "${CMAKE_SOURCE_DIR}/t/unit-tests/${suite}.c" decls
+ REGEX "^void test_${suite}__[a-zA-Z_0-9][a-zA-Z_0-9]*\\(void\\)$")
+
+ list(LENGTH decls decls_count)
+ string(REGEX REPLACE "void (test_${suite}__([a-zA-Z_0-9]*))\\(void\\)" " { \"\\2\", &\\1 },\n" cbs ${decls})
+ string(JOIN "" cbs ${cbs})
+ list(TRANSFORM decls PREPEND "extern ")
+ string(JOIN ";\n" decls ${decls})
+
+ string(APPEND clar_decls "${decls};\n")
+ string(APPEND clar_cbs
+ "static const struct clar_func _clar_cb_${suite}[] = {\n"
+ ${cbs}
+ "};\n")
+ string(APPEND clar_suites
+ " {\n"
+ " \"${suite}\",\n"
+ " { NULL, NULL },\n"
+ " { NULL, NULL },\n"
+ " _clar_cb_${suite}, ${decls_count}, 1\n"
+ " },\n")
+ math(EXPR clar_cbs_count "${clar_cbs_count}+${decls_count}")
+endforeach()
+string(APPEND clar_suites
+ "};\n"
+ "static const size_t _clar_suite_count = ${clar_suites_count};\n"
+ "static const size_t _clar_callback_count = ${clar_cbs_count};\n")
+file(WRITE "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h" "${clar_decls}")
+file(WRITE "${CMAKE_BINARY_DIR}/t/unit-tests/clar.suite" "${clar_decls}" "${clar_cbs}" "${clar_suites}")
+
+list(TRANSFORM unit_tests_SUITES PREPEND "${CMAKE_SOURCE_DIR}/t/unit-tests/")
+list(TRANSFORM unit_tests_SUITES APPEND ".c")
+add_library(unit-tests-lib ${unit_tests_SUITES} "${CMAKE_SOURCE_DIR}/t/unit-tests/clar/clar.c")
+target_include_directories(unit-tests-lib PRIVATE "${CMAKE_SOURCE_DIR}/t/unit-tests")
+add_executable(unit-tests "${CMAKE_SOURCE_DIR}/t/unit-tests/unit-test.c")
+target_link_libraries(unit-tests unit-tests-lib common-main)
+set_target_properties(unit-tests
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/t/unit-tests/bin)
+if(MSVC)
+ set_target_properties(unit-tests
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/t/unit-tests/bin)
+ set_target_properties(unit-tests
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/t/unit-tests/bin)
+endif()
+
#test-tool
parse_makefile_for_sources(test-tool_SOURCES "TEST_BUILTINS_OBJS")
add_library(test-lib OBJECT ${CMAKE_SOURCE_DIR}/t/unit-tests/test-lib.c)
--
2.46.0.421.g159f2d50e7.dirty
next prev parent reply other threads:[~2024-09-03 9:15 UTC|newest]
Thread overview: 172+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-31 9:04 [RFC PATCH 0/3] Introduce clar testing framework Patrick Steinhardt
2024-07-31 9:04 ` [RFC PATCH 1/3] t: import the clar unit " Patrick Steinhardt
2024-07-31 18:27 ` Josh Steadmon
2024-07-31 19:36 ` Junio C Hamano
2024-08-01 9:32 ` Patrick Steinhardt
2024-07-31 20:04 ` rsbecker
2024-08-01 9:31 ` Patrick Steinhardt
2024-08-01 12:15 ` rsbecker
2024-08-01 12:54 ` rsbecker
2024-08-01 13:37 ` Patrick Steinhardt
2024-08-01 13:47 ` rsbecker
2024-08-01 13:50 ` Patrick Steinhardt
2024-08-01 13:53 ` rsbecker
2024-08-01 13:55 ` Patrick Steinhardt
2024-08-01 14:04 ` rsbecker
2024-08-01 14:43 ` Patrick Steinhardt
2024-08-01 16:31 ` rsbecker
2024-08-01 17:06 ` rsbecker
2024-08-01 17:43 ` [RFC PATCH 1/3] t: import the clar unit testing framework (better one) rsbecker
2024-08-01 18:12 ` René Scharfe
2024-08-01 18:33 ` rsbecker
2024-07-31 9:04 ` [RFC PATCH 2/3] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-07-31 16:48 ` René Scharfe
2024-08-01 9:32 ` Patrick Steinhardt
2024-07-31 17:01 ` Junio C Hamano
2024-07-31 21:39 ` Junio C Hamano
2024-08-01 9:32 ` Patrick Steinhardt
2024-07-31 9:04 ` [RFC PATCH 3/3] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-07-31 15:51 ` [RFC PATCH 0/3] Introduce clar testing framework Junio C Hamano
2024-07-31 15:56 ` rsbecker
2024-07-31 16:52 ` Junio C Hamano
2024-07-31 20:25 ` rsbecker
2024-07-31 20:37 ` rsbecker
2024-08-01 9:31 ` Patrick Steinhardt
2024-08-01 9:31 ` Patrick Steinhardt
2024-07-31 18:33 ` Josh Steadmon
2024-08-01 9:31 ` Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 0/7] " Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 1/7] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 2/7] t: import the clar unit testing framework Patrick Steinhardt
2024-08-06 22:18 ` Josh Steadmon
2024-08-07 5:52 ` Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 3/7] t/clar: fix whitespace errors Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 4/7] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 5/7] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-06 14:14 ` [RFC PATCH v2 6/7] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-06 23:05 ` Josh Steadmon
2024-08-07 5:52 ` Patrick Steinhardt
2024-08-06 14:15 ` [RFC PATCH v2 7/7] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 0/7] Introduce clar testing framework Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 1/7] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 2/7] t: import the clar unit testing framework Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 3/7] t/clar: fix whitespace errors Patrick Steinhardt
2024-08-13 15:25 ` Junio C Hamano
2024-08-13 15:31 ` rsbecker
2024-08-13 18:43 ` Junio C Hamano
2024-08-13 19:14 ` rsbecker
2024-08-13 20:42 ` Junio C Hamano
2024-08-14 5:58 ` Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 4/7] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 5/7] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 6/7] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-08 5:38 ` [RFC PATCH v3 7/7] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-12 18:10 ` [RFC PATCH v3 0/7] Introduce clar testing framework Josh Steadmon
2024-08-12 18:13 ` rsbecker
2024-08-12 20:50 ` Junio C Hamano
2024-08-12 20:58 ` rsbecker
2024-08-12 22:13 ` Junio C Hamano
2024-08-13 7:23 ` Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 " Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 1/7] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 2/7] t: import the clar unit testing framework Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 3/7] t/clar: fix whitespace errors Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 4/7] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 5/7] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 6/7] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-15 9:47 ` [PATCH v4 7/7] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-15 16:21 ` [PATCH v4 0/7] Introduce clar testing framework Junio C Hamano
2024-08-16 5:10 ` Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 0/9] " Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 1/9] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 2/9] t: import the clar unit testing framework Patrick Steinhardt
2024-08-16 13:37 ` Phillip Wood
2024-08-23 12:16 ` Johannes Schindelin
2024-08-28 13:20 ` Phillip Wood
2024-08-19 21:21 ` Junio C Hamano
2024-08-19 21:50 ` rsbecker
2024-08-19 22:13 ` Junio C Hamano
2024-08-19 22:38 ` rsbecker
2024-08-20 12:59 ` Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 3/9] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 4/9] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 5/9] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 6/9] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 7/9] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-16 7:04 ` [PATCH v5 8/9] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-16 13:38 ` Phillip Wood
2024-08-16 16:11 ` Junio C Hamano
2024-08-20 12:59 ` Patrick Steinhardt
2024-08-16 7:05 ` [PATCH v5 9/9] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-16 13:38 ` Phillip Wood
2024-08-20 12:59 ` Patrick Steinhardt
2024-08-18 6:39 ` Junio C Hamano
2024-08-16 13:37 ` [PATCH v5 0/9] Introduce clar testing framework Phillip Wood
2024-08-20 12:59 ` Patrick Steinhardt
2024-08-28 15:15 ` phillip.wood123
2024-08-20 14:02 ` [PATCH v6 00/13] " Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 01/13] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 02/13] t: import the clar unit testing framework Patrick Steinhardt
2024-08-28 13:16 ` Phillip Wood
2024-09-03 7:45 ` Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 03/13] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 04/13] clar: avoid compile error with mingw-w64 Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 05/13] clar(win32): avoid compile error due to unused `fs_copy()` Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 06/13] clar: stop including `shellapi.h` unnecessarily Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 07/13] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 08/13] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 09/13] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 10/13] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 11/13] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-08-28 13:17 ` Phillip Wood
2024-09-03 7:45 ` Patrick Steinhardt
2024-09-03 9:48 ` phillip.wood123
2024-09-04 6:37 ` Patrick Steinhardt
2024-09-04 9:31 ` phillip.wood123
2024-08-20 14:02 ` [PATCH v6 12/13] t/unit-tests: convert ctype " Patrick Steinhardt
2024-08-28 13:18 ` Phillip Wood
2024-09-03 7:45 ` Patrick Steinhardt
2024-08-20 14:02 ` [PATCH v6 13/13] clar: add CMake support Patrick Steinhardt
2024-08-28 13:18 ` [PATCH v6 00/13] Introduce clar testing framework Phillip Wood
2024-08-28 14:03 ` Patrick Steinhardt
2024-08-28 14:58 ` phillip.wood123
2024-09-03 9:14 ` [PATCH v7 00/14] " Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 01/14] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 02/14] t: import the clar unit testing framework Patrick Steinhardt
2024-09-03 9:47 ` Eric Sunshine
2024-09-04 6:38 ` Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 03/14] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 04/14] clar: avoid compile error with mingw-w64 Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 05/14] clar(win32): avoid compile error due to unused `fs_copy()` Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 06/14] clar: stop including `shellapi.h` unnecessarily Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 07/14] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-09-03 9:14 ` [PATCH v7 08/14] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-09-03 9:15 ` [PATCH v7 09/14] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-09-03 9:15 ` [PATCH v7 10/14] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-09-03 9:15 ` [PATCH v7 11/14] t/unit-tests: implement test driver Patrick Steinhardt
2024-09-04 13:35 ` Phillip Wood
2024-09-04 14:12 ` Patrick Steinhardt
2024-09-04 14:35 ` phillip.wood123
2024-09-03 9:15 ` [PATCH v7 12/14] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-09-03 9:15 ` [PATCH v7 13/14] t/unit-tests: convert ctype " Patrick Steinhardt
2024-09-03 9:15 ` Patrick Steinhardt [this message]
2024-09-04 13:35 ` [PATCH v7 00/14] Introduce clar testing framework Phillip Wood
2024-09-04 14:12 ` Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 " Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 01/14] t: do not pass GIT_TEST_OPTS to unit tests with prove Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 02/14] t: import the clar unit testing framework Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 03/14] t/clar: fix compatibility with NonStop Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 04/14] clar: avoid compile error with mingw-w64 Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 05/14] clar(win32): avoid compile error due to unused `fs_copy()` Patrick Steinhardt
2024-09-04 14:16 ` [PATCH v8 06/14] clar: stop including `shellapi.h` unnecessarily Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 07/14] Makefile: fix sparse dependency on GENERATED_H Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 08/14] Makefile: make hdr-check depend on generated headers Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 09/14] Makefile: do not use sparse on third-party sources Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 10/14] Makefile: wire up the clar unit testing framework Patrick Steinhardt
2024-09-09 18:17 ` Junio C Hamano
2024-09-10 6:20 ` Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 11/14] t/unit-tests: implement test driver Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 12/14] t/unit-tests: convert strvec tests to use clar Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 13/14] t/unit-tests: convert ctype " Patrick Steinhardt
2024-09-04 14:17 ` [PATCH v8 14/14] clar: add CMake support Patrick Steinhardt
2024-09-04 14:32 ` [PATCH v8 00/14] Introduce clar testing framework phillip.wood123
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d51c146cd9d866b4900e0e75a4bf98ca45c720f5.1725349234.git.ps@pks.im \
--to=ps@pks.im \
--cc=Johannes.Schindelin@gmx.de \
--cc=ethomson@edwardthomson.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=l.s.r@web.de \
--cc=phillip.wood@dunelm.org.uk \
--cc=rsbecker@nexbridge.com \
--cc=spectral@google.com \
--cc=steadmon@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).