wgtmac commented on code in PR #151: URL: https://github.com/apache/iceberg-cpp/pull/151#discussion_r2221343296
########## 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}") Review Comment: What about removing `INCLUDE_DIR` argument? We can add `${CMAKE_BINARY_DIR}` to every test executable. ########## 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" Review Comment: ```suggestion "INCLUDES" "SOURCES" ``` ########## 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) Review Comment: ```suggestion function(add_iceberg_test test_name) ``` ########## 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: `test_common.cc` can also be added by default in the function. -- 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