aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@kde.org>2014-12-27 15:28:39 +0000
committerAlex Merry <alex.merry@kde.org>2014-12-28 15:03:31 +0000
commitbd69cdeea9aef1f254b7d83dd137a4de955151b7 (patch)
treef31fa1f7730fa6cf5aa64b506d5aaa306d3c1891 /tests
parentfe771709d774402e4cdeb883c2783f64b6e62d65 (diff)
downloadextra-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')
-rw-r--r--tests/ECMSetupVersionTest/CMakeLists.txt3
-rw-r--r--tests/ECMSetupVersionTest/old_version_file_anynewer/CMakeLists.txt77
-rw-r--r--tests/ECMSetupVersionTest/old_version_file_anynewer/main.c4
-rw-r--r--tests/ECMSetupVersionTest/old_version_file_exact/CMakeLists.txt82
-rw-r--r--tests/ECMSetupVersionTest/old_version_file_exact/main.c4
-rw-r--r--tests/ECMSetupVersionTest/old_version_file_samemajor/CMakeLists.txt77
-rw-r--r--tests/ECMSetupVersionTest/old_version_file_samemajor/main.c4
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;
+}