Digikam test data conventions

Steven Robbins steve at sumost.ca
Thu Oct 6 14:19:44 BST 2022


On Thursday, October 6, 2022 12:40:38 A.M. CDT Gilles Caulier wrote:

> > Before I start with merge requests, please have a quick look at [1] and
> > let me know if you're OK with the file layout and naming.  There's only
> > four test files at the moment so there's not a well-developed naming
> > convention -- mostly it consists of using a sub-directory named "video";
> > I expect that later there will be one named "images".
> 
> Yes, this is the right way. In fact the best naming convention will be
> to use the same core/tests/...subdirs... names. Each group of
> unit-tests hosted in a same directory must point to a data subdir
> hosted in a similar hierarchy. Like this, this will be very easy to
> found which data files is used for a specific unit test.

I understand.  I do imagine that there will be files that are very much 
component specific.  On the other hand, might there be tests that just need "a 
video file", say?  I imagined that such tests may be distributed in different 
places in the code base.  Right now I'm using them in testing qtav.  But maybe 
it would be useful later for core/avplayer testing?  With that in mind -- 
rather than duplicate to match the usage point -- I advocate naming convention 
that describes the test files themselves.

Also of note is that I use this class to locate them:
https://invent.kde.org/srobbins/digikam/-/blob/feature-qtav-testing/core/
tests/TestDataDir.h 

This is to avoid the use of QFINDTESTDATA that searches in multiple locations 
[1] meaning one needs to understand that algorithm (which I find opaque) and if 
you don't it might inadvertently find the wrong data.

[1] https://doc.qt.io/qt-6/qtest.html#QFINDTESTDATA

Note that while I exposed specific members for the four files here, there is 
also the getVideoFile(string) method for cases where you want a data-driven 
approach with the list of file names in the test code.

If you disagree, I will move the "video" folder.  I plan to use the same files 
for testing things in core/tests/video/qtav/tests.  So would you want the 
directory within digikam-data to be named "core/tests/video/qtav/video" ?
Or something else?
 

> Where are the CMake rules to checkout the unit tests data repository ?

First, note that I will put an entry in the .gitslave file so that you can use 
the "download-repos" mechanism if you choose.

For the CI, I put a custom command and target into the top-level cmake [2]:

add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/test-data 
    COMMAND git ARGS clone https://invent.kde.org/graphics/digikam-test-data.git ${CMAKE_CURRENT_SOURCE_DIR}/test-data)
add_custom_target(download-test-data ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/
test-data)

The intent is that this becomes a "no-op" if you have already created the 
directory test-data -- say using download-repos.  But I admit that aspect is 
not well tested.

[2] https://invent.kde.org/srobbins/digikam/-/blob/feature-qtav-testing/
CMakeLists.txt#L298
 
> It can be a good idea to patch the README to explain this
> particularity of gitlab CI.

Agree, that is a good idea.  I'll do so and make a mention of the print-codecs 
rule [3].

[3] https://invent.kde.org/graphics/digikam/-/commit/
bbe2f2f5408deb3320029fbac7a738730375cb11

Regards,
-Steve
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/digikam-devel/attachments/20221006/f60cdecf/attachment.sig>


More information about the Digikam-devel mailing list