On Wednesday 21 of December 2016 00:19:58 Fat-Zer wrote: > Good day, > > A long time ago I (kinda) promised to do something good on the testing > support for tdelibs with cmake. I'm sorry I protracted it so much. But > as it sad it's better late then never, so I want to present a series > of patches to fix/add/restore/enhance/whatever test support in > tdelibs. > > Long story short: the repository is located here: > https://github.com/Fat-Zer/tdelibs/tree/fix-check (branch fix-check) > Note that cmake submodule has a different link due to it required some > modifications too > > There were already some workarounds for tdeui and tdeabc, but they had > several problems: > - checks executables were added to "all" target, so they were build > unconditionally > - tests were run during build phase (which is confusing and wrong) > - no test statistics etc > > What the patch set features: > - Add EXCLUDE_FROM_ALL flag for tde_add_library macro > - New macro tde_add_check_executable > - add tests from dcop/tdecore/tdeui/tdeio/tdeabc/tdewallet > - a fix in tdeio against mimemagic (fixes one check application) > - 40+ automated tests (mostly of base features which won't likely > fail) but anyway IMHO it's nice to have them. > > How to use: > To build tests/check run "make check"; > To run automated tests run either "make test" or "ctest"; > To run specific tests e.g. for tdecore use "ctest -R tdecore" (note > that "tdecore" is just a substring of a test name ) > To see verbose output of tests add -V flag "ctest -V -R tdecore". > For more information see cmake documentation about ctest and cmake > add_test macro. > > No automated test require nor X session nor a running tde session, but > if run inside a such session they may interact with it. > > About tde_add_check_executable cmake macro: > The macro is mostly a tde_add_executable with a redused set of > arguments, but except of adding executable target to the "all" it adds > them to a special custom target "check". As of specific of test > executables (which are mostly one-source-file-based) it doesn't > require the SOURCE section, instead of which it globs the files based > on the target name. Also it has a TEST argument to automatically add a > test out of given file. > In short: great, good work! Long: I have some problems with tests in tdelibs. 1) On Debian/Ubuntu is used WITH_GCC_VISIBILITY and tests tdewallet/backend/testbf and testsha causes FTBFS - see patch bp0016-fix-tdewallet-tests-with-hidden-visibility.diff 2) In dcop/tests/run-tests.sh is used "source ./shell.generated..." where "source" is a bash specific => test may fail with other shells (dash on Debian/Ubuntu). Fixed in bp0017-fix-dcop-test-bashism.diff 3) Test tdeio/kmimetypetest expects mimetype definitions in tdesycoca cache => fails if it is done prior to installation. Proposed patch bp0018-fix-tdeio-kmimetype-test.diff contains a workaround for the test during the compilation on a clean build environment. 4) Test tdeabc/vcardparser/testread2 fail, probably because of some erroneous utf8 conversion. For now I've had not examined it in detail == patch not included. 5) Test tdeabc/testldapclient expects dcop server, tdelauncher and access to a foreign ldap server on the Internet => fails if it is done prior to installation and depends on many factors which can not be influenced. Therefore, I suggest not to perform this test during compilation - see patch bp0019-fix-tdeabc-ldapclient-test.diff Cheers -- Slávek
Index: b/tdewallet/backend/tests/CMakeLists.txt =================================================================== --- a/tdewallet/backend/tests/CMakeLists.txt +++ b/tdewallet/backend/tests/CMakeLists.txt @@ -28,6 +28,8 @@ tde_add_check_executable( backendtest AUTOMOC LINK tdewalletbackend-shared tdewalletclient-shared TEST ) tde_add_check_executable( testbf AUTOMOC + SOURCES testbf.cpp ../blockcipher.cc ../blowfish.cc LINK tdewalletbackend-shared tdewalletclient-shared TEST ) tde_add_check_executable( testsha AUTOMOC + SOURCES testsha.cpp ../sha1.cc LINK tdewalletbackend-shared tdewalletclient-shared TEST )
Index: b/dcop/tests/run-tests.sh =================================================================== --- a/dcop/tests/run-tests.sh +++ b/dcop/tests/run-tests.sh @@ -1,3 +1,4 @@ +#!/bin/sh clean_up() { rm -f batch.stdout shell.stdout shell.returns batch.returns @@ -42,7 +43,7 @@ ./driver "TestApp-$DCOP_TEST_PID" >driver.stdout || die "Failed to start driver" echo '* Running shell mode' -source ./shell.generated >shell.returns +. ./shell.generated >shell.returns echo -n '* Comparing ... '
Index: b/tdeio/tests/CMakeLists.txt =================================================================== --- a/tdeio/tests/CMakeLists.txt +++ b/tdeio/tests/CMakeLists.txt @@ -53,6 +53,7 @@ kmimemagictest kpropsdlgtest kprotocolinfotest kruntest kscantest kshredtest ktartest kurifiltertest kurlcompletiontest kziptest metatest netaccesstest previewtest speed tdeioslavetest tdesycocatest tdesycocaupdatetest + kmimetypetest ) foreach( _check ${CHECKS} ) @@ -67,10 +68,18 @@ # - kurifiltertest requires network access and GUI # - tdesycocatest requires installed tdebase and GUI -set( TESTS dataprotocoltest kacltest kmimetypetest ) +set( TESTS dataprotocoltest kacltest ) foreach( _check ${TESTS} ) tde_add_check_executable( ${_check} AUTOMOC LINK tdeio-shared TEST) endforeach( ) + +configure_file( kmimetypetest.sh.cmake kmimetypetest.sh @ONLY ) + +add_test( NAME "tdeio/kmimetypetest" + COMMAND sh -x "${CMAKE_CURRENT_BINARY_DIR}/kmimetypetest.sh" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" ) + + # TODO add kdirwatchunittest Index: b/tdeio/tests/kmimetypetest.sh.cmake =================================================================== --- /dev/null +++ b/tdeio/tests/kmimetypetest.sh.cmake @@ -0,0 +1,22 @@ +#!/bin/sh + +# run dcop server +../../dcop/dcopserver --nofork & +DCOP_SERVER_PID=$! + +# update tdesycoca using mime types from source +[ -d $HOME/.trinity/share ] || \ +mkdir -p $HOME/.trinity/share +[ -e $HOME/.trinity/share/mimelnk ] || \ +ln -s @CMAKE_SOURCE_DIR@/mimetypes $HOME/.trinity/share/mimelnk +../../kded/tdebuildsycoca --noincremental --nosignal + +# perform test +./kmimetypetest +STATE=$? + +# cleanup +[ ! -L $HOME/.trinity/share/mimelnk ] || \ +rm $HOME/.trinity/share/mimelnk +kill $DCOP_SERVER_PID +exit $STATE
Index: b/tdeabc/tests/CMakeLists.txt =================================================================== --- a/tdeabc/tests/CMakeLists.txt +++ b/tdeabc/tests/CMakeLists.txt @@ -54,4 +54,4 @@ # tde_add_check_executable( testdb AUTOMOC LINK tdeabc_file-shared ) tde_add_check_executable( kabcargl AUTOMOC LINK tdeabc_file-shared ) -tde_add_check_executable( testldapclient AUTOMOC LINK tdeabc-shared TEST) +tde_add_check_executable( testldapclient AUTOMOC LINK tdeabc-shared )
--------------------------------------------------------------------- To unsubscribe, e-mail: trinity-devel-unsubscribe@xxxxxxxxxxxxxxxxxxxxxxxxxx For additional commands, e-mail: trinity-devel-help@xxxxxxxxxxxxxxxxxxxxxxxxxx Read list messages on the web archive: http://trinity-devel.pearsoncomputing.net/ Please remember not to top-post: http://trinity.pearsoncomputing.net/mailing_lists/#top-posting