Re: [Patches] Enhancement of test/check building

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Trinity Users]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [KDE]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]     [Trinity Desktop Environment]

  Powered by Linux