CMake/CTest

Résolu
Signaler
Messages postés
6
Date d'inscription
vendredi 30 avril 2010
Statut
Membre
Dernière intervention
17 octobre 2011
-
Messages postés
6
Date d'inscription
vendredi 30 avril 2010
Statut
Membre
Dernière intervention
17 octobre 2011
-
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

Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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
Messages postés
6
Date d'inscription
vendredi 30 avril 2010
Statut
Membre
Dernière intervention
17 octobre 2011

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?
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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
Messages postés
6
Date d'inscription
vendredi 30 avril 2010
Statut
Membre
Dernière intervention
17 octobre 2011

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.
Messages postés
6
Date d'inscription
vendredi 30 avril 2010
Statut
Membre
Dernière intervention
17 octobre 2011

Je tente de rentrer la ligne commande dans CTest mais j'ai pas encore réussi. Au moins je ne suis plus bloqué, merci.