lishuxu commented on code in PR #151:
URL: https://github.com/apache/iceberg-cpp/pull/151#discussion_r2221944629


##########
test/CMakeLists.txt:
##########
@@ -28,73 +28,97 @@ set(ICEBERG_TEST_RESOURCES 
"${CMAKE_SOURCE_DIR}/test/resources")
 configure_file("${CMAKE_SOURCE_DIR}/test/test_config.h.in"
                "${CMAKE_BINARY_DIR}/iceberg/test/test_config.h")
 
-add_executable(schema_test)
-target_sources(schema_test
-               PRIVATE name_mapping_test.cc
-                       schema_test.cc
-                       schema_field_test.cc
-                       type_test.cc
-                       transform_test.cc
-                       partition_field_test.cc
-                       partition_spec_test.cc
-                       sort_field_test.cc
-                       sort_order_test.cc
-                       snapshot_test.cc
-                       schema_util_test.cc)
-target_link_libraries(schema_test PRIVATE iceberg_static GTest::gtest_main 
GTest::gmock)
-add_test(NAME schema_test COMMAND schema_test)
-
-add_executable(table_test)
-target_include_directories(table_test PRIVATE "${CMAKE_BINARY_DIR}")
-target_sources(table_test PRIVATE test_common.cc json_internal_test.cc 
table_test.cc
-                                  schema_json_test.cc)
-target_link_libraries(table_test PRIVATE iceberg_static GTest::gtest_main 
GTest::gmock)
-add_test(NAME table_test COMMAND table_test)
-
-add_executable(expression_test)
-target_sources(expression_test PRIVATE expression_test.cc literal_test.cc)
-target_link_libraries(expression_test PRIVATE iceberg_static GTest::gtest_main
-                                              GTest::gmock)
-add_test(NAME expression_test COMMAND expression_test)
-
-add_executable(json_serde_test)
-target_include_directories(json_serde_test PRIVATE "${CMAKE_BINARY_DIR}")
-target_sources(json_serde_test PRIVATE test_common.cc json_internal_test.cc
-                                       metadata_serde_test.cc 
schema_json_test.cc)
-target_link_libraries(json_serde_test PRIVATE iceberg_static GTest::gtest_main
-                                              GTest::gmock)
-add_test(NAME json_serde_test COMMAND json_serde_test)
-
-add_executable(util_test)
-target_sources(util_test PRIVATE formatter_test.cc config_test.cc 
visit_type_test.cc)
-target_link_libraries(util_test PRIVATE iceberg_static GTest::gtest_main 
GTest::gmock)
-add_test(NAME util_test COMMAND util_test)
+function(iceberg_add_test test_name)
+  cmake_parse_arguments(ARG
+                        "USE_BUNDLE"
+                        "INCLUDE_DIR"
+                        "SRCS"
+                        ${ARGN})
+
+  add_executable(${test_name})
+  if(ARG_INCLUDE_DIR)
+    target_include_directories(${test_name} PRIVATE "${ARG_INCLUDE_DIR}")
+  endif()
+
+  target_sources(${test_name} PRIVATE ${ARG_SRCS})
+
+  if(ARG_USE_BUNDLE)
+    target_link_libraries(${test_name} PRIVATE iceberg_bundle_static 
GTest::gtest_main
+                                               GTest::gmock)
+  else()
+    target_link_libraries(${test_name} PRIVATE iceberg_static GTest::gtest_main
+                                               GTest::gmock)
+  endif()
+
+  add_test(NAME ${test_name} COMMAND ${test_name})
+endfunction()
+
+iceberg_add_test(schema_test
+                 SRCS
+                 name_mapping_test.cc
+                 schema_test.cc
+                 schema_field_test.cc
+                 type_test.cc
+                 transform_test.cc
+                 partition_field_test.cc
+                 partition_spec_test.cc
+                 sort_field_test.cc
+                 sort_order_test.cc
+                 snapshot_test.cc
+                 schema_util_test.cc)
+
+iceberg_add_test(table_test
+                 INCLUDE_DIR
+                 "${CMAKE_BINARY_DIR}"
+                 SRCS
+                 test_common.cc

Review Comment:
   About half of the tests don't use test_common.cc, so I didn’t include it as 
a default source file.
   
   
   Ask ChatGPT
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to