Open glabmoris opened 4 years ago
UI test is on the Jenkins pipeline.
@JordanMcManus status on this issue?
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.
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
Evidemment il y a les paths absolus a changer pour Jenkins, mais c'est pas ca qui empeche la compilation.
Ok, et elle est où la dépendance à QT dans le géoréférencement?
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.
Il faudrait séparer les tests de logique backend qui peuvent se retrouver dans le CLI et les tests des composantes UI
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.
Integrate
both UI andunit tests to the Jenkins pipeline and remove dependency on qmake for unit tests.