aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@kde.org>2014-12-17 20:33:32 +0000
committerAlex Merry <alex.merry@kde.org>2014-12-28 15:43:52 +0000
commit107f255620b6284de118aa1f358ab6cf99862ae9 (patch)
treed3f023bd38a2ff748ed0ebf4439493bff6a8ee03 /tests
parent69939eef4f828e881edd387b129128cb252f7ab3 (diff)
downloadextra-cmake-modules-107f255620b6284de118aa1f358ab6cf99862ae9.tar.gz
extra-cmake-modules-107f255620b6284de118aa1f358ab6cf99862ae9.tar.bz2
Make KDEInstallDirs provide KDE_INSTALL_* variables.
Creating variables whose names start with CMAKE_ is a bad idea for modules distributed outside CMake itself. Since the module is called KDEInstallDirs, having a KDE_INSTALL_ prefix for the variables is clear and intuitive. Both CMAKE_INSTALL_* variables and the older KDELibs4-compatible variables are provided, unless KDE_INSTALL_DIRS_NO_DEPRECATED is set to TRUE before the module is included. Even then, the CMAKE_INSTALL_* variables provided by the GNUInstallDirs module will still be set and understood (for compatibility with that module), unless KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES is set to TRUE. REVIEW: 121646
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt45
-rw-r--r--tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt39
-rw-r--r--tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt174
-rw-r--r--tests/KDEInstallDirsTest/vars_in_sync/main.c4
4 files changed, 246 insertions, 16 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 0ee544a5..fe160b8c 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -10,20 +10,24 @@ add_subdirectory(ECMGeneratePkgConfigFile)
# a macro for tests that have a simple format where the name matches the
# directory and project
-macro(ADD_TEST_MACRO NAME COMMAND)
- string(REPLACE "." "/" dir "${NAME}")
- string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
- add_test(${NAME} ${CMAKE_CTEST_COMMAND}
- --build-and-test
- "${CMAKE_CURRENT_SOURCE_DIR}/${dir}"
- "${CMAKE_CURRENT_BINARY_DIR}/${dir}"
- --build-two-config
- --build-generator ${CMAKE_GENERATOR}
- --build-makeprogram ${CMAKE_MAKE_PROGRAM}
- --build-project ${proj}
- ${${NAME}_EXTRA_OPTIONS}
- --test-command ${COMMAND} ${ARGN})
-endmacro(ADD_TEST_MACRO)
+macro(add_test_variant NAME BASE COMMAND)
+ string(REPLACE "." "/" src_dir "${BASE}")
+ string(REPLACE "." "/" build_dir "${NAME}")
+ string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
+ add_test(${NAME} ${CMAKE_CTEST_COMMAND}
+ --build-and-test
+ "${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}"
+ "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}"
+ --build-two-config
+ --build-generator ${CMAKE_GENERATOR}
+ --build-makeprogram ${CMAKE_MAKE_PROGRAM}
+ --build-project ${proj}
+ ${${NAME}_EXTRA_OPTIONS}
+ --test-command ${COMMAND} ${ARGN})
+endmacro()
+macro(add_test_macro NAME)
+ add_test_variant("${NAME}" "${NAME}" ${ARGN})
+endmacro()
find_package(Qt5LinguistTools CONFIG)
@@ -32,9 +36,22 @@ add_test_macro(ExecuteKDEModules dummy)
add_test_macro(KDEInstallDirsTest.vars_defined dummy)
add_test_macro(KDEInstallDirsTest.not_cache_variable dummy)
+
+add_test_variant(KDEInstallDirsTest.vars_in_sync_no_args
+ KDEInstallDirsTest.vars_in_sync dummy)
+
+set(KDEInstallDirsTest.vars_in_sync_args_EXTRA_OPTIONS
+ --build-options -DCMAKE_INSTALL_DATADIR=altdata
+ -DKDE_INSTALL_BINDIR=altbin
+ -DLIB_INSTALL_DIR=altlib
+ )
+add_test_variant(KDEInstallDirsTest.vars_in_sync_args
+ KDEInstallDirsTest.vars_in_sync dummy)
+
set(KDEInstallDirsTest.usr_vars_defined_EXTRA_OPTIONS
--build-options -DCMAKE_INSTALL_PREFIX=/usr)
add_test_macro(KDEInstallDirsTest.usr_vars_defined dummy)
+
find_package(Qt5Core QUIET)
if (TARGET Qt5::qmake)
set(KDEInstallDirsTest.qt_vars_defined_EXTRA_OPTIONS
diff --git a/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt b/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt
index ea62d95b..8ddbb27a 100644
--- a/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt
+++ b/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt
@@ -4,9 +4,44 @@ cmake_minimum_required(VERSION 2.8)
set(ECM_KDE_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../kde-modules)
set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
+set(CMAKE_MODULE_PATH "${ECM_KDE_MODULE_DIR}")
-set(CMAKE_INSTALL_LIBDIR "foo")
-include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
+set(KDE_INSTALL_BINDIR "altbin")
+set(CMAKE_INSTALL_DATADIR "altdata")
+set(LIB_INSTALL_DIR "altlib")
+
+include(KDEInstallDirs)
+
+
+include(../var_list.cmake)
+include(../../test_helpers.cmake)
+
+message(STATUS "Checking result of setting KDE_INSTALL_BINDIR")
+assert_var_str_value(KDE_INSTALL_BINDIR "altbin")
+if(should_set_CMAKE_INSTALL_BINDIR)
+ assert_var_str_value(CMAKE_INSTALL_BINDIR "altbin")
+endif()
+if(NOT KDE_INSTALL_DIRS_NO_DEPRECATED)
+ assert_var_str_value(BIN_INSTALL_DIR "altbin")
+endif()
+
+if(should_set_CMAKE_INSTALL_DATADIR)
+ message(STATUS "Checking result of setting CMAKE_INSTALL_DATADIR")
+ assert_var_str_value(KDE_INSTALL_DATADIR "altdata")
+ assert_var_str_value(CMAKE_INSTALL_DATADIR "altdata")
+ if(NOT KDE_INSTALL_DIRS_NO_DEPRECATED)
+ assert_var_str_value(DATA_INSTALL_DIR "altdata")
+ endif()
+endif()
+
+if(NOT KDE_INSTALL_DIRS_NO_DEPRECATED)
+ message(STATUS "Checking result of setting LIB_INSTALL_DIR")
+ assert_var_str_value(KDE_INSTALL_LIBDIR "altlib")
+ if(should_set_CMAKE_INSTALL_LIBDIR)
+ assert_var_str_value(CMAKE_INSTALL_LIBDIR "altlib")
+ endif()
+ assert_var_str_value(LIB_INSTALL_DIR "altlib")
+endif()
add_executable(dummy main.c)
set_target_properties(dummy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
diff --git a/tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt b/tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt
new file mode 100644
index 00000000..4249ed0d
--- /dev/null
+++ b/tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt
@@ -0,0 +1,174 @@
+project(KDEInstallDirs.vars_in_sync)
+cmake_minimum_required(VERSION 2.8.12)
+
+set(ECM_KDE_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../kde-modules)
+set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
+set(CMAKE_MODULE_PATH "${ECM_KDE_MODULE_DIR}")
+include(KDEInstallDirs)
+
+set(var_suffixes
+ APPDIR
+ AUTOSTARTDIR
+ BINDIR
+ CMAKEPACKAGEDIR
+ CONFDIR
+ DATADIR
+ DATADIR_KF5
+ DATAROOTDIR
+ DBUSDIR
+ DBUSINTERFACEDIR
+ DBUSSERVICEDIR
+ DBUSSYSTEMSERVICEDIR
+ DESKTOPDIR
+ DOCBUNDLEDIR
+ EXECROOTDIR
+ ICONDIR
+ INCLUDEDIR
+ INCLUDEDIR_KF5
+ INFODIR
+ KCFGDIR
+ KCONFUPDATEDIR
+ KNOTIFY5RCDIR
+ KXMLGUI5DIR
+ KSERVICES5DIR
+ KSERVICETYPES5DIR
+ LIBDIR
+ LIBEXECDIR
+ LIBEXECDIR_KF5
+ LOCALEDIR
+ LOCALSTATEDIR
+ MANDIR
+ MIMEDIR
+ METAINFODIR
+ PLUGINDIR
+ QMLDIR
+ QTPLUGINDIR
+ QTQUICKIMPORTSDIR
+ SBINDIR
+ SHAREDSTATEDIR
+ SOUNDDIR
+ SYSCONFDIR
+ TEMPLATEDIR
+ WALLPAPERDIR)
+
+set(COMPAT_APPDIR XDG_APPS_INSTALL_DIR)
+set(COMPAT_AUTOSTARTDIR AUTOSTART_INSTALL_DIR)
+set(COMPAT_BINDIR BIN_INSTALL_DIR)
+set(COMPAT_CMAKEPACKAGEDIR CMAKECONFIG_INSTALL_PREFIX)
+set(COMPAT_CONFDIR CONFIG_INSTALL_DIR)
+set(COMPAT_DATADIR DATA_INSTALL_DIR)
+set(COMPAT_DATADIR_KF5 KF5_DATA_INSTALL_DIR)
+set(COMPAT_DATAROOTDIR SHARE_INSTALL_PREFIX)
+set(COMPAT_DBUSINTERFACEDIR DBUS_INTERFACES_INSTALL_DIR)
+set(COMPAT_DBUSSERVICEDIR DBUS_SERVICES_INSTALL_DIR)
+set(COMPAT_DBUSSYSTEMSERVICEDIR DBUS_SYSTEM_SERVICES_INSTALL_DIR)
+set(COMPAT_DESKTOPDIR XDG_DIRECTORY_INSTALL_DIR)
+set(COMPAT_DOCBUNDLEDIR HTML_INSTALL_DIR)
+set(COMPAT_EXECROOTDIR EXEC_INSTALL_PREFIX)
+set(COMPAT_ICONDIR ICON_INSTALL_DIR)
+set(COMPAT_INCLUDEDIR INCLUDE_INSTALL_DIR)
+set(COMPAT_INCLUDEDIR_KF5 KF5_INCLUDE_INSTALL_DIR)
+set(COMPAT_KCFGDIR KCFG_INSTALL_DIR)
+set(COMPAT_KCONFUPDATEDIR KCONF_UPDATE_INSTALL_DIR)
+set(COMPAT_KNOTIFY5RCDIR KNOTIFYRC_INSTALL_DIR)
+set(COMPAT_KXMLGUI5DIR KXMLGUI_INSTALL_DIR)
+set(COMPAT_KSERVICES5DIR SERVICES_INSTALL_DIR)
+set(COMPAT_KSERVICETYPES5DIR SERVICETYPES_INSTALL_DIR)
+set(COMPAT_LIBDIR LIB_INSTALL_DIR)
+set(COMPAT_LIBEXECDIR LIBEXEC_INSTALL_DIR)
+set(COMPAT_LIBEXECDIR_KF5 KF5_LIBEXEC_INSTALL_DIR)
+set(COMPAT_LOCALEDIR LOCALE_INSTALL_DIR)
+set(COMPAT_MANDIR MAN_INSTALL_DIR)
+set(COMPAT_MIMEDIR XDG_MIME_INSTALL_DIR)
+set(COMPAT_PLUGINDIR PLUGIN_INSTALL_DIR)
+set(COMPAT_QMLDIR QML_INSTALL_DIR)
+set(COMPAT_QTPLUGINDIR QT_PLUGIN_INSTALL_DIR)
+set(COMPAT_QTQUICKIMPORTSDIR IMPORTS_INSTALL_DIR)
+set(COMPAT_SBINDIR SBIN_INSTALL_DIR)
+set(COMPAT_SOUNDDIR SOUND_INSTALL_DIR)
+set(COMPAT_SYSCONFDIR SYSCONF_INSTALL_DIR)
+set(COMPAT_TEMPLATEDIR TEMPLATES_INSTALL_DIR)
+set(COMPAT_WALLPAPERDIR WALLPAPER_INSTALL_DIR)
+if(APPLE)
+ set(COMPAT_BUNDLEDIR BUNDLE_INSTALL_DIR)
+ list(APPEND var_suffixes BUNDLEDIR)
+endif()
+
+set(gnu_install_dirs_suffixes
+ BINDIR
+ SBINDIR
+ LIBEXECDIR
+ SYSCONFDIR
+ SHAREDSTATEDIR
+ LOCALSTATEDIR
+ LIBDIR
+ INCLUDEDIR
+ OLDINCLUDEDIR
+ DATAROOTDIR
+ DATADIR
+ INFODIR
+ LOCALEDIR
+ MANDIR
+ DOCDIR)
+
+macro(assert_defined varname)
+ if(NOT DEFINED ${varname})
+ message(SEND_ERROR "${varname} is not defined.")
+ endif()
+endmacro()
+macro(assert_non_empty varname)
+ assert_defined(${varname})
+ if(NOT ${varname})
+ message(SEND_ERROR "${varname} is empty")
+ endif()
+endmacro()
+macro(assert_str_equal varname exp_varname)
+ assert_defined(${varname})
+ if(NOT ${varname} STREQUAL ${exp_varname})
+ message(SEND_ERROR "${varname} is '${${varname}}', expecting '${${exp_varname}}'.")
+ endif()
+endmacro()
+set(FOO bax)
+assert_defined(FOO)
+set(BAR bax)
+assert_str_equal(FOO BAR)
+
+foreach(suffix ${var_suffixes})
+ assert_defined(KDE_INSTALL_${suffix})
+ assert_defined(KDE_INSTALL_FULL_${suffix})
+
+ set(should_have_cmake_var TRUE)
+ if(KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES)
+ set(should_have_cmake_var FALSE)
+ elseif(KDE_INSTALL_DIRS_NO_DEPRECATED)
+ list(FIND gnu_install_dirs_suffixes "${suffix}" _list_offset)
+ if(_list_offset EQUAL -1)
+ set(should_have_cmake_var FALSE)
+ endif()
+ endif()
+ if(should_have_cmake_var)
+ assert_str_equal(CMAKE_INSTALL_${suffix} KDE_INSTALL_${suffix})
+ assert_str_equal(CMAKE_INSTALL_FULL_${suffix} KDE_INSTALL_FULL_${suffix})
+ endif()
+
+ set(should_have_compat_var TRUE)
+ if(NOT DEFINED COMPAT_${suffix})
+ set(should_have_compat_var FALSE)
+ elseif(KDE_INSTALL_DIRS_NO_DEPRECATED)
+ set(should_have_compat_var FALSE)
+ endif()
+ if(should_have_compat_var)
+ assert_str_equal(${COMPAT_${suffix}} KDE_INSTALL_${suffix})
+ endif()
+endforeach()
+
+assert_defined(KF5_INSTALL_TARGETS_DEFAULT_ARGS)
+assert_defined(KDE_INSTALL_TARGETS_DEFAULT_ARGS)
+if(NOT KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES AND
+ NOT KDE_INSTALL_DIRS_NO_DEPRECATED)
+ assert_str_equal(INSTALL_TARGETS_DEFAULT_ARGS
+ KDE_INSTALL_TARGETS_DEFAULT_ARGS)
+endif()
+
+add_executable(dummy main.c)
+set_target_properties(dummy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
diff --git a/tests/KDEInstallDirsTest/vars_in_sync/main.c b/tests/KDEInstallDirsTest/vars_in_sync/main.c
new file mode 100644
index 00000000..c13815ce
--- /dev/null
+++ b/tests/KDEInstallDirsTest/vars_in_sync/main.c
@@ -0,0 +1,4 @@
+int main()
+{
+ return 0;
+}