7d78889aa9
* Fixed cmake for unit test so that indivisual build and test works from vscode * Fixed the time duration in the ztest used for unit testing.
281 lines
7.5 KiB
CMake
281 lines
7.5 KiB
CMake
# SPDX-License-Identifier: MIT
|
|
|
|
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
|
# set the project name
|
|
project(Unit_Tests)
|
|
|
|
option(BACNET_STACK_DEPRECATED_DISABLE "Disable deprecation compile warnings" ON)
|
|
|
|
if(BACNET_STACK_DEPRECATED_DISABLE)
|
|
add_definitions(-DBACNET_STACK_DEPRECATED_DISABLE)
|
|
endif()
|
|
|
|
# In tests allow newer C standard than in the library.
|
|
set(CMAKE_C_STANDARD 99)
|
|
|
|
# Set the compiler options
|
|
if (CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "GNU")
|
|
add_compile_options(-g -O0 -fprofile-arcs -ftest-coverage)
|
|
# enable all relevant warnings that find bugs
|
|
add_compile_options(-Wall -Wextra -pedantic)
|
|
add_compile_options(-Wfloat-equal -Wconversion)
|
|
add_compile_options(-Wfloat-conversion -Wdouble-promotion)
|
|
add_compile_options(-Wredundant-decls -Wmissing-declarations)
|
|
add_compile_options(-Wswitch-default)
|
|
add_compile_options(-Wunused-variable)
|
|
add_compile_options(-Wcast-qual)
|
|
add_compile_options(-Wwrite-strings)
|
|
|
|
# don't warn about conversion, sign, compares, long long and attributes
|
|
# since they are common in embedded
|
|
add_compile_options(-Wno-sign-conversion -Wno-conversion)
|
|
add_compile_options(-Wno-sign-compare)
|
|
add_compile_options(-Wno-implicit-fallthrough)
|
|
|
|
# Just noise from clang
|
|
if (CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "AppleClang")
|
|
add_compile_options(-Wno-gnu-zero-variadic-macro-arguments)
|
|
endif()
|
|
|
|
# Should be fixed in the future
|
|
add_compile_options(-Wno-cast-qual)
|
|
add_compile_options(-Wno-double-promotion)
|
|
add_compile_options(-Wno-float-conversion)
|
|
add_compile_options(-Wno-missing-declarations)
|
|
add_compile_options(-Wno-unused-but-set-variable)
|
|
add_compile_options(-Wno-write-strings)
|
|
add_compile_options(-Wno-implicit-fallthrough)
|
|
|
|
# some consistent defines used for all builds - avoids inconsistent error
|
|
add_compile_definitions(
|
|
BIG_ENDIAN=0
|
|
PRINT_ENABLED=1
|
|
BACAPP_PRINT_ENABLED=1
|
|
)
|
|
|
|
add_link_options(-fprofile-arcs -ftest-coverage)
|
|
endif()
|
|
|
|
# Create the lcov target. Run result tests with 'make lcov'
|
|
add_custom_target(lcov
|
|
COMMAND mkdir -p lcoverage
|
|
)
|
|
add_custom_command(TARGET lcov
|
|
COMMAND echo "=================== LCOV ===================="
|
|
COMMAND echo "-- Passing lcov tool under code coverage"
|
|
COMMAND lcov --capture --directory ../ --output-file lcoverage/main_coverage.info
|
|
COMMAND echo "-- Generating HTML output files"
|
|
COMMAND genhtml lcoverage/main_coverage.info --output-directory lcoverage
|
|
)
|
|
|
|
#
|
|
# add tests
|
|
#
|
|
|
|
list(APPEND testdirs
|
|
# unit/bacnet/bacerror
|
|
unit/bacnet/bits
|
|
)
|
|
|
|
list(APPEND testdirs
|
|
bacnet/abort
|
|
bacnet/access_rule
|
|
bacnet/alarm_ack
|
|
bacnet/arf
|
|
bacnet/authentication_factor_format
|
|
bacnet/awf
|
|
bacnet/bacaddr
|
|
bacnet/bacapp
|
|
bacnet/bacaudit
|
|
bacnet/bacdcode
|
|
bacnet/bacdevobjpropref
|
|
bacnet/bacdest
|
|
bacnet/bacerror
|
|
bacnet/bacint
|
|
bacnet/baclog
|
|
bacnet/bacpropstates
|
|
bacnet/bacreal
|
|
bacnet/bacstr
|
|
bacnet/bactext
|
|
bacnet/bactimevalue
|
|
bacnet/channel_value
|
|
bacnet/cov
|
|
bacnet/create_object
|
|
bacnet/datetime
|
|
bacnet/dcc
|
|
bacnet/delete_object
|
|
bacnet/event
|
|
bacnet/getalarm
|
|
bacnet/getevent
|
|
bacnet/hostnport
|
|
bacnet/iam
|
|
bacnet/ihave
|
|
bacnet/indtext
|
|
bacnet/lighting
|
|
bacnet/list_element
|
|
bacnet/lso
|
|
bacnet/memcopy
|
|
bacnet/npdu
|
|
bacnet/property
|
|
bacnet/ptransfer
|
|
bacnet/rd
|
|
bacnet/readrange
|
|
bacnet/reject
|
|
bacnet/rp
|
|
bacnet/rpm
|
|
bacnet/secure_connect
|
|
bacnet/specialevent
|
|
bacnet/shed_level
|
|
bacnet/timer_value
|
|
bacnet/timestamp
|
|
bacnet/timesync
|
|
bacnet/weeklyschedule
|
|
bacnet/whoami
|
|
bacnet/whohas
|
|
bacnet/whois
|
|
bacnet/wp
|
|
bacnet/wpm
|
|
bacnet/write_group
|
|
bacnet/youare
|
|
)
|
|
|
|
# bacnet/basic/*
|
|
list(APPEND testdirs
|
|
bacnet/basic/binding/address
|
|
bacnet/basic/bbmd
|
|
bacnet/basic/bbmd6
|
|
bacnet/basic/bzll
|
|
# basic/object
|
|
bacnet/basic/object/acc
|
|
bacnet/basic/object/access_credential
|
|
bacnet/basic/object/access_door
|
|
bacnet/basic/object/access_point
|
|
bacnet/basic/object/access_rights
|
|
bacnet/basic/object/access_user
|
|
bacnet/basic/object/access_zone
|
|
bacnet/basic/object/ai
|
|
bacnet/basic/object/ao
|
|
bacnet/basic/object/av
|
|
bacnet/basic/object/auditlog
|
|
bacnet/basic/object/bacfile
|
|
bacnet/basic/object/bi
|
|
bacnet/basic/object/bitstring_value
|
|
bacnet/basic/object/blo
|
|
bacnet/basic/object/bo
|
|
bacnet/basic/object/bv
|
|
bacnet/basic/object/channel
|
|
bacnet/basic/object/calendar
|
|
bacnet/basic/object/color_object
|
|
bacnet/basic/object/color_temperature
|
|
bacnet/basic/object/command
|
|
bacnet/basic/object/credential_data_input
|
|
bacnet/basic/object/csv
|
|
bacnet/basic/object/device
|
|
bacnet/basic/object/iv
|
|
bacnet/basic/object/lc
|
|
bacnet/basic/object/lo
|
|
bacnet/basic/object/loop
|
|
bacnet/basic/object/lsp
|
|
bacnet/basic/object/lsz
|
|
bacnet/basic/object/ms-input
|
|
bacnet/basic/object/mso
|
|
bacnet/basic/object/msv
|
|
bacnet/basic/object/netport
|
|
bacnet/basic/object/program
|
|
bacnet/basic/object/nc
|
|
bacnet/basic/object/objects
|
|
bacnet/basic/object/osv
|
|
bacnet/basic/object/piv
|
|
bacnet/basic/object/schedule
|
|
bacnet/basic/object/structured_view
|
|
bacnet/basic/object/time_value
|
|
bacnet/basic/object/timer
|
|
bacnet/basic/object/trendlog
|
|
# basic/program
|
|
bacnet/basic/program/ubasic
|
|
# basic/server
|
|
bacnet/basic/server/bacnet_device
|
|
# basic/sys
|
|
bacnet/basic/sys/bramfs
|
|
bacnet/basic/sys/bsramfs
|
|
bacnet/basic/sys/color_rgb
|
|
bacnet/basic/sys/days
|
|
bacnet/basic/sys/dst
|
|
bacnet/basic/sys/lighting_command
|
|
bacnet/basic/sys/fifo
|
|
bacnet/basic/sys/filename
|
|
bacnet/basic/sys/keylist
|
|
bacnet/basic/sys/linear
|
|
bacnet/basic/sys/ringbuf
|
|
bacnet/basic/sys/sbuf
|
|
)
|
|
|
|
# bacnet/datalink/*
|
|
list(APPEND testdirs
|
|
bacnet/datalink/automac
|
|
bacnet/datalink/cobs
|
|
bacnet/datalink/crc
|
|
bacnet/datalink/bvlc
|
|
bacnet/datalink/mstp
|
|
bacnet/datalink/dlmstp
|
|
bacnet/datalink/bvlc-sc
|
|
)
|
|
|
|
if(BACDL_BSC)
|
|
message(STATUS "Added BACnet/SC websocket dependent tests")
|
|
list(APPEND testdirs
|
|
bacnet/datalink/bsc-datalink
|
|
bacnet/datalink/bsc-node
|
|
bacnet/datalink/bsc-socket
|
|
bacnet/datalink/hub-sc
|
|
bacnet/datalink/websockets
|
|
)
|
|
endif()
|
|
|
|
# ports tests
|
|
if(ZEPHYR_BASE)
|
|
message(FATAL_ERROR "ZEPHYR_BASE env variable defined.")
|
|
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
message(STATUS "Added ports specific tests for linux")
|
|
|
|
list(APPEND testdirs
|
|
ports/linux/bsc_event
|
|
ports/linux/bip_subnet
|
|
)
|
|
|
|
elseif(WIN32)
|
|
message(STATUS "Added ports specific tests for win32")
|
|
|
|
list(APPEND testdirs
|
|
ports/win32/bsc_event
|
|
)
|
|
|
|
elseif(APPLE)
|
|
message(STATUS "Added ports specific tests for APPLE")
|
|
list(APPEND testdirs
|
|
ports/bsd/bsc_event
|
|
)
|
|
endif()
|
|
|
|
enable_testing()
|
|
foreach(testdir IN ITEMS ${testdirs})
|
|
get_filename_component(basename ${testdir} NAME)
|
|
add_subdirectory(${testdir})
|
|
add_test(build_${basename}
|
|
"${CMAKE_COMMAND}"
|
|
--build "${CMAKE_BINARY_DIR}"
|
|
--config "$<CONFIG>"
|
|
--target test_${basename}
|
|
)
|
|
add_test(test_${basename} ${testdir}/test_${basename})
|
|
set_tests_properties(test_${basename} PROPERTIES FIXTURES_REQUIRED fixture_${basename})
|
|
set_tests_properties(build_${basename} PROPERTIES FIXTURES_SETUP fixture_${basename})
|
|
endforeach()
|
|
|
|
message(STATUS "BACNET: using cmake:....................\"${CMAKE_VERSION}\"")
|
|
message(STATUS "BACNET: CMAKE_C_COMPILER_ID:............\"${CMAKE_C_COMPILER_ID}\"")
|
|
message(STATUS "BACNET: CMAKE_C_COMPILER_VERSION:.......\"${CMAKE_C_COMPILER_VERSION}\"")
|
|
message(STATUS "BACNET: CMAKE_CXX_COMPILER_ID:..........\"${CMAKE_CXX_COMPILER_ID}\"")
|
|
message(STATUS "BACNET: CMAKE_CXX_COMPILER_VERSION:.....\"${CMAKE_CXX_COMPILER_VERSION}\"")
|
|
message(STATUS "BACNET: CMAKE_INSTALL_PREFIX:...........\"${CMAKE_INSTALL_PREFIX}\"")
|