Define unit_test() macro with ovni_test()
This allows unit tests to be executed in a individual directory where they can create new files in $PWD.
This commit is contained in:
		
							parent
							
								
									721dabf007
								
							
						
					
					
						commit
						c257405060
					
				| @ -3,57 +3,8 @@ | ||||
| 
 | ||||
| include(CMakeParseArguments) | ||||
| 
 | ||||
| function(unit_test source) | ||||
|   set(switches "") | ||||
|   set(single "" NAME) | ||||
|   set(multi "") | ||||
| 
 | ||||
|   cmake_parse_arguments( | ||||
|     OVNI_TEST "${switches}" "${single}" "${multi}" ${ARGN}) | ||||
| 
 | ||||
|   if(OVNI_TEST_NAME) | ||||
|     set(test_name "${OVNI_TEST_NAME}") | ||||
|   else() | ||||
|     set(test_name "${source}") | ||||
|   endif() | ||||
| 
 | ||||
|   # Compute the test name from the source and path | ||||
|   cmake_path(RELATIVE_PATH CMAKE_CURRENT_SOURCE_DIR | ||||
|     BASE_DIRECTORY "${OVNI_TEST_SOURCE_DIR}" | ||||
|           OUTPUT_VARIABLE name_prefix) | ||||
|   set(full_path "${name_prefix}/${test_name}") | ||||
|   string(REGEX REPLACE "\.c$" "" full_path_noext "${full_path}") | ||||
|   string(REPLACE "/" "-" name "${full_path_noext}") | ||||
| 
 | ||||
|   set(OVNI_TEST_NAME ${name}) | ||||
|   set(OVNI_TEST_NAME ${OVNI_TEST_NAME} PARENT_SCOPE) | ||||
|   set(OVNI_TEST_SOURCE ${source}) | ||||
| 
 | ||||
|   include_directories( | ||||
|     "${CMAKE_SOURCE_DIR}/src/include" | ||||
|     "${CMAKE_SOURCE_DIR}/src/emu" | ||||
|     "${CMAKE_SOURCE_DIR}/src" | ||||
|     "${CMAKE_SOURCE_DIR}/include" | ||||
|   ) | ||||
|   add_executable("${OVNI_TEST_NAME}" "${OVNI_TEST_SOURCE}") | ||||
|   target_link_libraries("${OVNI_TEST_NAME}" PRIVATE ovni emu) | ||||
| 
 | ||||
|   add_test(NAME "${OVNI_TEST_NAME}" | ||||
|     COMMAND "${OVNI_TEST_NAME}" | ||||
|     WORKING_DIRECTORY "${OVNI_TEST_BUILD_DIR}") | ||||
| 
 | ||||
|   list(APPEND OVNI_TEST_ENV | ||||
|     "OVNI_CONFIG_DIR=${CMAKE_SOURCE_DIR}/cfg") | ||||
| 
 | ||||
|   set_tests_properties("${OVNI_TEST_NAME}" | ||||
|     PROPERTIES | ||||
|       RUN_SERIAL TRUE | ||||
|       ENVIRONMENT "${OVNI_TEST_ENV}" | ||||
|       WORKING_DIRECTORY "${OVNI_TEST_BUILD_DIR}") | ||||
| endfunction(unit_test) | ||||
| 
 | ||||
| function(ovni_test source) | ||||
|   set(switches MP SHOULD_FAIL SORT UNIT BREAKDOWN DISABLED) | ||||
|   set(switches MP SHOULD_FAIL NOEMU SORT BREAKDOWN DISABLED) | ||||
|   set(single NPROC REGEX NAME) | ||||
|   set(multi ENV) | ||||
| 
 | ||||
| @ -102,6 +53,10 @@ function(ovni_test source) | ||||
|     list(APPEND OVNI_TEST_ENV "OVNI_DO_SORT=1") | ||||
|   endif() | ||||
| 
 | ||||
|   if(OVNI_TEST_NOEMU) | ||||
|     list(APPEND OVNI_TEST_ENV "OVNI_NOEMU=1") | ||||
|   endif() | ||||
| 
 | ||||
|   if(OVNI_TEST_BREAKDOWN) | ||||
|     list(APPEND OVNI_TEST_ENV "OVNI_EMU_ARGS=-b") | ||||
|   endif() | ||||
|  | ||||
| @ -10,7 +10,7 @@ fi | ||||
| 
 | ||||
| dir=$(readlink -f "${OVNI_CURRENT_DIR}") | ||||
| testname="$dir/$1" | ||||
| workdir="${testname}.trace" | ||||
| workdir="${testname}.dir" | ||||
| tracedir="${workdir}/ovni" | ||||
| emubin="${OVNI_BUILD_DIR}/ovniemu" | ||||
| sortbin="${OVNI_BUILD_DIR}/ovnisort" | ||||
| @ -37,8 +37,10 @@ if [ -n "$OVNI_DO_SORT" ]; then | ||||
|   "$sortbin" "$tracedir" | ||||
| fi | ||||
| 
 | ||||
| # Then launch the emulator in lint mode | ||||
| "$emubin" $OVNI_EMU_ARGS -l "$tracedir" | ||||
| if [ -z "$OVNI_NOEMU" ]; then | ||||
|   # Then launch the emulator in lint mode | ||||
|   "$emubin" $OVNI_EMU_ARGS -l "$tracedir" | ||||
| fi | ||||
| 
 | ||||
| # Run any post script that was generated | ||||
| ls -1 *.sh | while read sh; do | ||||
|  | ||||
| @ -1,6 +1,10 @@ | ||||
| # Copyright (c) 2022-2023 Barcelona Supercomputing Center (BSC) | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
| 
 | ||||
| function(unit_test) | ||||
|   ovni_test(${ARGN} NOEMU) | ||||
| endfunction() | ||||
| 
 | ||||
| #unit_test(bay-hash-speed.c) | ||||
| unit_test(bay.c) | ||||
| unit_test(cfg.c) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user