aboutsummaryrefslogtreecommitdiff
path: root/tests/ECMSetupVersionTest/version_helpers.cmake
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@kde.org>2014-12-28 16:32:13 +0000
committerAlex Merry <alex.merry@kde.org>2014-12-28 17:30:11 +0000
commitf8af407eba5c5ea45be2c6351cf41a7cb44fed21 (patch)
tree0c3326caf677883ec00e292312213acefe366877 /tests/ECMSetupVersionTest/version_helpers.cmake
parent351fe45dba7ac04ec2779b7d761ac55a58f89945 (diff)
downloadextra-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.cmake123
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()