[Jenkins/Linux/QMake] GCOV Enviroment variabele zetten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Gehakt
  • Registratie: Juli 2002
  • Laatst online: 19-09 15:50
Ik probeer een project te bouwen door middel van jenkins en daarbij unit testen uit te laten voeren en de coverage te meten. Het bouwen en uitvoeren van unit tests is het probleem niet. Nu wil ik door middel van gcov de coverage meten.

Om dit te doen is mijn testproject als volgt opgebouwd.
Ik heb een static library waar eigenlijk mijn hele applicatie in staat. Dit zodat ik deze kan linken met de unit testen.
Daarnaast is er een standaard main waar mijn normale applicatie executable mee gemaakt wordt.
Als laatste zijn er in de map "test" twee unit testen te vinden.
jenkins@server:~/jobs/App/workspace$ tree --charset=ascii
.
|-- application
|   |-- application.pro
|   |-- example1.cpp
|   |-- example1.h
|   |-- mainwindow.cpp
|   |-- mainwindow.h
|   `-- mainwindow.ui
|-- app.pro
|-- main
|   |-- main.cpp
|   `-- main.pro
`-- test
    |-- example1
    |   |-- example1.pro
    |   `-- tst_example1test.cpp
    |-- mainwindow
    |   |-- mainwindow.pro
    |   `-- tst_mainwindowtest.cpp
    `-- test.pro


Als omdat de static library in een andere directory gebouwd wordt dan de unit test zal ook het uiteindelijk geproduceerde ".gcda" voor de library in een andere directory terecht komen. Dit is al te zien door de paden op te zoeken in de executable:
jenkins@server:~/jobs/App/workspace$ strings test/example1/tst_example1test | grep gcda
/var/lib/jenkins/jobs/App/workspace/test/example1/tst_example1test.gcda
/var/lib/jenkins/jobs/App/workspace/application/example1.gcda
/var/lib/jenkins/jobs/App/workspace/application/moc_example1.gcda


De .gcda bestanden die in application terecht komen moeten eigenlijk in de map van de unittest terecht komen. Dit is te doen door middel van het zetten van de GCOV_PREFIX en GCOV_PREFIX_STRIP enviroment variabelen.

Dit is hier en hier beschreven.

Nou is dus mijn vraag hoe zet ik die enviroment variabelen. Per unit test die ik bouw? Het liefst wil iets toe kunnen voegen in de .pro bestanden van de testen.

Acties:
  • 0 Henk 'm!

  • Jeldert
  • Registratie: Juni 2001
  • Niet online

Jeldert

Rozijntjes

Je kan in Jenkins via de job config ook variabelen instellen. Zie documentatie.

Wat je kan doen is een shell uitvoeren waarmee je de door jouw genoemde variabelen instelt. De documentatie beschrijft een paar variabelen die al naar de directory van de huidige job wijzen, dus kan je die als basis gebruiken. Zoiets:
code:
1
set GCOV_PREFIX = $WORKSPACE/test

Juist


Acties:
  • 0 Henk 'm!

  • Gehakt
  • Registratie: Juli 2002
  • Laatst online: 19-09 15:50
Ik denk dat ik ik gisteravond de bedoeling niet helemaal snapte. Het vervelende is dat de output van library dus per test in een directory moet komen.

Bijvoorbeeld voor tst_example1 wil ik :
code:
1
2
3
4
5
6
7
8
9
/var/lib/jenkins/jobs/App/workspace/test/example1/tst_example1test.gcda
/var/lib/jenkins/jobs/App/workspace/application/example1.gcda
/var/lib/jenkins/jobs/App/workspace/application/moc_example1.gcda

# moeten gewijzigd in:

/var/lib/jenkins/jobs/App/workspace/test/example1/tst_example1test.gcda
/var/lib/jenkins/jobs/App/workspace/test/example1/example1.gcda
/var/lib/jenkins/jobs/App/workspace/test/example1/moc_example1.gcda


Maar voor het uitvoeren van test tst_mainwindowtest.cpp
code:
1
2
3
4
5
6
7
8
9
/var/lib/jenkins/jobs/App/workspace/test/example1/tst_mainwindowtest.gcda
/var/lib/jenkins/jobs/App/workspace/application/mainwindow.gcda
/var/lib/jenkins/jobs/App/workspace/application/moc_mainwindow.gcda

# moeten gewijzigd in:

/var/lib/jenkins/jobs/App/workspace/test/mainwindow/tst_mainwindowtest.gcda
/var/lib/jenkins/jobs/App/workspace/test/mainwindow/mainwindow.gcda
/var/lib/jenkins/jobs/App/workspace/test/mainwindow/moc_mainwindow.gcda

[ Voor 6% gewijzigd door Gehakt op 20-04-2012 17:01 ]