Skip to content

Commit 298518e

Browse files
committed
Add WORKING_DIRECTORY parameter to testing commands
1 parent 24e3e28 commit 298518e

File tree

2 files changed

+72
-28
lines changed

2 files changed

+72
-28
lines changed

cmake/testing.cmake

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
function(add_yunittest)
22
set(opts "")
3-
set(oneval_args NAME TEST_TARGET)
3+
set(oneval_args NAME TEST_TARGET WORKING_DIRECTORY)
44
set(multival_args TEST_ARG)
55
cmake_parse_arguments(YUNITTEST_ARGS
66
"${opts}"
@@ -13,13 +13,19 @@ function(add_yunittest)
1313
get_property(SPLIT_TYPE TARGET ${YUNITTEST_ARGS_TEST_TARGET} PROPERTY SPLIT_TYPE)
1414

1515
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/run_testpack")
16-
add_test(NAME ${YUNITTEST_ARGS_NAME} COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/run_testpack" ${YUNITTEST_ARGS_TEST_ARG})
16+
add_test(NAME ${YUNITTEST_ARGS_NAME}
17+
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/run_testpack" ${YUNITTEST_ARGS_TEST_ARG}
18+
WORKING_DIRECTORY ${YUNITTEST_ARGS_WORKING_DIRECTORY}
19+
)
1720
set_property(TEST ${YUNITTEST_ARGS_NAME} PROPERTY ENVIRONMENT "source_root=${YDB_SDK_SOURCE_DIR};build_root=${YDB_SDK_BINARY_DIR};test_split_factor=${SPLIT_FACTOR};test_split_type=${SPLIT_TYPE}")
1821
return()
1922
endif()
2023

2124
if (${SPLIT_FACTOR} EQUAL 1)
22-
add_test(NAME ${YUNITTEST_ARGS_NAME} COMMAND ${YUNITTEST_ARGS_TEST_TARGET} ${YUNITTEST_ARGS_TEST_ARG})
25+
add_test(NAME ${YUNITTEST_ARGS_NAME}
26+
COMMAND ${YUNITTEST_ARGS_TEST_TARGET} ${YUNITTEST_ARGS_TEST_ARG}
27+
WORKING_DIRECTORY ${YUNITTEST_ARGS_WORKING_DIRECTORY}
28+
)
2329
return()
2430
endif()
2531

@@ -29,8 +35,12 @@ function(add_yunittest)
2935
math(EXPR LastIdx "${SPLIT_FACTOR} - 1")
3036
foreach(Idx RANGE ${LastIdx})
3137
add_test(NAME ${YUNITTEST_ARGS_NAME}_${Idx}
32-
COMMAND Python3::Interpreter ${YDB_SDK_SOURCE_DIR}/scripts/split_unittest.py --split-factor ${SPLIT_FACTOR} ${FORK_MODE_ARG} --shard ${Idx}
33-
$<TARGET_FILE:${YUNITTEST_ARGS_TEST_TARGET}> ${YUNITTEST_ARGS_TEST_ARG})
38+
COMMAND Python3::Interpreter ${YDB_SDK_SOURCE_DIR}/scripts/split_unittest.py
39+
--split-factor ${SPLIT_FACTOR} ${FORK_MODE_ARG}
40+
--shard ${Idx}
41+
$<TARGET_FILE:${YUNITTEST_ARGS_TEST_TARGET}> ${YUNITTEST_ARGS_TEST_ARG}
42+
WORKING_DIRECTORY ${YUNITTEST_ARGS_WORKING_DIRECTORY}
43+
)
3444
endforeach()
3545
endfunction()
3646

@@ -59,7 +69,7 @@ endfunction()
5969

6070
function(add_ydb_test)
6171
set(opts GTEST)
62-
set(oneval_args NAME)
72+
set(oneval_args NAME WORKING_DIRECTORY)
6373
set(multival_args INCLUDE_DIRS SOURCES LINK_LIBRARIES LABELS)
6474
cmake_parse_arguments(YDB_TEST
6575
"${opts}"
@@ -68,6 +78,10 @@ function(add_ydb_test)
6878
${ARGN}
6979
)
7080

81+
if (YDB_TEST_WORKING_DIRECTORY AND NOT EXISTS "${YDB_TEST_WORKING_DIRECTORY}")
82+
file(MAKE_DIRECTORY "${YDB_TEST_WORKING_DIRECTORY}")
83+
endif()
84+
7185
add_executable(${YDB_TEST_NAME})
7286
target_include_directories(${YDB_TEST_NAME} PRIVATE ${YDB_TEST_INCLUDE_DIRS})
7387
target_link_libraries(${YDB_TEST_NAME} PRIVATE ${YDB_TEST_LINK_LIBRARIES})
@@ -96,56 +110,60 @@ function(add_ydb_test)
96110

97111
set_property(
98112
TARGET
99-
${YDB_TEST_NAME}
113+
${YDB_TEST_NAME}
100114
PROPERTY
101-
SPLIT_FACTOR
102-
1
115+
SPLIT_FACTOR
116+
1
103117
)
104118
if (YDB_TEST_GTEST)
105119
add_yunittest(
106120
NAME
107-
${YDB_TEST_NAME}
121+
${YDB_TEST_NAME}
108122
TEST_TARGET
109-
${YDB_TEST_NAME}
123+
${YDB_TEST_NAME}
124+
WORKING_DIRECTORY
125+
${YDB_TEST_WORKING_DIRECTORY}
110126
)
111127
else()
112128
add_yunittest(
113129
NAME
114-
${YDB_TEST_NAME}
130+
${YDB_TEST_NAME}
115131
TEST_TARGET
116-
${YDB_TEST_NAME}
132+
${YDB_TEST_NAME}
117133
TEST_ARG
118-
--print-before-suite
119-
--print-before-test
120-
--fork-tests
121-
--print-times
122-
--show-fails
134+
--print-before-suite
135+
--print-before-test
136+
--fork-tests
137+
--print-times
138+
--show-fails
139+
WORKING_DIRECTORY
140+
${YDB_TEST_WORKING_DIRECTORY}
123141
)
124142
endif()
125143

126144
set_yunittest_property(
127145
TEST
128-
${YDB_TEST_NAME}
146+
${YDB_TEST_NAME}
129147
PROPERTY
130-
LABELS
131-
MEDIUM
132-
${YDB_TEST_LABELS}
148+
LABELS
149+
MEDIUM
150+
${YDB_TEST_LABELS}
133151
)
134152

135153
set_yunittest_property(
136154
TEST
137-
${YDB_TEST_NAME}
155+
${YDB_TEST_NAME}
138156
PROPERTY
139-
PROCESSORS
140-
1
157+
PROCESSORS
158+
1
141159
)
142160

143161
set_yunittest_property(
144162
TEST
145-
${YDB_TEST_NAME}
163+
${YDB_TEST_NAME}
146164
PROPERTY
147-
TIMEOUT
148-
600
165+
TIMEOUT
166+
600
149167
)
150168

151169
vcs_info(${YDB_TEST_NAME})

util/CMakeLists.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ add_subdirectory(draft)
33

44
if (YDB_SDK_TESTS)
55
add_ydb_test(NAME util-datetime-ut
6+
WORKING_DIRECTORY
7+
${CMAKE_CURRENT_BINARY_DIR}/datetime
68
SOURCES
79
datetime/base_ut.cpp
810
datetime/cputimer_ut.cpp
@@ -18,6 +20,8 @@ if (YDB_SDK_TESTS)
1820
)
1921

2022
add_ydb_test(NAME util-digest-ut
23+
WORKING_DIRECTORY
24+
${CMAKE_CURRENT_BINARY_DIR}/digest
2125
SOURCES
2226
digest/city_ut.cpp
2327
digest/fnv_ut.cpp
@@ -32,6 +36,8 @@ if (YDB_SDK_TESTS)
3236
)
3337

3438
add_ydb_test(NAME util-folder-ut
39+
WORKING_DIRECTORY
40+
${CMAKE_CURRENT_BINARY_DIR}/folder
3541
SOURCES
3642
folder/dirut_ut.cpp
3743
folder/filelist_ut.cpp
@@ -48,6 +54,8 @@ if (YDB_SDK_TESTS)
4854
)
4955

5056
add_ydb_test(NAME util-generic-ut
57+
WORKING_DIRECTORY
58+
${CMAKE_CURRENT_BINARY_DIR}/generic
5159
SOURCES
5260
generic/adaptor_ut.cpp
5361
generic/algorithm_ut.cpp
@@ -106,6 +114,8 @@ if (YDB_SDK_TESTS)
106114
)
107115

108116
add_ydb_test(NAME util-generic-yexception_ut
117+
WORKING_DIRECTORY
118+
${CMAKE_CURRENT_BINARY_DIR}/generic
109119
SOURCES
110120
generic/yexception_ut.c
111121
generic/yexception_ut.cpp
@@ -124,6 +134,8 @@ if (YDB_SDK_TESTS)
124134
endif()
125135

126136
add_ydb_test(NAME util-memory-ut
137+
WORKING_DIRECTORY
138+
${CMAKE_CURRENT_BINARY_DIR}/memory
127139
SOURCES
128140
memory/addstorage_ut.cpp
129141
memory/blob_ut.cpp
@@ -138,6 +150,8 @@ if (YDB_SDK_TESTS)
138150
)
139151

140152
add_ydb_test(NAME util-network-ut
153+
WORKING_DIRECTORY
154+
${CMAKE_CURRENT_BINARY_DIR}/network
141155
SOURCES
142156
network/address_ut.cpp
143157
network/endpoint_ut.cpp
@@ -154,6 +168,8 @@ if (YDB_SDK_TESTS)
154168
)
155169

156170
add_ydb_test(NAME util-random-ut
171+
WORKING_DIRECTORY
172+
${CMAKE_CURRENT_BINARY_DIR}/random
157173
SOURCES
158174
random/common_ops_ut.cpp
159175
random/easy_ut.cpp
@@ -171,6 +187,8 @@ if (YDB_SDK_TESTS)
171187
)
172188

173189
add_ydb_test(NAME util-stream-ut
190+
WORKING_DIRECTORY
191+
${CMAKE_CURRENT_BINARY_DIR}/stream
174192
SOURCES
175193
stream/aligned_ut.cpp
176194
stream/buffered_ut.cpp
@@ -200,6 +218,8 @@ if (YDB_SDK_TESTS)
200218
)
201219

202220
add_ydb_test(NAME util-string-ut
221+
WORKING_DIRECTORY
222+
${CMAKE_CURRENT_BINARY_DIR}/string
203223
SOURCES
204224
string/ascii_ut.cpp
205225
string/builder_ut.cpp
@@ -223,6 +243,8 @@ if (YDB_SDK_TESTS)
223243
)
224244

225245
add_ydb_test(NAME util-system-ut
246+
WORKING_DIRECTORY
247+
${CMAKE_CURRENT_BINARY_DIR}/system
226248
SOURCES
227249
system/align_ut.cpp
228250
system/atexit_ut.cpp
@@ -291,6 +313,8 @@ if (YDB_SDK_TESTS)
291313

292314
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
293315
add_ydb_test(NAME util-system-fs_win_ut
316+
WORKING_DIRECTORY
317+
${CMAKE_CURRENT_BINARY_DIR}/system
294318
SOURCES
295319
system/fs_win_ut.cpp
296320
LINK_LIBRARIES
@@ -302,6 +326,8 @@ if (YDB_SDK_TESTS)
302326
endif()
303327

304328
add_ydb_test(NAME util-thread-ut
329+
WORKING_DIRECTORY
330+
${CMAKE_CURRENT_BINARY_DIR}/thread
305331
SOURCES
306332
thread/factory_ut.cpp
307333
thread/lfqueue_ut.cpp

0 commit comments

Comments
 (0)