Version 0.1
This commit is contained in:
@@ -0,0 +1,234 @@
|
||||
include("../version.cmake")
|
||||
|
||||
function(test_generate)
|
||||
cmake_parse_arguments(
|
||||
PARSE_ARGV 1
|
||||
_ARGS
|
||||
"COMPRESS;FAIL"
|
||||
"MAJOR;MINOR;PATCH;TWEAK;PRERELEASE;BUILD"
|
||||
""
|
||||
)
|
||||
|
||||
set(ARGS "")
|
||||
if(_ARGS_MAJOR)
|
||||
set(ARGS "${ARGS} MAJOR \"${_ARGS_MAJOR}\"")
|
||||
endif()
|
||||
if(_ARGS_MINOR)
|
||||
set(ARGS "${ARGS} MINOR \"${_ARGS_MINOR}\"")
|
||||
endif()
|
||||
if(_ARGS_PATCH)
|
||||
set(ARGS "${ARGS} PATCH \"${_ARGS_PATCH}\"")
|
||||
endif()
|
||||
if(_ARGS_TWEAK)
|
||||
set(ARGS "${ARGS} TWEAK \"${_ARGS_TWEAK}\"")
|
||||
endif()
|
||||
if(_ARGS_PRERELEASE)
|
||||
set(ARGS "${ARGS} PRERELEASE \"${_ARGS_PRERELEASE}\"")
|
||||
endif()
|
||||
if(_ARGS_BUILD)
|
||||
set(ARGS "${ARGS} BUILD \"${_ARGS_BUILD}\"")
|
||||
endif()
|
||||
if(_ARGS_COMPRESS)
|
||||
set(ARGS "${ARGS} COMPRESS")
|
||||
endif()
|
||||
cmake_language(EVAL CODE "version(GENERATE _TEST ${ARGS})")
|
||||
|
||||
if(DEFINED _TEST_ERROR)
|
||||
if(_ARGS_FAIL)
|
||||
message(STATUS "PASSED: '${ARGV0}'.\n\t${_TEST_ERROR}")
|
||||
else()
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}'.\n\t${_TEST_ERROR}")
|
||||
endif()
|
||||
else()
|
||||
if((ARGV0 STREQUAL _TEST) AND (NOT _ARGS_FAIL))
|
||||
message(STATUS "PASSED: '${ARGV0}'.")
|
||||
else()
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}' != '${_TEST}'.")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(test_parse)
|
||||
cmake_parse_arguments(
|
||||
PARSE_ARGV 1
|
||||
_ARGS
|
||||
"FAIL"
|
||||
"MAJOR;MINOR;PATCH;TWEAK;PRERELEASE;BUILD"
|
||||
""
|
||||
)
|
||||
version(PARSE _TEST "${ARGV0}")
|
||||
|
||||
set(FAILED OFF)
|
||||
set(MESSAGE "${_TEST_ERROR}")
|
||||
if(NOT DEFINED _TEST_ERROR)
|
||||
if(DEFINED _ARGS_MAJOR)
|
||||
if(NOT DEFINED _TEST_MAJOR)
|
||||
set(MESSAGE "MAJOR component missing during parse.")
|
||||
set(FAILED ON)
|
||||
elseif(NOT (_TEST_MAJOR STREQUAL _ARGS_MAJOR))
|
||||
set(MESSAGE "MAJOR component mismatch.")
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED _ARGS_MINOR)
|
||||
if(NOT DEFINED _TEST_MINOR)
|
||||
set(MESSAGE "MINOR component missing during parse.")
|
||||
set(FAILED ON)
|
||||
elseif(NOT (_TEST_MINOR STREQUAL _ARGS_MINOR))
|
||||
set(MESSAGE "MINOR component mismatch.")
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED _ARGS_PATCH)
|
||||
if(NOT DEFINED _TEST_PATCH)
|
||||
set(MESSAGE "PATCH component missing during parse.")
|
||||
set(FAILED ON)
|
||||
elseif(NOT (_TEST_PATCH STREQUAL _ARGS_PATCH))
|
||||
set(MESSAGE "PATCH component mismatch.")
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED _ARGS_TWEAK)
|
||||
if(NOT DEFINED _TEST_TWEAK)
|
||||
set(MESSAGE "TWEAK component missing during parse.")
|
||||
set(FAILED ON)
|
||||
elseif(NOT (_TEST_TWEAK STREQUAL _ARGS_TWEAK))
|
||||
set(MESSAGE "TWEAK component mismatch.")
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED _ARGS_PRERELEASE)
|
||||
if(NOT DEFINED _TEST_PRERELEASE)
|
||||
set(MESSAGE "PRERELEASE component missing during parse.")
|
||||
set(FAILED ON)
|
||||
elseif(NOT (_TEST_PRERELEASE STREQUAL _ARGS_PRERELEASE))
|
||||
set(MESSAGE "PRERELEASE component mismatch.")
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED _ARGS_BUILD)
|
||||
if(NOT DEFINED _TEST_BUILD)
|
||||
set(MESSAGE "BUILD component missing during parse.")
|
||||
set(FAILED ON)
|
||||
elseif(NOT (_TEST_BUILD STREQUAL _ARGS_BUILD))
|
||||
set(MESSAGE "BUILD component mismatch.")
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
|
||||
if(FAILED)
|
||||
if(_ARGS_FAIL)
|
||||
message(STATUS "PASSED: '${ARGV0}'.\n\t${MESSAGE}")
|
||||
else()
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}'.\n\t${MESSAGE}")
|
||||
endif()
|
||||
else()
|
||||
if(_ARGS_FAIL)
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}'.")
|
||||
else()
|
||||
message(STATUS "PASSED: '${ARGV0}'.")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(test_modify)
|
||||
cmake_parse_arguments(
|
||||
PARSE_ARGV 2
|
||||
_ARGS
|
||||
"FAIL;COMPRESS"
|
||||
"MAJOR;MINOR;PATCH;TWEAK;PRERELEASE;BUILD"
|
||||
""
|
||||
)
|
||||
|
||||
set(ARGS "")
|
||||
if(_ARGS_MAJOR)
|
||||
set(ARGS "${ARGS} MAJOR \"${_ARGS_MAJOR}\"")
|
||||
endif()
|
||||
if(_ARGS_MINOR)
|
||||
set(ARGS "${ARGS} MINOR \"${_ARGS_MINOR}\"")
|
||||
endif()
|
||||
if(_ARGS_PATCH)
|
||||
set(ARGS "${ARGS} PATCH \"${_ARGS_PATCH}\"")
|
||||
endif()
|
||||
if(_ARGS_TWEAK)
|
||||
set(ARGS "${ARGS} TWEAK \"${_ARGS_TWEAK}\"")
|
||||
endif()
|
||||
if(_ARGS_PRERELEASE)
|
||||
set(ARGS "${ARGS} PRERELEASE \"${_ARGS_PRERELEASE}\"")
|
||||
endif()
|
||||
if(_ARGS_BUILD)
|
||||
set(ARGS "${ARGS} BUILD \"${_ARGS_BUILD}\"")
|
||||
endif()
|
||||
if(_ARGS_COMPRESS)
|
||||
set(ARGS "${ARGS} COMPRESS")
|
||||
endif()
|
||||
cmake_language(EVAL CODE "version(MODIFY _TEST \"${ARGV1}\" ${ARGS})")
|
||||
|
||||
set(FAILED OFF)
|
||||
if(DEFINED _TEST_ERROR)
|
||||
set(MESSAGE "${_TEST_ERROR}")
|
||||
set(FAILED ON)
|
||||
else()
|
||||
if(NOT (_TEST STREQUAL ARGV0))
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(FAILED)
|
||||
if(_ARGS_FAIL)
|
||||
message(STATUS "PASSED: '${ARGV0}'.\n\t${MESSAGE}")
|
||||
else()
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}' != '${_TEST}'.\n\t${MESSAGE}")
|
||||
endif()
|
||||
else()
|
||||
if(_ARGS_FAIL)
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}' != '${_TEST}'.\n\t${MESSAGE}")
|
||||
else()
|
||||
message(STATUS "PASSED: '${ARGV0}'.")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(test_compare)
|
||||
cmake_parse_arguments(
|
||||
PARSE_ARGV 3
|
||||
_ARGS
|
||||
"FAIL"
|
||||
"RESULT"
|
||||
""
|
||||
)
|
||||
|
||||
version(COMPARE _TEST "${ARGV0}" "${ARGV2}")
|
||||
set(FAILED OFF)
|
||||
if(DEFINED _TEST_ERROR)
|
||||
set(MESSAGE "${_TEST_ERROR}")
|
||||
set(FAILED ON)
|
||||
else()
|
||||
if(NOT (_TEST STREQUAL ARGV1))
|
||||
set(MESSAGE "'${_TEST}' != '${ARGV1}'")
|
||||
set(FAILED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(FAILED)
|
||||
if(_ARGS_FAIL)
|
||||
message(STATUS "PASSED: '${ARGV0}' '${ARGV1}' '${ARGV2}'.\n\t${MESSAGE}")
|
||||
else()
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}' '${ARGV1}' '${ARGV2}'.\n\t${MESSAGE}")
|
||||
endif()
|
||||
else()
|
||||
if(_ARGS_FAIL)
|
||||
message(SEND_ERROR "FAILED: '${ARGV0}' '${ARGV1}' '${ARGV2}'.\n\t${MESSAGE}")
|
||||
else()
|
||||
message(STATUS "PASSED: '${ARGV0}' '${ARGV1}' '${ARGV2}'.")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user