diff options
author | Alex Merry <alex.merry@kde.org> | 2014-12-28 16:32:13 +0000 |
---|---|---|
committer | Alex Merry <alex.merry@kde.org> | 2014-12-28 17:30:11 +0000 |
commit | f8af407eba5c5ea45be2c6351cf41a7cb44fed21 (patch) | |
tree | 0c3326caf677883ec00e292312213acefe366877 /tests/ECMSetupVersionTest/version_helpers.cmake | |
parent | 351fe45dba7ac04ec2779b7d761ac55a58f89945 (diff) | |
download | extra-cmake-modules-f8af407eba5c5ea45be2c6351cf41a7cb44fed21.tar.gz extra-cmake-modules-f8af407eba5c5ea45be2c6351cf41a7cb44fed21.tar.bz2 |
Improve version file tests.
Mostly just refatoring to have less duplicated code.
Diffstat (limited to 'tests/ECMSetupVersionTest/version_helpers.cmake')
-rw-r--r-- | tests/ECMSetupVersionTest/version_helpers.cmake | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/tests/ECMSetupVersionTest/version_helpers.cmake b/tests/ECMSetupVersionTest/version_helpers.cmake new file mode 100644 index 00000000..de0a36b5 --- /dev/null +++ b/tests/ECMSetupVersionTest/version_helpers.cmake @@ -0,0 +1,123 @@ +include(../../test_helpers.cmake) + +macro(test_version_file filename version) + unset(PACKAGE_VERSION) + unset(PACKAGE_VERSION_COMPATIBLE) + unset(PACKAGE_VERSION_EXACT) + set(PACKAGE_FIND_VERSION "${version}") + if(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)$") + set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}") + set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}") + set(PACKAGE_FIND_VERSION_PATCH "${CMAKE_MATCH_3}") + set(PACKAGE_FIND_VERSION_TWEAK "${CMAKE_MATCH_4}") + set(PACKAGE_FIND_VERSION_COUNT 4) + elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$") + set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}") + set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}") + set(PACKAGE_FIND_VERSION_PATCH "${CMAKE_MATCH_3}") + set(PACKAGE_FIND_VERSION_TWEAK) + set(PACKAGE_FIND_VERSION_COUNT 3) + elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)$") + set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}") + set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}") + set(PACKAGE_FIND_VERSION_PATCH) + set(PACKAGE_FIND_VERSION_TWEAK) + set(PACKAGE_FIND_VERSION_COUNT 2) + elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)$") + set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}") + set(PACKAGE_FIND_VERSION_MINOR) + set(PACKAGE_FIND_VERSION_PATCH) + set(PACKAGE_FIND_VERSION_TWEAK) + set(PACKAGE_FIND_VERSION_COUNT 1) + elseif(PACKAGE_FIND_VERSION STREQUAL "") + set(PACKAGE_FIND_VERSION_MAJOR) + set(PACKAGE_FIND_VERSION_MINOR) + set(PACKAGE_FIND_VERSION_PATCH) + set(PACKAGE_FIND_VERSION_TWEAK) + set(PACKAGE_FIND_VERSION_COUNT 0) + else() + message(STATUS "Invalid version ${PACKAGE_FIND_VERSION}") + endif() + include("${filename}") +endmacro() + +macro(version_var_checks prefix version) + assert_var_str_value(${prefix}_VERSION "${version}") + assert_var_str_value(${prefix}_VERSION_STRING "${version}") + if("${version}" MATCHES "^([0-9]+)") + assert_var_num_value(${prefix}_VERSION_MAJOR ${CMAKE_MATCH_1}) + endif() + if("${version}" MATCHES "^[0-9]+\\.([0-9]+)") + assert_var_num_value(${prefix}_VERSION_MINOR ${CMAKE_MATCH_1}) + endif() + if("${version}" MATCHES "^[0-9]+\\.[0-9]+\\.([0-9]+)") + assert_var_num_value(${prefix}_VERSION_PATCH ${CMAKE_MATCH_1}) + endif() + if("${version}" MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)") + assert_var_num_value(${prefix}_VERSION_TWEAK ${CMAKE_MATCH_1}) + endif() +endmacro() + +macro(project_version_var_checks version) + version_var_checks(PROJECT "${version}") +endmacro() + +macro(standard_version_var_checks prefix version) + version_var_checks(PROJECT "${version}") + version_var_checks("${prefix}" "${version}") + if(${ARGC} GREATER 2) + assert_var_num_value(${prefix}_SOVERSION ${ARGV2}) + elseif(DEFINED ${prefix}_VERSION_MAJOR AND NOT ${prefix}_VERSION_MAJOR STREQUAL "") + assert_var_num_value(${prefix}_SOVERSION "${${prefix}_VERSION_MAJOR}") + endif() +endmacro() + +macro(AnyNewer_2_3_4_checks filename) + # too old - fails + test_version_file("${filename}" "3.1.1") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED) + assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED) + + # too old - fails + test_version_file("${filename}" "3") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED) + assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED) + + # too old - fails + test_version_file("${filename}" "2.3.4.1") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED) + assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED) + + # newer - succeeds + test_version_file("${filename}" "1.1.1") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE) + assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED) + + # newer - succeeds + test_version_file("${filename}" "2.1.1") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE) + assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED) + + # newer - succeeds + test_version_file("${filename}" "2") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE) + assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED) + + # unspecified - succeeds + test_version_file("${filename}" "") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE) + assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED) + + # exact - succeeds + test_version_file("${filename}" "2.3.4") + assert_var_str_value(PACKAGE_VERSION "2.3.4") + assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE) + assert_var_bool_value(PACKAGE_VERSION_EXACT TRUE) +endmacro() |