CMake/CTest

Résolu
samordi Messages postés 6 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 17 octobre 2011 - 11 oct. 2011 à 10:50
samordi Messages postés 6 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 17 octobre 2011 - 11 oct. 2011 à 14:47
Bonjour,
Je voudrais récupérer des informations que ctest stocke automatiquement dans un fichier temporaire appelé "LastTest.log". Je souhaiterais les récupérer en amont si possible mais je ne trouve pas la fonction dans les scripst cmake qui enregistre ce fameux fichier...
Je suis sous linux
le seul moyen que j'ai trouvé pour afficher ce que je recherche c'est de faire cela:
------------------
SET(CTEST_CUSTOM_POST_TEST " egrep "load" Testing/Temporary/LastTest.log")
------------------
qui me donne:
---------------------
Test project /home/src/build
Start 1: Phase1__default/oconnell
1/2 Test #1: Phase1__default/oconnell .... Passed 0.30 sec
Start 2: Phase1__default/warehouse
2/2 Test #2: Phase1__default/warehouse ... Passed 0.03 sec

100% tests passed, 0 tests failed out of 2

Total Test time (real) = 0.45 sec
Optimum: 1 in 12 backtracks and 13 nodes and 0 seconds.
Required regular expression found.Regex=[Optimum:
Optimum: 328 in 15 backtracks and 15 nodes and 0 seconds.
Required regular expression found.Regex=[Optimum:
---------------------

Mon but est de récupérer:

- Optimum: 1
- backtracks: 12
- nodes: 13
- seconds: 0

je n'avance plus alors SVP. Merci

6 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
11 oct. 2011 à 11:31
Je ne connais pas Ctest, mais je connais bien grep.
Peux-tu utiliser "sed" ? Si oui, ça va être très simple de récupérer ce que tu veux.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
11 oct. 2011 à 12:08
Je connais vraiment pas Ctest, mais je peux te fournir un exemple concret sur sed et ton text.

J'ai mis ceci dans un fichier appelé LastTest.log

Test project /home/src/build
Start 1: Phase1__default/oconnell
1/2 Test #1: Phase1__default/oconnell .... Passed 0.30 sec
Start 2: Phase1__default/warehouse
2/2 Test #2: Phase1__default/warehouse ... Passed 0.03 sec

100% tests passed, 0 tests failed out of 2

Total Test time (real) = 0.45 sec
Optimum: 1 in 12 backtracks and 13 nodes and 0 seconds.
Required regular expression found.Regex=[Optimum:
Optimum: 328 in 15 backtracks and 15 nodes and 0 seconds.
Required regular expression found.Regex=[Optimum:


Puis j'ai tapé ceci:

cat LastTest.log | grep "^Optimum" | sed -r 's/[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+).+/- Optimum: \1\n- backtracks: \2\n- nodes: \3\n- seconds: \4\n/g'


Et j'obtiens:

- Optimum: 1
- backtracks: 12
- nodes: 13
- seconds: 0

- Optimum: 328
- backtracks: 15
- nodes: 15
- seconds: 0




________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
samordi Messages postés 6 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 17 octobre 2011
11 oct. 2011 à 13:43
effectivement c'est une solution à mon problème. Si je pars du fichier LastTest.log pour récupérer ces infos c'est très efficace. Cependant je vais essayer de trouver le moyen et la syntaxe cmake qui me récupèreront cela en amont, avant que le fichier LastTest.log soit créé.
En tous cas merci pour ton heureux coup de main mais je t'avouerais que je ne comprend pas cela "sed -r 's/[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+).+/". Est ce une regex?
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
11 oct. 2011 à 14:33
C'est effectivement une expression rationnelle.
sed est un outil qui permet de "matcher" et de modifier du texte en fonction d'expressions rationelles.

Si tu peux utiliser des outils du genre sed ou grep au niveau de CTest, ça devrait pouvoir te permettre d'arriver à tes fins sans passer par un fichier.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
samordi Messages postés 6 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 17 octobre 2011
11 oct. 2011 à 11:57
J'ai utilisé "sed" voila le résultat:

100% tests passed, 0 tests failed out of 2

Total Test time (real) = 0.10 sec
sed: -e expression n°1, caractère 2: caractères inutiles après la commande
Problem running command: sed "load" Testing/Temporary/LastTest.log
Problem executing post-test command(s).
Errors while running CTest

Je commence juste avec linux donc je ne sais pas si "sed" s'accompagne d'autre chose, la commande "cat" en revanche fonctionne aussi.
0
samordi Messages postés 6 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 17 octobre 2011
11 oct. 2011 à 14:47
Je tente de rentrer la ligne commande dans CTest mais j'ai pas encore réussi. Au moins je ne suis plus bloqué, merci.
0
Rejoignez-nous