Skip to content

Commit deead7a

Browse files
lishuxushuxu.li
andauthored
refactor: Simplify test setup using a common CMake function (#151)
Co-authored-by: shuxu.li <[email protected]>
1 parent 378de75 commit deead7a

File tree

1 file changed

+86
-69
lines changed

1 file changed

+86
-69
lines changed

test/CMakeLists.txt

Lines changed: 86 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -28,75 +28,92 @@ set(ICEBERG_TEST_RESOURCES "${CMAKE_SOURCE_DIR}/test/resources")
2828
configure_file("${CMAKE_SOURCE_DIR}/test/test_config.h.in"
2929
"${CMAKE_BINARY_DIR}/iceberg/test/test_config.h")
3030

31-
add_executable(schema_test)
32-
target_sources(schema_test
33-
PRIVATE name_mapping_test.cc
34-
schema_test.cc
35-
schema_field_test.cc
36-
type_test.cc
37-
transform_test.cc
38-
partition_field_test.cc
39-
partition_spec_test.cc
40-
sort_field_test.cc
41-
sort_order_test.cc
42-
snapshot_test.cc
43-
schema_util_test.cc)
44-
target_link_libraries(schema_test PRIVATE iceberg_static GTest::gtest_main GTest::gmock)
45-
add_test(NAME schema_test COMMAND schema_test)
46-
47-
add_executable(table_test)
48-
target_include_directories(table_test PRIVATE "${CMAKE_BINARY_DIR}")
49-
target_sources(table_test PRIVATE test_common.cc json_internal_test.cc table_test.cc
50-
schema_json_test.cc)
51-
target_link_libraries(table_test PRIVATE iceberg_static GTest::gtest_main GTest::gmock)
52-
add_test(NAME table_test COMMAND table_test)
53-
54-
add_executable(expression_test)
55-
target_sources(expression_test PRIVATE expression_test.cc literal_test.cc)
56-
target_link_libraries(expression_test PRIVATE iceberg_static GTest::gtest_main
57-
GTest::gmock)
58-
add_test(NAME expression_test COMMAND expression_test)
59-
60-
add_executable(json_serde_test)
61-
target_include_directories(json_serde_test PRIVATE "${CMAKE_BINARY_DIR}")
62-
target_sources(json_serde_test PRIVATE test_common.cc json_internal_test.cc
63-
metadata_serde_test.cc schema_json_test.cc)
64-
target_link_libraries(json_serde_test PRIVATE iceberg_static GTest::gtest_main
65-
GTest::gmock)
66-
add_test(NAME json_serde_test COMMAND json_serde_test)
67-
68-
add_executable(util_test)
69-
target_sources(util_test PRIVATE formatter_test.cc config_test.cc visit_type_test.cc
70-
string_utils_test.cc)
71-
target_link_libraries(util_test PRIVATE iceberg_static GTest::gtest_main GTest::gmock)
72-
add_test(NAME util_test COMMAND util_test)
31+
function(add_iceberg_test test_name)
32+
set(options USE_BUNDLE)
33+
set(oneValueArgs)
34+
set(multiValueArgs SOURCES)
35+
cmake_parse_arguments(ARG
36+
"${options}"
37+
"${oneValueArgs}"
38+
"${multiValueArgs}"
39+
${ARGN})
40+
41+
add_executable(${test_name})
42+
target_include_directories(${test_name} PRIVATE "${CMAKE_BINARY_DIR}")
43+
44+
target_sources(${test_name} PRIVATE ${ARG_SOURCES})
45+
46+
if(ARG_USE_BUNDLE)
47+
target_link_libraries(${test_name} PRIVATE iceberg_bundle_static GTest::gtest_main
48+
GTest::gmock)
49+
else()
50+
target_link_libraries(${test_name} PRIVATE iceberg_static GTest::gtest_main
51+
GTest::gmock)
52+
endif()
53+
54+
add_test(NAME ${test_name} COMMAND ${test_name})
55+
endfunction()
56+
57+
add_iceberg_test(schema_test
58+
SOURCES
59+
name_mapping_test.cc
60+
schema_test.cc
61+
schema_field_test.cc
62+
type_test.cc
63+
transform_test.cc
64+
partition_field_test.cc
65+
partition_spec_test.cc
66+
sort_field_test.cc
67+
sort_order_test.cc
68+
snapshot_test.cc
69+
schema_util_test.cc)
70+
71+
add_iceberg_test(table_test
72+
SOURCES
73+
test_common.cc
74+
json_internal_test.cc
75+
table_test.cc
76+
schema_json_test.cc)
77+
78+
add_iceberg_test(expression_test SOURCES expression_test.cc literal_test.cc)
79+
80+
add_iceberg_test(json_serde_test
81+
SOURCES
82+
test_common.cc
83+
json_internal_test.cc
84+
metadata_serde_test.cc
85+
schema_json_test.cc)
86+
87+
add_iceberg_test(util_test
88+
SOURCES
89+
formatter_test.cc
90+
config_test.cc
91+
visit_type_test.cc
92+
string_utils_test.cc)
7393

7494
if(ICEBERG_BUILD_BUNDLE)
75-
add_executable(avro_test)
76-
target_sources(avro_test
77-
PRIVATE avro_data_test.cc
78-
avro_test.cc
79-
avro_schema_test.cc
80-
avro_stream_test.cc
81-
manifest_list_reader_test.cc
82-
manifest_reader_test.cc
83-
test_common.cc)
84-
target_link_libraries(avro_test PRIVATE iceberg_bundle_static GTest::gtest_main
85-
GTest::gmock)
86-
target_include_directories(avro_test PRIVATE "${CMAKE_BINARY_DIR}")
87-
add_test(NAME avro_test COMMAND avro_test)
88-
89-
add_executable(arrow_test)
90-
target_sources(arrow_test PRIVATE arrow_test.cc arrow_fs_file_io_test.cc
91-
metadata_io_test.cc gzip_decompress_test.cc)
92-
target_link_libraries(arrow_test PRIVATE iceberg_bundle_static GTest::gtest_main
93-
GTest::gmock)
94-
add_test(NAME arrow_test COMMAND arrow_test)
95-
96-
add_executable(catalog_test)
97-
target_include_directories(catalog_test PRIVATE "${CMAKE_BINARY_DIR}")
98-
target_sources(catalog_test PRIVATE test_common.cc in_memory_catalog_test.cc)
99-
target_link_libraries(catalog_test PRIVATE iceberg_bundle_static GTest::gtest_main
100-
GTest::gmock)
101-
add_test(NAME catalog_test COMMAND catalog_test)
95+
add_iceberg_test(avro_test
96+
USE_BUNDLE
97+
SOURCES
98+
avro_data_test.cc
99+
avro_test.cc
100+
avro_schema_test.cc
101+
avro_stream_test.cc
102+
manifest_list_reader_test.cc
103+
manifest_reader_test.cc
104+
test_common.cc)
105+
106+
add_iceberg_test(arrow_test
107+
USE_BUNDLE
108+
SOURCES
109+
arrow_test.cc
110+
arrow_fs_file_io_test.cc
111+
metadata_io_test.cc
112+
gzip_decompress_test.cc)
113+
114+
add_iceberg_test(catalog_test
115+
USE_BUNDLE
116+
SOURCES
117+
test_common.cc
118+
in_memory_catalog_test.cc)
102119
endif()

0 commit comments

Comments
 (0)