remove_definitions(-DQT_NO_CAST_FROM_ASCII) remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY) include(ECMAddTests) find_package(Qt6Widgets REQUIRED) ########### unittests ############### add_subdirectory(http) find_package(Qt6Concurrent ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) if (ACL_FOUND) set (kacltest_SRC kacltest.cpp) endif() ecm_add_tests( ${kacltest_SRC} listdirtest.cpp kmountpointtest.cpp upurltest.cpp dataprotocoltest.cpp jobtest.cpp jobremotetest.cpp kfileitemtest.cpp kprotocolinfotest.cpp globaltest.cpp mimetypefinderjobtest.cpp mkpathjobtest.cpp threadtest.cpp udsentrytest.cpp deletejobtest.cpp deleteortrashjobtest.cpp urlutiltest.cpp batchrenamejobtest.cpp ksambasharetest.cpp krecentdocumenttest.cpp filefiltertest.cpp NAME_PREFIX "kiocore-" LINK_LIBRARIES KF6::KIOCore KF6::I18n KF6::ConfigCore KF6::Service Qt6::Test Qt6::Network Qt6::Xml ) target_link_libraries(threadtest Qt6::Concurrent) target_link_libraries(deleteortrashjobtest KF6::KIOWidgets) ecm_add_test( connectionbackendtest.cpp ../src/core/connectionbackend.cpp ../src/core/kiocoreconnectiondebug.cpp TEST_NAME connectionbackendtest NAME_PREFIX "kiocore-" LINK_LIBRARIES KF6::KIOCore Qt6::Test Qt6::Network KF6::I18n ) # as per sysadmin request these are limited to linux only! https://invent.kde.org/frameworks/kio/-/merge_requests/1008 if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND USE_FTPD_WSGIDAV_UNITTEST) include(FindGem) find_gem(ftpd) set_package_properties(Gem_ftpd PROPERTIES TYPE REQUIRED DESCRIPTION "Ruby ftpd gem. Either install it from your distribution's repos or by running `gem install --user-install ftpd`, which will install it under your user's home dir." PURPOSE "Ruby gem 'ftpd' required for testing the ftp worker." URL "https://rubygems.org/gems/ftpd") add_definitions(-DRubyExe_EXECUTABLE="${RubyExe_EXECUTABLE}") ecm_add_tests( ftptest.cpp NAME_PREFIX "kiocore-" LINK_LIBRARIES KF6::KIOCore KF6::I18n Qt6::Test Qt6::Network ) find_package(WsgidavExe) set_package_properties(WsgidavExe PROPERTIES TYPE REQUIRED DESCRIPTION "Python webdav server. Can be easily installed by running `pip3 install wsgidav`, which will install it under your user's home dir." PURPOSE "wsgidav required for running the webdavtest." URL "https://pypi.org/project/WsgiDAV/") ecm_add_tests( webdavtest.cpp NAME_PREFIX "kiocore-" LINK_LIBRARIES KF6::KIOCore Qt6::Test Qt6::Network ) endif() if(UNIX) ecm_add_tests( privilegejobtest.cpp NAME_PREFIX "kiocore-" LINK_LIBRARIES KF6::KIOCore KF6::I18n Qt6::Test Qt6::Network ) endif() if (TARGET KF6::KIOGui) ecm_add_tests( favicontest.cpp openurljobtest.cpp kemailclientlauncherjobtest.cpp NAME_PREFIX "kiogui-" LINK_LIBRARIES KF6::KIOCore KF6::KIOGui KF6::WindowSystem Qt6::Test ) foreach(_kprocessrunnerTest applicationlauncherjob commandlauncherjob kterminallauncherjob) foreach(_systemd "" "SCOPE" "SERVICE") set(_scope 0) set(_service 0) set(_forking 0) if(_systemd STREQUAL "SERVICE") set(KPR_TEST_TARGET ${_kprocessrunnerTest}_servicetest) set(_service 1) elseif(_systemd STREQUAL "SCOPE") set(KPR_TEST_TARGET ${_kprocessrunnerTest}_scopetest) set(_scope 1) else() set(KPR_TEST_TARGET ${_kprocessrunnerTest}_forkingtest) set(_forking 1) endif() add_executable(${KPR_TEST_TARGET} ${_kprocessrunnerTest}test.cpp) target_link_libraries(${KPR_TEST_TARGET} KF6::WindowSystem KF6::KIOCore KF6::KIOGui Qt6::Test) ecm_mark_as_test(${KPR_TEST_TARGET}) add_test(NAME ${KPR_TEST_TARGET} COMMAND ${KPR_TEST_TARGET}) set_tests_properties(${KPR_TEST_TARGET} PROPERTIES ENVIRONMENT "_KDE_APPLICATIONS_AS_SERVICE=${_service}; _KDE_APPLICATIONS_AS_SCOPE=${_scope}; _KDE_APPLICATIONS_AS_FORKING=${_forking};" ) endforeach() endforeach() target_link_libraries(favicontest Qt6::Concurrent) endif() if (NOT ANDROID) if (TARGET KF6::KIOWidgets) ecm_add_tests( clipboardupdatertest.cpp dropjobtest.cpp kdynamicjobtrackernowidgetstest.cpp desktopexecparsertest.cpp kdirlistertest.cpp kdirmodeltest.cpp kfileitemactionstest.cpp fileundomanagertest.cpp kurlcompletiontest.cpp ${jobguitest_SRC} pastetest.cpp kurifiltersearchprovideractionstest.cpp NAME_PREFIX "kiowidgets-" LINK_LIBRARIES KF6::KIOCore KF6::KIOWidgets Qt6::Test ${DBUS_LIB} ) set(_libexec_dir_kf "${KDKE_INSTALL_FULL_LIBEXECDIR_KF}") target_compile_definitions(desktopexecparsertest PRIVATE "KDE_INSTALL_FULL_LIBEXECDIR_KF=${_libexec_dir_kf}") set(kurifiltertest_libs KF6::KIOCore KF6::KIOWidgets Qt6::Test ${DBUS_LIB}) set(URIFILTER_COLON_TEST kiowidgets-kurifiltertest-colon-separator) ecm_add_test(kurifiltertest.cpp LINK_LIBRARIES ${kurifiltertest_libs} TEST_NAME ${URIFILTER_COLON_TEST} ) target_compile_definitions(${URIFILTER_COLON_TEST} PUBLIC "-DWEBSHORTCUT_SEPARATOR=':'") set(URIFILTER_SPACE_TEST kiowidgets-kurifiltertest-space-separator) ecm_add_test(kurifiltertest.cpp LINK_LIBRARIES ${kurifiltertest_libs} TEST_NAME ${URIFILTER_SPACE_TEST} ) target_compile_definitions(${URIFILTER_SPACE_TEST} PUBLIC "-DWEBSHORTCUT_SEPARATOR=' '") # Same as kurlcompletiontest, but with immediate return, and results posted by thread later ecm_add_test( kurlcompletiontest.cpp TEST_NAME kurlcompletiontest-nowait NAME_PREFIX "kiowidgets-" LINK_LIBRARIES KF6::KIOCore KF6::KIOWidgets Qt6::Test ) set_target_properties(kurlcompletiontest-nowait PROPERTIES COMPILE_FLAGS "-DNO_WAIT") endif() if (TARGET KF6::KIOFileWidgets) include_directories(${CMAKE_SOURCE_DIR}/src/filewidgets ${CMAKE_BINARY_DIR}/src/filewidgets) ecm_add_tests( kurlnavigatortest.cpp kurlcomboboxtest.cpp kdiroperatortest.cpp kfilewidgettest.cpp kfilecustomdialogtest.cpp knewfilemenutest.cpp kfilecopytomenutest.cpp kfileplacesmodeltest.cpp kfileplacesviewtest.cpp kurlrequestertest.cpp kfilefiltercombotest.cpp NAME_PREFIX "kiofilewidgets-" LINK_LIBRARIES KF6::KIOFileWidgets KF6::KIOWidgets KF6::Bookmarks Qt6::Test KF6::I18n KF6::WindowSystem ) # TODO: fix symbol exports for windows -> 'KSambaShare::KSambaShare': inconsistent dll linkage if (NOT WIN32) ecm_add_test( ksambashareprivatetest.cpp ../src/core/ksambashare.cpp ../src/core/kiocoredebug.cpp TEST_NAME ksambashareprivatetest NAME_PREFIX "kiocore-" LINK_LIBRARIES KF6::KIOCore Qt6::Test Qt6::Network ) endif() set_tests_properties(kiofilewidgets-kfileplacesmodeltest PROPERTIES RUN_SERIAL TRUE) set_tests_properties(kiofilewidgets-kfileplacesviewtest PROPERTIES RUN_SERIAL TRUE) set_tests_properties(kiowidgets-kurifiltertest-space-separator PROPERTIES RUN_SERIAL TRUE) endif() endif() # this should be done by cmake, see bug 371721 if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set_property(TARGET jobtest APPEND PROPERTY AUTOMOC_MOC_OPTIONS --include ${CMAKE_BINARY_DIR}/src/core/moc_predefs.h) endif() # Benchmark, compiled, but not run automatically with ctest add_executable(kcoredirlister_benchmark kcoredirlister_benchmark.cpp) target_link_libraries(kcoredirlister_benchmark KF6::KIOCore KF6::KIOWidgets Qt6::Test) add_executable(udsentry_api_comparison_benchmark udsentry_api_comparison_benchmark.cpp) target_link_libraries(udsentry_api_comparison_benchmark KF6::KIOCore KF6::KIOWidgets Qt6::Test) add_executable(udsentry_benchmark udsentry_benchmark.cpp) target_link_libraries(udsentry_benchmark KF6::KIOCore KF6::KIOWidgets Qt6::Test)