CIDCO-dev / OpenSidescan

Sidescan files viewer
Other
27 stars 17 forks source link

Integrate Georeferencing tests to Jenkins #76

Open glabmoris opened 4 years ago

glabmoris commented 4 years ago

Integrate both UI and unit tests to the Jenkins pipeline and remove dependency on qmake for unit tests.

CBcidco commented 4 years ago

UI test is on the Jenkins pipeline.

glabmoris commented 4 years ago

@JordanMcManus status on this issue?

JordanMcManus commented 4 years ago

C'est assez difficile. J'ai passé quelque temps là dessus (et accumuler bcp de frustration). À chaque fois que j'avance, ça ne fait que débloquer d'autre erreur de compilation. Dans mes recherches sur internet, il n'y a que des références vers qmake et le .pro.

Il y a aussi le problème du moc (meta object compiler).

Une autre difficulté est que je n'ai pas accès à jenkins à distance.

J'ai préféré avancer sur les autres issues en attendant de revenir au bureau.

JordanMcManus commented 4 years ago

Voici le Makefile que j'ai avec le goal test (sans qmake).

Ne compile pas.

CC=g++
FLAGS=-Wall -O3
INCLUDES=-I/usr/include/eigen3
QT_INCLUDES=-I/home/jordan/Qt5.14.1/5.14.1/gcc_64/include/QtCore -I../../Qt5.14.1/5.14.1/gcc_64/include -I../../Qt5.14.1/5.14.1/gcc_64/include/QtWidgets -I../../Qt5.14.1/5.14.1/gcc_64/include/QtGui -I../../Qt5.14.1/5.14.1/gcc_64/include/QtXml  -I. -isystem /usr/include/libdrm -I../../Qt5.14.1/5.14.1/gcc_64/mkspecs/linux-g++

FILES=test/unitTests/GeoreferencingTest.cpp src/OpenSidescan/project.cpp src/OpenSidescan/sidescanfile.cpp src/OpenSidescan/sidescanimager.cpp src/OpenSidescan/sidescanimage.cpp src/OpenSidescan/sidescanimage.cpp  src/OpenSidescan/georeferencedobject.cpp src/thirdParty/MBES-lib/src/datagrams/DatagramParser.cpp src/thirdParty/MBES-lib/src/datagrams/DatagramParserFactory.cpp src/thirdParty/MBES-lib/src/datagrams/s7k/S7kParser.cpp src/thirdParty/MBES-lib/src/datagrams/kongsberg/KongsbergParser.cpp src/thirdParty/MBES-lib/src/datagrams/xtf/XtfParser.cpp src/thirdParty/MBES-lib/src/utils/NmeaUtils.cpp src/thirdParty/MBES-lib/src/utils/StringUtils.cpp src/thirdParty/MBES-lib/src/sidescan/SidescanPing.cpp src/thirdParty/opencv/apps/createsamples/utility.cpp

test_exec_dir=build/test/bin
test_result_dir=build/reports

...

test:
    mkdir -p $(test_exec_dir)
    mkdir -p $(test_result_dir)
    $(CC) $(FLAGS) -DQT_CORE_LIB -fPIC $(INCLUDES) $(QT_INCLUDES) -o $(test_exec_dir)/tests test/unitTests/main.cpp $(FILES) `pkg-config --cflags --libs opencv`
    $(test_exec_dir)/tests -r junit -o $(test_result_dir)/unit-tests-report.xml

...

clean:
    rm -rf build

.PHONY: testGUI test
JordanMcManus commented 4 years ago

Evidemment il y a les paths absolus a changer pour Jenkins, mais c'est pas ca qui empeche la compilation.

glabmoris commented 4 years ago

Ok, et elle est où la dépendance à QT dans le géoréférencement?

JordanMcManus commented 4 years ago

Peut-être qu'il n'y en a pas pour le géoréférencement.

Mais il y a en a dans le test de lecture et d'écriture du projet, car il y a un QXmlStreamReader et QXmlStreamWriter.

glabmoris commented 4 years ago

Il faudrait séparer les tests de logique backend qui peuvent se retrouver dans le CLI et les tests des composantes UI

JordanMcManus commented 4 years ago

Je suis en mesure de faire compiler les tests sans qt. Toutefois, il y a toujours des exceptions et segfault...

Les tests passent lorsque c'est compilé par qtcreator... Donc c'est sûrement qqch de vraiment stupide qui manque en qq part (que qtcreator compense sans qu'on s'en rende compte).

Je soupçonne que la manière dont les #include sont fait (ou leur absence) crée les problèmes. Je vais continuer la dessus mardi.