Skip to content

Commit 72e0e2a

Browse files
committed
cmake: update function implem
1 parent 77248b9 commit 72e0e2a

File tree

3 files changed

+68
-31
lines changed

3 files changed

+68
-31
lines changed

cmake/python.cmake

Lines changed: 66 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -125,23 +125,42 @@ if(BUILD_TESTING)
125125
endif()
126126
endif()
127127

128-
if(BUILD_TESTING)
129-
# add_python_test()
130-
# CMake function to generate and build python test.
131-
# Parameters:
132-
# the python filename
133-
# e.g.:
134-
# add_python_test(foo.py)
135-
function(add_python_test FILE_NAME)
136-
message(STATUS "Configuring test ${FILE_NAME} ...")
137-
get_filename_component(TEST_NAME ${FILE_NAME} NAME_WE)
138-
add_test(
139-
NAME python_test_${TEST_NAME}
140-
COMMAND ${VENV_Python3_EXECUTABLE} -m pytest ${FILE_NAME}
141-
WORKING_DIRECTORY ${VENV_DIR})
142-
message(STATUS "Configuring test ${FILE_NAME} done")
143-
endfunction()
144-
endif()
128+
# add_python_test()
129+
# CMake function to generate and build python test.
130+
# Parameters:
131+
# FILE_NAME: the python filename
132+
# e.g.:
133+
# add_python_test(
134+
# FILE_NAME
135+
# foo.py
136+
# )
137+
function(add_python_test)
138+
if(NOT BUILD_TESTING)
139+
return()
140+
endif()
141+
142+
set(options "")
143+
set(oneValueArgs FILE_NAME)
144+
set(multiValueArgs "")
145+
cmake_parse_arguments(TEST
146+
"${options}"
147+
"${oneValueArgs}"
148+
"${multiValueArgs}"
149+
${ARGN}
150+
)
151+
if(NOT TEST_FILE_NAME)
152+
message(FATAL_ERROR "no FILE_NAME provided")
153+
endif()
154+
get_filename_component(TEST_NAME ${TEST_FILE_NAME} NAME_WE)
155+
156+
message(STATUS "Configuring test ${TEST_FILE_NAME} ...")
157+
158+
add_test(
159+
NAME python_test_${TEST_NAME}
160+
COMMAND ${VENV_Python3_EXECUTABLE} -m pytest ${TEST_FILE_NAME}
161+
WORKING_DIRECTORY ${VENV_DIR})
162+
message(STATUS "Configuring test ${TEST_FILE_NAME} ...DONE")
163+
endfunction()
145164

146165
#######################
147166
## PYTHON WRAPPERS ##
@@ -184,7 +203,7 @@ file(GENERATE
184203
# COMMAND ${CMAKE_COMMAND} -E copy setup.py setup.py
185204
# WORKING_DIRECTORY python)
186205

187-
# Look for python modules
206+
# Look for required python modules
188207
search_python_module(
189208
NAME setuptools
190209
PACKAGE setuptools)
@@ -262,18 +281,36 @@ endif()
262281
# add_python_example()
263282
# CMake function to generate and build python example.
264283
# Parameters:
265-
# the python filename
284+
# FILE_NAME: the Python filename
266285
# e.g.:
267-
# add_python_example(foo.py)
268-
function(add_python_example FILE_NAME)
269-
message(STATUS "Configuring example ${FILE_NAME} ...")
270-
get_filename_component(EXAMPLE_NAME ${FILE_NAME} NAME_WE)
286+
# add_python_example(
287+
# FILE_NAME
288+
# foo.py
289+
# )
290+
function(add_python_example)
291+
if(NOT BUILD_TESTING)
292+
return()
293+
endif()
271294

272-
if(BUILD_TESTING)
273-
add_test(
274-
NAME python_example_${EXAMPLE_NAME}
275-
COMMAND ${VENV_Python3_EXECUTABLE} ${FILE_NAME}
276-
WORKING_DIRECTORY ${VENV_DIR})
295+
set(options "")
296+
set(oneValueArgs FILE_NAME)
297+
set(multiValueArgs "")
298+
cmake_parse_arguments(EXAMPLE
299+
"${options}"
300+
"${oneValueArgs}"
301+
"${multiValueArgs}"
302+
${ARGN}
303+
)
304+
if(NOT EXAMPLE_FILE_NAME)
305+
message(FATAL_ERROR "no FILE_NAME provided")
277306
endif()
278-
message(STATUS "Configuring example ${FILE_NAME} done")
307+
get_filename_component(EXAMPLE_NAME ${EXAMPLE_FILE_NAME} NAME_WE)
308+
309+
message(STATUS "Configuring example ${EXAMPLE_FILE_NAME} ...")
310+
311+
add_test(
312+
NAME python_example_${EXAMPLE_NAME}
313+
COMMAND ${VENV_Python3_EXECUTABLE} ${EXAMPLE_FILE_NAME}
314+
WORKING_DIRECTORY ${VENV_DIR})
315+
message(STATUS "Configuring example ${EXAMPLE_FILE_NAME} ...DONE")
279316
endfunction()

examples/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ endforeach()
99

1010
file(GLOB PYTHON_SRCS "*.py")
1111
foreach(FILE_NAME IN LISTS PYTHON_SRCS)
12-
add_python_example(${FILE_NAME})
12+
add_python_example(FILE_NAME ${FILE_NAME})
1313
endforeach()

tests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ endif()
44

55
file(GLOB PYTHON_SRCS "*.py")
66
foreach(FILE_NAME IN LISTS PYTHON_SRCS)
7-
add_python_test(${FILE_NAME})
7+
add_python_test(FILE_NAME ${FILE_NAME})
88
endforeach()

0 commit comments

Comments
 (0)