diff options
author | Alex Merry <alex.merry@kde.org> | 2014-12-27 15:28:39 +0000 |
---|---|---|
committer | Alex Merry <alex.merry@kde.org> | 2014-12-28 15:03:31 +0000 |
commit | bd69cdeea9aef1f254b7d83dd137a4de955151b7 (patch) | |
tree | f31fa1f7730fa6cf5aa64b506d5aaa306d3c1891 /tests | |
parent | fe771709d774402e4cdeb883c2783f64b6e62d65 (diff) | |
download | extra-cmake-modules-bd69cdeea9aef1f254b7d83dd137a4de955151b7.tar.gz extra-cmake-modules-bd69cdeea9aef1f254b7d83dd137a4de955151b7.tar.bz2 |
Add COMPATIBILITY argument to ecm_setup_version().
Lots of libraries will want to use SameMajorVersion to make sure
searching for version 1 of a library doesn't give you version 2, for
example.
We may want to add another, custom compatibility mode for
KDE Frameworks-style versioning, where version x.90.z to x.99.z are
alpha/beta releases for version (x+1).
REVIEW: 121696
Diffstat (limited to 'tests')
7 files changed, 251 insertions, 0 deletions
diff --git a/tests/ECMSetupVersionTest/CMakeLists.txt b/tests/ECMSetupVersionTest/CMakeLists.txt index 2e7decfb..b0845e57 100644 --- a/tests/ECMSetupVersionTest/CMakeLists.txt +++ b/tests/ECMSetupVersionTest/CMakeLists.txt @@ -17,6 +17,9 @@ add_version_test(old_simple dummy) add_version_test(old_soversion dummy) add_version_test(old_version_file dummy) add_version_test(old_version_file_abspath dummy) +add_version_test(old_version_file_anynewer dummy) +add_version_test(old_version_file_exact dummy) +add_version_test(old_version_file_samemajor dummy) add_version_test(old_header check_header) add_version_test(old_header_abspath check_header) diff --git a/tests/ECMSetupVersionTest/old_version_file_anynewer/CMakeLists.txt b/tests/ECMSetupVersionTest/old_version_file_anynewer/CMakeLists.txt new file mode 100644 index 00000000..c90f22b4 --- /dev/null +++ b/tests/ECMSetupVersionTest/old_version_file_anynewer/CMakeLists.txt @@ -0,0 +1,77 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(old_version_file_anynewer) + +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules) +include(ECMSetupVersion) + +ecm_setup_version(2.3.4 + VARIABLE_PREFIX Foo + PACKAGE_VERSION_FILE FooVersion.cmake COMPATIBILITY AnyNewerVersion +) + +macro(strcheck var val) + if(NOT ${var} STREQUAL "${val}") + message(FATAL_ERROR "${var} was ${${var}} instead of ${val}") + endif() +endmacro() +macro(numcheck var val) + if(NOT ${var} EQUAL "${val}") + message(FATAL_ERROR "${var} was ${${var}} instead of ${val}") + endif() +endmacro() +macro(boolcheck var val) + if(${val} AND NOT ${var}) + message(FATAL_ERROR "${var} was FALSE") + elseif(${var} AND NOT ${val}) + message(FATAL_ERROR "${var} was TRUE") + endif() +endmacro() + +macro(find_foo major minor patch) + unset(PACKAGE_VERSION) + unset(PACKAGE_VERSION_COMPATIBLE) + unset(PACKAGE_VERSION_EXACT) + set(PACKAGE_FIND_VERSION "${major}.${minor}.${patch}") + set(PACKAGE_FIND_VERSION_MAJOR "${major}") + set(PACKAGE_FIND_VERSION_MINOR "${minor}") + set(PACKAGE_FIND_VERSION_PATCH "${patch}") + set(PACKAGE_FIND_VERSION_TWEAK) + include("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake") + strcheck(PACKAGE_VERSION "2.3.4") +endmacro() + +strcheck(PROJECT_VERSION "2.3.4") +strcheck(PROJECT_VERSION_STRING "2.3.4") +numcheck(PROJECT_VERSION_MAJOR 2) +numcheck(PROJECT_VERSION_MINOR 3) +numcheck(PROJECT_VERSION_PATCH 4) + +strcheck(Foo_VERSION "2.3.4") +strcheck(Foo_VERSION_STRING "2.3.4") +numcheck(Foo_VERSION_MAJOR 2) +numcheck(Foo_VERSION_MINOR 3) +numcheck(Foo_VERSION_PATCH 4) +numcheck(Foo_SOVERSION 2) + +# too old - fails +find_foo(3 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE FALSE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# newer - succeeds +find_foo(1 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE TRUE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# newer - succeeds +find_foo(2 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE TRUE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# exact - succeeds +find_foo(2 3 4) +boolcheck(PACKAGE_VERSION_COMPATIBLE TRUE) +boolcheck(PACKAGE_VERSION_EXACT TRUE) + +add_executable(dummy main.c) diff --git a/tests/ECMSetupVersionTest/old_version_file_anynewer/main.c b/tests/ECMSetupVersionTest/old_version_file_anynewer/main.c new file mode 100644 index 00000000..c13815ce --- /dev/null +++ b/tests/ECMSetupVersionTest/old_version_file_anynewer/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/tests/ECMSetupVersionTest/old_version_file_exact/CMakeLists.txt b/tests/ECMSetupVersionTest/old_version_file_exact/CMakeLists.txt new file mode 100644 index 00000000..999a6cd8 --- /dev/null +++ b/tests/ECMSetupVersionTest/old_version_file_exact/CMakeLists.txt @@ -0,0 +1,82 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(old_version_file_exact) + +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules) +include(ECMSetupVersion) + +ecm_setup_version(2.3.4 + VARIABLE_PREFIX Foo + PACKAGE_VERSION_FILE FooVersion.cmake COMPATIBILITY ExactVersion +) + +macro(strcheck var val) + if(NOT ${var} STREQUAL "${val}") + message(FATAL_ERROR "${var} was ${${var}} instead of ${val}") + endif() +endmacro() +macro(numcheck var val) + if(NOT ${var} EQUAL "${val}") + message(FATAL_ERROR "${var} was ${${var}} instead of ${val}") + endif() +endmacro() +macro(boolcheck var val) + if(${val} AND NOT ${var}) + message(FATAL_ERROR "${var} was FALSE") + elseif(${var} AND NOT ${val}) + message(FATAL_ERROR "${var} was TRUE") + endif() +endmacro() + +macro(find_foo major minor patch) + unset(PACKAGE_VERSION) + unset(PACKAGE_VERSION_COMPATIBLE) + unset(PACKAGE_VERSION_EXACT) + set(PACKAGE_FIND_VERSION "${major}.${minor}.${patch}") + set(PACKAGE_FIND_VERSION_MAJOR "${major}") + set(PACKAGE_FIND_VERSION_MINOR "${minor}") + set(PACKAGE_FIND_VERSION_PATCH "${patch}") + set(PACKAGE_FIND_VERSION_TWEAK) + include("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake") + strcheck(PACKAGE_VERSION "2.3.4") +endmacro() + +strcheck(PROJECT_VERSION "2.3.4") +strcheck(PROJECT_VERSION_STRING "2.3.4") +numcheck(PROJECT_VERSION_MAJOR 2) +numcheck(PROJECT_VERSION_MINOR 3) +numcheck(PROJECT_VERSION_PATCH 4) + +strcheck(Foo_VERSION "2.3.4") +strcheck(Foo_VERSION_STRING "2.3.4") +numcheck(Foo_VERSION_MAJOR 2) +numcheck(Foo_VERSION_MINOR 3) +numcheck(Foo_VERSION_PATCH 4) +numcheck(Foo_SOVERSION 2) + +# too old - fails +find_foo(3 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE FALSE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# wrong major version - fails +find_foo(1 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE FALSE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# wrong minor - fails +find_foo(2 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE FALSE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# wrong patch - fails +find_foo(2 3 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE FALSE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# exact - succeeds +find_foo(2 3 4) +boolcheck(PACKAGE_VERSION_COMPATIBLE TRUE) +boolcheck(PACKAGE_VERSION_EXACT TRUE) + +add_executable(dummy main.c) diff --git a/tests/ECMSetupVersionTest/old_version_file_exact/main.c b/tests/ECMSetupVersionTest/old_version_file_exact/main.c new file mode 100644 index 00000000..c13815ce --- /dev/null +++ b/tests/ECMSetupVersionTest/old_version_file_exact/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/tests/ECMSetupVersionTest/old_version_file_samemajor/CMakeLists.txt b/tests/ECMSetupVersionTest/old_version_file_samemajor/CMakeLists.txt new file mode 100644 index 00000000..569dcac3 --- /dev/null +++ b/tests/ECMSetupVersionTest/old_version_file_samemajor/CMakeLists.txt @@ -0,0 +1,77 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(old_version_file_samemajor) + +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules) +include(ECMSetupVersion) + +ecm_setup_version(2.3.4 + VARIABLE_PREFIX Foo + PACKAGE_VERSION_FILE FooVersion.cmake COMPATIBILITY SameMajorVersion +) + +macro(strcheck var val) + if(NOT ${var} STREQUAL "${val}") + message(FATAL_ERROR "${var} was ${${var}} instead of ${val}") + endif() +endmacro() +macro(numcheck var val) + if(NOT ${var} EQUAL "${val}") + message(FATAL_ERROR "${var} was ${${var}} instead of ${val}") + endif() +endmacro() +macro(boolcheck var val) + if(${val} AND NOT ${var}) + message(FATAL_ERROR "${var} was FALSE") + elseif(${var} AND NOT ${val}) + message(FATAL_ERROR "${var} was TRUE") + endif() +endmacro() + +macro(find_foo major minor patch) + unset(PACKAGE_VERSION) + unset(PACKAGE_VERSION_COMPATIBLE) + unset(PACKAGE_VERSION_EXACT) + set(PACKAGE_FIND_VERSION "${major}.${minor}.${patch}") + set(PACKAGE_FIND_VERSION_MAJOR "${major}") + set(PACKAGE_FIND_VERSION_MINOR "${minor}") + set(PACKAGE_FIND_VERSION_PATCH "${patch}") + set(PACKAGE_FIND_VERSION_TWEAK) + include("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake") + strcheck(PACKAGE_VERSION "2.3.4") +endmacro() + +strcheck(PROJECT_VERSION "2.3.4") +strcheck(PROJECT_VERSION_STRING "2.3.4") +numcheck(PROJECT_VERSION_MAJOR 2) +numcheck(PROJECT_VERSION_MINOR 3) +numcheck(PROJECT_VERSION_PATCH 4) + +strcheck(Foo_VERSION "2.3.4") +strcheck(Foo_VERSION_STRING "2.3.4") +numcheck(Foo_VERSION_MAJOR 2) +numcheck(Foo_VERSION_MINOR 3) +numcheck(Foo_VERSION_PATCH 4) +numcheck(Foo_SOVERSION 2) + +# too old - fails +find_foo(3 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE FALSE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# wrong major version - fails +find_foo(1 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE FALSE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# correct major version, more recent - succeeds +find_foo(2 1 1) +boolcheck(PACKAGE_VERSION_COMPATIBLE TRUE) +boolcheck(PACKAGE_VERSION_EXACT FALSE) + +# exact - succeeds +find_foo(2 3 4) +boolcheck(PACKAGE_VERSION_COMPATIBLE TRUE) +boolcheck(PACKAGE_VERSION_EXACT TRUE) + +add_executable(dummy main.c) diff --git a/tests/ECMSetupVersionTest/old_version_file_samemajor/main.c b/tests/ECMSetupVersionTest/old_version_file_samemajor/main.c new file mode 100644 index 00000000..c13815ce --- /dev/null +++ b/tests/ECMSetupVersionTest/old_version_file_samemajor/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} |