Skip to content

Commit afa050f

Browse files
author
shuxu.li
committed
refactor: Simplify test setup using a common CMake function
1 parent 378de75 commit afa050f

File tree

1 file changed

+70
-63
lines changed

1 file changed

+70
-63
lines changed

test/CMakeLists.txt

Lines changed: 70 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -28,75 +28,82 @@ 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)
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})
4640

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)
41+
add_executable(${test_name})
42+
target_include_directories(${test_name} PRIVATE "${CMAKE_BINARY_DIR}")
5343

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)
44+
target_sources(${test_name} PRIVATE ${ARG_SOURCES})
5945

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)
46+
add_test(NAME ${test_name} COMMAND ${test_name})
47+
endfunction()
6748

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)
49+
add_iceberg_test(schema_test
50+
SOURCES
51+
name_mapping_test.cc
52+
schema_test.cc
53+
schema_field_test.cc
54+
type_test.cc
55+
transform_test.cc
56+
partition_field_test.cc
57+
partition_spec_test.cc
58+
sort_field_test.cc
59+
sort_order_test.cc
60+
snapshot_test.cc
61+
schema_util_test.cc)
62+
63+
add_iceberg_test(table_test
64+
SOURCES
65+
test_common.cc
66+
json_internal_test.cc
67+
table_test.cc
68+
schema_json_test.cc)
69+
70+
add_iceberg_test(expression_test SOURCES expression_test.cc literal_test.cc)
71+
72+
add_iceberg_test(json_serde_test
73+
SOURCES
74+
test_common.cc
75+
json_internal_test.cc
76+
metadata_serde_test.cc
77+
schema_json_test.cc)
78+
79+
add_iceberg_test(util_test
80+
SOURCES
81+
formatter_test.cc
82+
config_test.cc
83+
visit_type_test.cc)
7384

7485
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)
86+
add_iceberg_test(avro_test
87+
USE_BUNDLE
88+
SOURCES
89+
avro_data_test.cc
90+
avro_test.cc
91+
avro_schema_test.cc
92+
avro_stream_test.cc
93+
manifest_list_reader_test.cc
94+
test_common.cc)
8895

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)
96+
add_iceberg_test(arrow_test
97+
USE_BUNDLE
98+
SOURCES
99+
arrow_test.cc
100+
arrow_fs_file_io_test.cc
101+
metadata_io_test.cc
102+
gzip_decompress_test.cc)
95103

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)
104+
add_iceberg_test(catalog_test
105+
USE_BUNDLE
106+
SOURCES
107+
test_common.cc
108+
in_memory_catalog_test.cc)
102109
endif()

0 commit comments

Comments
 (0)