\usepackage{enumitem}%package pour g<>rer la puce avec \begin{enumerate}[label={blabla-\arabic*}] (ce qui donne comme puces : blabla-1, blabla-2, etc...)
breaklinks=true, %permet le retour <20> la ligne dans les liens trop longs
urlcolor= blue, %couleur des hyperliens
linkcolor= blue, %couleur des liens internes
citecolor= green %couleur citation biblio
}
%creation d une longueur egale a \baselineskip pour l utiliser dans les tabular (car un bug incroyable fait que \baselineskip est egal a 0 dans les tabular!!!!)
\newlength{\savebaselineskip}
\setlength{\savebaselineskip}{\baselineskip}
\newcommand{\ligne}[1]{
%on change l'unit<69> de longueur "\unitlength" li<6C>e <20> l'environnement "picture"
%\baselineskip = distance entre la base d'une ligne et la base de la ligne suivante
%
% pour info, on a : 1cm = 3\baselineskip (sous r<>serve d'un changement de la valeur de \baselineskip)
%
\setlength{\unitlength}{\baselineskip}
%on declare un dessin de dimension #1 et de hauteur 0
\begin{picture}(#1,0.)
%on fait une ligne d'origine (0,0.25\baselineskip), dans la direction (1,0) et de longueur #1 (egale a la taille du dessin)
\put(0,0.25){\line(1,0){#1}}
\end{picture}
%Rq : on utilise 0.25\baselineskip pour l'origine afin d'avoir une ligne "centr<74>e" en hauteur, ce qui permet de faire des trucs du genre :
Ce manuel pr<70>sente la proc<6F>dure de v<>rification d'une s<>rie de tests d<>di<64><20> Herezh++. Cette v<>rification est effectu<74>e via principalement un script perl. La premi<6D>re version de ce script a <20>t<EFBFBD> mise en place par Laurent Mah<61>o au cours de sa th<74>se au d<>but des ann<6E>es 2000. Puis plusieurs <20>volutions mineures ont <20>t<EFBFBD> introduite. Enfin derni<6E>rement, suite <20> un <20>largissement des objectifs, le script a <20>t<EFBFBD> enti<74>rement refond<6E> par Julien Troufflard en 2015. On trouvera dans ce document une description de l'organisation de l'arborescence, du fonctionnement et enfin de la m<>thodologie n<>cessaire pour introduire un nouveau test.
Les fichiers et r<>pertoires du projet sont d<>crits en section \ref{section_arborescence}. Dans l'absolu, les seuls <20>l<EFBFBD>ments strictement n<>cessaires sont :
\begin{itemize}
\item r<>pertoire \verb|Perl|
\item au moins un des 2 scripts : \verb|verifier_exeHZ.pl|, \verb|verifier_exeHZ.zsh|
Il y a actuellement deux scripts permettant de lancer la batterie de tests. Le script \verb|verifier_exeHZ.zsh| est la version originale historique. Le script \verb|verifier_exeHZ.pl| est une version plus r<>cente offrant plus de possibilit<69>s sous forme d'options. Pour l'instant, ces deux scripts existent. A terme, si \verb|verifier_exeHZ.pl| s'av<61>re satisfaisant, la version \verb|.zsh| dispara\^itra du projet.\\
Avant de d<>tailler l'utilisation de ces scripts, voici un r<>sum<75> de la proc<6F>dure pour lancer la batterie :
\begin{itemize}
\item[1-] se placer dans un r<>pertoire contenant des tests et le r<>pertoire \verb|Perl|
\item[2-] ex<65>cuter le script \verb|verifier_exeHZ.zsh| ou \verb|verifier_exeHZ.pl [...options...]| en lui indiquant l'ex<65>cutable <20> tester\\
Le rapport obtenu apr<70>s ex<65>cution de la batterie indique pour chaque test si il est r<>ussi ainsi que le temps de calcul obtenu par la commande \verb|time|.\\
Le script \verb|verifier_exeHZ.zsh| lance automatiquement tous les tests pr<70>sents dans le r<>pertoire courant et ses sous-r<>pertoires. Un test est un r<>pertoire dont le nom commence par \verb|Test_R| ou \verb|Test_L| (voir section \ref{section_organisation_tests}). Le script peut \^etre lanc<6E> dans n'importe quel r<>pertoire contenant le r<>pertoire \verb|Perl|. Il produit un rapport de tests pour les tests \verb|Test_R| (tests rapides) et un rapport pour les tests \verb|Test_L| (tests longs). Ces rapports sont contenus dans le r<>pertoire \verb|Rapport| (<28>ventuellement cr<63><72> si il n'existe pas au lancement) sous le nom \verb|rapport_test_R.txt| et \verb|rapport_test_L.txt|. Le script affiche automatiquement ces rapports si l'<27>diteur de texte \verb|nedit| est disponible.
Comme mentionn<6E> pr<70>c<EFBFBD>demment, \verb|verifier_exeHZ.zsh| NE permet PAS d'interrompre correctement la batterie en cours avec \verb|ctrl+c|, avec pour cons<6E>quence un fort risque de modification des r<>pertoires de test originaux.
Le script \verb|verifier_exeHZ.zsh| prend un argument : le nom de l'ex<65>cutable Herezh++. Typiquement, cet ex<65>cutable est pr<70>sent dans un r<>pertoire point<6E> par la variable environnement \verb|$PATH|. Mais on peut <20>galement donner un chemin absolu ou relatif.\\
Le script \verb|verifier_exeHZ.pl| fonctionne de mani<6E>re identique. Toutes les informations mentionn<6E>es pour \verb|verifier_exeHZ.zsh| sont valables pour \verb|verifier_exeHZ.pl|. Cette version offre des possibilit<69>s suppl<70>mentaires sous forme d'options. Ces options sont consultables en tapant \verb|verifier_exeHZ.pl -h| dans un terminal. En l'absence d'options, \verb|verifier_exeHZ.pl| fonctionne exactement comme \verb|verifier_exeHZ.zsh|. Comme mentionn<6E> pr<70>c<EFBFBD>demment, \verb|verifier_exeHZ.pl| permet d'interrompre correctement la batterie en cours avec \verb|ctrl+c|.\\
{\color{red} Le script \verb|verifier_exeHZ.zsh| ne g<>re pas correctement l'interruption \verb|ctrl+c| et il y a un risque d'avoir des fichiers et r<>pertoires non effac<61>s ou modifi<66>s. Par s<>curit<69>, il est demand<6E> de NE JAMAIS ACTUALISER le projet (cvs commit) apr<70>s une interruption ctrl+c du script \verb|verifier_exeHZ.zsh|.}
\subsection{Classement des tests}\label{section_classement_tests}
On distingue actuellement deux sortes de tests selon le temps de calcul : les tests "Rapides" et les tests "Longs". A titre indicatif, un test "Rapide" est suppos<6F> durer moins de 30 secondes. Chaque test est contenu dans un r<>pertoire dont le nom commence par \verb|Test_R| (test rapide) ou par \verb|Test_L| (test long). Les r<>pertoires de tests sont rang<6E>s dans le r<>pertoire \verb|Batterie| selon l'arborescence montr<74>e sur la figure \ref{arbo_tests}. Le classement actuel est le suivant :
\begin{itemize}
\item[$\bullet$]\verb|FONCTION_UNIQUE| : r<>pertoire d<>di<64> au simple test d'une fonctionnalit<69> (une loi de comportement, un mode de calcul, un type d'<27>l<EFBFBD>ment, ...). En g<>n<EFBFBD>ral, ce sont des tests "Rapides".
\item[$\bullet$]\verb|CALCUL_COMPLET| : exemples complets issus par exemple de travaux de recherche ou applications industrielles (par exemple : une mise en forme de t\^ole, un essai de traction avec localisation, un d<>ploiement de structure souple, ...). En g<>n<EFBFBD>ral, ce sont des tests "Longs".
\item[$\bullet$]\verb|AUTRES| : tests difficiles <20> classer. Ce r<>pertoire peut aussi servir de lieu de d<>p\^ot temporaire avant transfert vers une rubrique d<>di<64>e.
\color{red} Dans le cas d'un nouveau test r<>v<EFBFBD>lant un bug encore non r<>solu dans Herezh++, le test doit \^etre stock<63> dans le r<>pertoire \verb|Tests_en_attente_debug| (merci d'en informer un r<>f<EFBFBD>rent du projet).
Le script \verb|verifier_exeHZ.zsh| ou \verb|verifier_exeHZ.pl| a pour fonction de rechercher les r<>pertoires de tests (r<>pertoires commen<65>ant par \verb|Test_R| ou \verb|Test_L|). Chaque r<>pertoire de test contient un unique fichier \verb|.info| (vide ou non) et un certain nombre $N$ de fichiers \verb|.CVisu|[i] o<> [i] est un num<75>ro de 1 <20>$N$. Pour chaque fichier \verb|.CVisu|[i], un calcul est lanc<6E>. Le premier calcul est celui correspondant au fichier \verb|.CVisu1|. Les calculs suivants pour [i]$>$1 sont des RESTART (si possible) du calcul pr<70>c<EFBFBD>dent <20> partir du dernier incr<63>ment sauvegard<72> (selon option \verb|SAUVEGARDE| du fichier \verb|.info|).\\
Pour chaque calcul, un <20>ventuel fichier d'extension \verb|.commande|[i] contient des commandes interactives pour r<>pondre aux diff<66>rents menus interactifs propos<6F>s par Herezh++. Par d<>faut, un calcul Herezh est ex<65>cut<75> avec l'option \verb|-f| suivie du nom du fichier \verb|.info| (calcul classique). Si le fichier \verb|.info| ne contient pas le mot-cl<63>\verb|dimension|, l'option utilis<69>e est \verb|-n| suivie du fichier \verb|.info| (cr<63>ation interactive d'un fichier .info). Il est <20>galement possible de d<>finir compl<70>tement les arguments donn<6E>s <20> Herezh++ dans un fichier \verb|.argument|[i]. Pour plus d'informations sur les fichiers facultatifs, on peut se r<>f<EFBFBD>rer <20> la section \ref{section_fichiers_facultatifs}.\\
L'ex<65>cution d'un test se fait dans un r<>pertoire temporaire dans \verb|/tmp|. On s'assure ainsi que le contenu du r<>pertoire d'origine ne sera jamais alt<6C>r<EFBFBD>, quelque soit le d<>roulement du test.\\
Pour chaque calcul, une v<>rification est faite pour d<>terminer si le test est r<>ussi ou non. Le rapport de test contient les indicateurs \verb|OK| ou \verb|ECHEC|. Il y plusieurs types de v<>rification possibles. Plusieurs types de v<>rification peuvent \^etre faites pour un m\^eme test.
\item[] Ce mode de v<>rification est ex<65>cut<75> si il y a la pr<70>sence d'un fichier \verb|.maple.ref|[i].
\vspace*{0.2cm}
Le fichier \verb|.CVisu|[i] d<>finit les sorties au format maple. Le fichier \verb|.maple.ref|[i] d<>finit les valeurs de r<>f<EFBFBD>rence. Si l'<27>cart absolu et relatif entre les donn<6E>es de r<>f<EFBFBD>rence et les donn<6E>es du calcul sont inf<6E>rieures <20> une tol<6F>rance, alors le test est r<>ussi. Les tol<6F>rances par d<>faut sont en absolu 1e-6 et en relatif 1e-3. Il est possible de choisir librement les tol<6F>rances dans un fichier \verb|.precision|[i]. Pour une grandeur $X$ g<>n<EFBFBD>r<EFBFBD>e <20> l'issue du calcul [i] et sa valeur de r<>f<EFBFBD>rence $X_{ref}$ contenue dans le fichier \verb|.maple.ref|[i], le test est r<>ussi si les relations de comparaison suivantes sont respect<63>es :
\textbf{IMPORTANT} : si les fichiers \verb|.maple| et \verb|.maple.ref| contiennent plusieurs lignes de donn<6E>es, seule la derni<6E>re ligne est trait<69>e\\
\item[] Ce mode de v<>rification est ex<65>cut<75> si il y a pr<70>sence d'un fichier \verb|.verif|[i].
\vspace*{0.2cm}
Cette v<>rification est d<>finie par un script qui a pour fonction de renvoyer \verb|OK| ou \verb|ECHEC|. Ce script est un fichier ex<65>cutable d'extension \verb|.verif|[i], signifiant que le calcul n<>[i] sera l'objet d'une v<>rification par un script libre.\\
\item[] en l'absence de fichier \verb|.maple.ref| et de script \verb|.verif|, la v<>rification est consid<69>r<EFBFBD>e \verb|OK| si le calcul s'est lanc<6E> et a renvoy<6F> la main au terminal (que le calcul ait converg<72> ou non). Il y a tout de m\^eme quelques v<>rifications de l'affichage pour y trouver des indicateurs d'erreur, ce qui provoquera le cas <20>ch<63>ant un ECHEC.
D'autres fichiers facultatifs peuvent \^etre contenus dans un r<>pertoire de test. Il n'y a pas de restriction mis <20> part qu'un r<>pertoire de test ne doit pas contenir des fichiers trop lourds en terme d'espace disque. Typiquement, il peut \^etre utile d'ajouter les fichiers suivants :
\item[$\bullet$] des fichiers de mise en donn<6E>es du test pour d'autres codes de calcul (par exemple : fichier \verb|.inp| pour Abaqus)
\item[$\bullet$] des fichiers donnant des r<>sultats donn<6E>s par d'autres codes de calcul ou par des solutions analytiques (bien que le fichier \verb|README| puisse \^etre utilis<69> pour <20>crire ces donn<6E>es)
\caption{Trame du fichier README pr<70>sent dans chaque r<>pertoire de test. {\color{blue} Les rubriques en bleu sont \underline{obligatoires}.}{\color{brown} Les rubriques en marron sont importantes pour la tra<72>abilit<69> des tests mais non obligatoires.}}
Un document pdf de nom \verb|catalogue_tests.pdf| est pr<70>sent <20> la racine du projet CVS. Il dresse la liste actuelle des tests et r<>sume en quelques phrases leur contenu. Un index en fin de document permet de faire une recherche par mot-cl<63>.\\
Ce document est r<>dig<69> automatiquement sur la base du contenu des rubriques "Auteur", "Mots-cles", "But du test" et "Description du calcul" des fichiers README (voir figure \ref{format_fichier_README}).
Cr<EFBFBD>er un nouveau test consiste <20> ajouter un nouveau r<>pertoire dans le r<>pertoire \verb|Batterie|. Le choix de son emplacement dans l'arborescence est libre en s'inspirant tout de m\^eme des descriptifs donn<6E>s en section \ref{section_classement_tests}. Le contenu du r<>pertoire est celui d<>fini en section \ref{section_contenu_repertoire_test}.
Les fichiers facultatifs d<>pendent du type de traitement Herezh++. Dans tous les cas, l'arborescence du r<>pertoire de test est de la forme montr<74>e sur la figure \ref{arbo_repertoire_test} et les r<>gles suivantes sont <20> respecter :
\item[$\bullet$] Le nom du nouveau r<>pertoire est choisi en utilisant uniquement les lettres de a <20> z (sans accent), les chiffres de 0 <20> 9, le signe moins "-" et le tiret bas "\_". Si le test est un test "Rapide" (moins de 30 secondes), le nom commence par \verb|Test_R|, sinon il commence par \verb|Test_L|. Pour savoir si un nom de r<>pertoire existe d<>j<EFBFBD>, il y a un script d<>di<64> pr<70>sent dans le r<>pertoire \verb|Perl| : \verb|verif_existence_repertoire_test.pl| (option \verb|-h| pour l'aide). Pour l'utiliser, il faut se placer <20> la racine du projet (c'est-<2D>-dire au m\^eme niveau que le r<>pertoire \verb|Batterie|) et taper \verb|Perl/verif_existence_repertoire_test.pl nom_repertoire|.
\item[$\bullet$] Un seul fichier d'extension \verb|.info| doit \^etre pr<70>sent dans le r<>pertoire. Ce fichier doit \^etre pr<70>sent m\^eme s'il est vide.
\item[$\bullet$] Pour chaque calcul, il est n<>cessaire de cr<63>er un fichier \verb|.CVisu| (\verb|.CVisu1|, \verb|.CVisu2|, etc...) m\^eme si celui-ci est vide. Ces fichiers servent non seulement <20> Herezh++ mais <20>galement au script \verb|Perl/test.pl| pour rep<65>rer les calculs <20> lancer (un calcul par fichier \verb|.CVisu|[i]).
\item[$\bullet$] tous les fichiers \verb|.CVisu|[i] et les fichiers facultatifs n<>cessaires <20> l'ex<65>cution d'un test (\verb|.verif|[i], \verb|.commande|[i], etc...) ont la m\^eme racine que le fichier \verb|.info| (par exemple, si on a le fichier \verb|nom_fichier.info|, l'<27>ventuel fichier \verb|.verif1| doit avoir pour nom \verb|nom_fichier.verif1|)
\item[$\bullet$] le fichier \verb|README| contient obligatoirement les rubriques "But du test" et "Description du calcul" montr<74>es sur la figure \ref{format_fichier_README}. Ces deux rubriques serviront <20> g<>n<EFBFBD>rer automatiquement une documentation pdf (catalogue de tests). Dans le m\^eme but, les rubriques "Auteur" et "Mots-cles", qui ne sont pas obligatoires, donnent des informations utiles (merci de les renseigner).
\item[]\textbf Remarque importante : ne pas <20>crire des lignes de 3 tirets ou plus (\verb|---| ou plus) dans le corps d'une rubrique. Ces lignes servent <20> rep<65>rer les titres de rubriques.\\
La section \ref{subsection_methodologie} propose une m<>thodologie de travail pour construire un nouveau test. La section \ref{section_commandes_CVS} est un rappel des commandes CVS de base. Les sections \ref{section_fichiers_obligatoires} et \ref{section_fichiers_facultatifs} donnent des informations sur les fichiers obligatoires et les fichiers facultatifs en lien avec l'ex<65>cution du test. Notamment, certains fichiers ont un format bien pr<70>cis pour \^etre exploitables. Ensuite, la section \ref{section_exemples_tests} a pour but de balayer les cas les plus courants de test et de donner des exemples.
Avant l'ajout d<>finitif du r<>pertoire de test dans la batterie, il est plus que conseill<6C> de construire pas <20> pas le test dans un r<>pertoire en dehors du projet CVS. Dans ce r<>pertoire, on pourra tester son fonctionnement sans risquer d'alt<6C>rer le reste du projet. La m<>thodologie pr<70>conis<69>e est :
\begin{enumerate}[label={\arabic*})]
\item cr<63>er un r<>pertoire quelconque (appelons ce r<>pertoire : \verb|rep_tmp|)
\item copier le r<>pertoire \verb|Perl| et le script \verb|verifier_exeHZ.pl| (ou \verb|verifier_exeHZ.zsh|) dans \verb|rep_tmp|
\item choisir un nom de r<>pertoire de test (voir section \ref{subsection_vue_ensemble}) et le cr<63>er dans \verb|rep_tmp| (appelons ce r<>pertoire : \verb|Test_R_nom_test|)\\
(au besoin, pour choisir le nom du test :\\
utiliser le script \verb|verif_existence_repertoire_test.pl| au niveau du r<>pertoire \verb|Verif_Herezh/Batterie|)
\item cr<63>er tous les fichiers n<>cessaires au calcul dans \verb|Test_R_nom_test| (voir sections \ref{section_fichiers_obligatoires} et \ref{section_fichiers_facultatifs})\\
\underline{Remarque} : Ne pas h<>siter <20> s'inspirer des r<>pertoires d<>j<EFBFBD> existants dans la batterie
\item se placer dans \verb|rep_tmp| et ex<65>cuter le script \verb|verifier_exeHZ.pl(.zsh)|\\
(si le test fonctionne, un rapport de test en bonne et due forme est produit)
\item si il y a un disfonctionnement : modifier les fichiers de calcul jusqu'<27> ce que le test fonctionne
\item cr<63>er le fichier \verb|README| dans \verb|Test_R_nom_test| (voir section \ref{section_fichiers_obligatoires})
\item nettoyer le r<>pertoire \verb|Test_R_nom_test| pour qu'il ne contienne que les fichiers utiles (fichiers d<>finis aux sections \ref{section_fichiers_obligatoires} et \ref{section_fichiers_facultatifs}, voir aussi figure \ref{arbo_repertoire_test})
\item[]\footnotesize (*) l'option \verb|-P| est tr<74>s recommand<6E>e car elle permet de supprimer automatiquement les r<>pertoires vides d<>s l'import du projet (voir <20>galement remarque (***)).
\item[]\footnotesize (**) \underline{Toujours actualiser sa version locale avant de modifier le projet}. Cette commande actualise le r<>pertoire courant ainsi que tous ses sous-r<>pertoires\normalsize
\item[]\footnotesize (***) a priori, c'est la m\^eme d<>marche pour effacer un r<>pertoire, bien qu'il soit souvent constat<61> que le r<>pertoire effac<61> persistait m\^eme si il est vide.\normalsize\\
1) La trame du fichier est montr<74>e sur la figure \ref{format_fichier_README}. La syntaxe de l'intitul<75> des deux rubriques obligatoires "But du test" et "Description du calcul" doit \^etre strictement respect<63>e. Il est fortement encourag<61> de renseigner les rubriques "Auteur" et "Mots-cles". Les autres rubriques sont indiqu<71>es <20> titre de proposition et pour des questions d'harmonie sur la forme d'un test <20> l'autre. Comme montr<74> sur la figure \ref{format_fichier_README}, chaque titre de rubrique est pr<70>c<EFBFBD>d<EFBFBD> et suivi d'une ligne d'au moins trois tirets (\verb|---| et plus). Les lignes de tirets doivent \^etre r<>serv<72>es aux titres des rubriques (Ce motif sert <20> rep<65>rer la fin d'une rubrique. L'insertion d'une ligne de tirets dans le corps d'une rubrique mettra en d<>faut le script de g<>n<EFBFBD>ration automatique du catalogue de tests!!).\\
2) Dans les rubriques obligatoires, il est possible d'ins<6E>rer des figures gr\^ace <20> l'utilisation des balises \verb|\figures:|, \verb|\legende:| et \verb|\fin_legende|. Ces figures appara\^itront dans le catalogue de tests. Une figure est constitu<74>e de un ou plusieurs fichiers image et d'une l<>gende. Pour d<>clarer une figure, la ligne doit commencer par la balise "\verb|\figures:|" suivie du noms des fichiers image (il peut y en avoir plusieurs). Ensuite, sur la m\^eme ligne, on doit trouver la balise de d<>but de l<>gende "\verb|\legende:|". La l<>gende est constitu<74>e de tout le texte compris entre les balises "\verb|\legende:|" et "\verb|\fin_legende|". A noter que le texte de cette l<>gende peut \^etre <20>crit sur plusieurs lignes mais ces retours <20> la ligne ne seront pas pris en compte dans la mise en forme du document pdf. Les formats d'images sont ceux support<72>s par \verb|pdflatex| et \verb|\includegraphics|, c'est-<2D>-dire typiquement : \verb|.pdf|, \verb|.png| et \verb|.jpg|. Les fichiers image doivent \^etre situ<74>s dans le r<>pertoire du test (c'est-<2D>-dire le m\^eme r<>pertoire que le fichier \verb|README|). Concernant les dimensions des images, il faut savoir que le corps du texte du catalogue pdf a une largeur de 17cm et une hauteur de 24cm. Il est donc n<>cessaire de soit redimensionner les figures en fonction de ces longueurs, soit indiquer un facteur d'<27>chelle entre crochets <20> la fin du nom de fichier (pas d'espace entre la fin du nom de fichier et les crochets : \verb|nom_fichier.pdf[0.5]|). On peut <20>galement ins<6E>rer un espace entre 2 figures, tout simplement en mettant une valeur en cm entre crochets et pas de nom de figure (voir exemples ci-dessous).\\
4) Il est <20>galement possible d'<27>crire du code latex directement en utilisant les balises \verb|\latex_brut| et \verb|\fin_latex_brut|. D'une mani<6E>re g<>n<EFBFBD>rale, on peut <20>crire entre ces 2 balises tout ce que Latex accepte dans un corps de document. Les balises \verb|\latex_brut| et \verb|\fin_latex_brut| doivent appara\^itre seules sur une ligne sans aucun autre mot.\\
Exemple :\\
\hspace*{0.5cm}$>$ Exemple de bonne syntaxe :\\
\hspace*{1.5cm}\verb|\latex_brut|\\
\hspace*{1.7cm}\verb|ceci est un url : \url{http://....com}|\\
\hspace*{1.7cm}\verb|ceci est une <20>quation :|\\
\hspace*{1.7cm}\verb|\begin{equation}|\\
\hspace*{1.7cm}\verb|\sin{\pi}/2 = 1|\\
\hspace*{1.7cm}\verb|\end\{equation}|\\
\hspace*{1.5cm}\verb|\fin_latex_brut|\\
\hspace*{0.5cm}$>$ Exemple de mauvaise syntaxe 1 :\\
\hspace*{1.5cm}\verb|\latex_brut ceci est un url : \url{http://....com}\fin_latex_brut|\\
\hspace*{0.5cm}$>$ Exemple de mauvaise syntaxe 2 :\\
\hspace*{1.5cm}\verb|L'<27>quation de ce plan s'<27>crit : \latex_brut|\\
\item[] Ce fichier est l'unique fichier d'extension \verb|.info| pr<70>sent dans le r<>pertoire. Il est obligatoire mais peut \^etre vide (par exemple dans le cas d'un cr<63>ation de fichier \verb|.info| avec l'option Herezh \verb|-n|).\\
Il n'y a pas de restriction majeure sur le contenu de ce fichier mais il est important de noter que dans le cas d'un test avec plusieurs fichiers \verb|.CVisu|, chaque calcul ult<6C>rieur au n<>1 tentera de faire un \verb|RESTART| du calcul pr<70>c<EFBFBD>dent. C'est pourquoi il faut faire attention au param<61>tre \verb|controle|$\rightarrow$\verb|SAUVEGARDE|. Le param<61>tre suffisant est :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
controle
SAUVEGARDE DERNIER_CALCUL
\end{verbatim}
\end{minipage}
Si le calcul utilise un menu interactif, un fichier \verb|.commande| sera n<>cessaire.\\
\item[] La pr<70>sence de ces fichiers est obligatoire mais ils peuvent \^etre vides <20> partir du moment o<> le but du test n'est pas de comparer des r<>sultats Herezh maple ou Gmsh
\item[] Ce fichier permet de modifier les pr<70>cisions par d<>faut pour la comparaison des donn<6E>es au format maple pour un certain nombre de colonnes du fichier \verb|.maple|. Par d<>faut, les pr<70>cisions sont 1e-6 en absolu, 1e-3 en relatif. Le format du fichier est le suivant :\\
Il est important de noter que les crochets autour d'un num<75>ro de colonne sont obligatoires. Par exemple, si le fichier \verb|.maple| contient une ligne de la forme :\\
\item[] Le but de ce fichier est de fournir automatiquement les r<>ponses <20> un menu interactif. Sa pr<70>sence <20>quivaut <20> lancer un calcul Herezh++ de la mani<6E>re suivante :\\
Chaque ligne contient une r<>ponse suivie par un retour <20> la ligne. En particulier, il ne faut pas oublier le retour <20> la ligne <20> la fin de la derni<6E>re ligne.\\
\item[] Ce fichier est un ex<65>cutable dont la fonction est de fournir le r<>sultat de la v<>rification. Il doit effectuer les traitements n<>cessaires pour d<>terminer si le test est \verb|OK| ou \verb|ECHEC|. Le contenu du script est totalement libre mais il doit obligatoirement indiquer le r<>sultat de la v<>rification en affichant une des 2 lignes suivantes :
En plus de cette ligne, cet ex<65>cutable peut tout <20> fait afficher d'autres informations <20> titre facultatif. A noter <20>galement qu'il est possible de faire appara\^itre des commentaires dans le rapport de test dans le cas \verb|ECHEC|. Pour cela, on <20>crit au moins un espace blanc apr<70>s \verb|ECHEC| puis ce que l'on veut sur la m\^eme ligne.\\
Il est important de noter que cet ex<65>cutable re<72>oit 3 arguments lorsqu'il est appel<65>. Le programmeur pourra donc utiliser s'il le souhaite les arguments suivants :
Cet ex<65>cutable peut \^etre programm<6D> dans n'importe quel langage, mais pour <20>viter les probl<62>mes de compilateur, il est pr<70>f<EFBFBD>rable d'<27>viter les langages n<>cessitant une compilation (par exemple : C, C++, Fortran, etc...). Il est pr<70>f<EFBFBD>rables d'utiliser les langages interpr<70>t<EFBFBD>s (par exemple : sh, zsh, Perl, Python, etc...). Pour augmenter la portabilit<69> de ces scripts, il faut <20>viter de mettre un chemin absolu vers l'interpr<70>teur dans l'en-t\^ete. On utilisera la forme : \verb|#!/usr/bin/env| suivi du nom de l'interpr<70>teur (exemples : \verb|#!/usr/bin/env perl| ou bien \verb|#!/usr/bin/env python|).
\item[] Ce fichier permet de d<>finir librement les arguments donn<6E>s <20> l'ex<65>cutable Herezh++. Il peut contenir autant de lignes que n<>cessaire. Il est important de noter que l'affichage produit par Herezh++ est toujours redirig<69> dans un fichier \verb|.log| avec la commande \verb|tee|. Il est donc inutile voire bloquant de rajouter une redirection suppl<70>mentaire parmi les arguments. Au final, pour un fichier contenant N lignes, la commande Herezh++ lanc<6E>e sera :\\
\item[] Ce fichier est utile pour la comparaison de donn<6E>es au format maple. Le nombre de colonnes de ce fichier doit \^etre en accord avec le fichier \verb|.maple| produit par la lecture du \verb|.CVisu| associ<63>. Il peut contenir un nombre quelconque de lignes de donn<6E>es mais seule la derni<6E>re sera utilis<69>e pour la comparaison de \verb|.maple| explicit<69>e <20> la section \ref{subsubsection_verification}.
\item[] Le but de ce fichier est d'effectuer des traitements juste \textbf{avant} le calcul. Ce fichier doit \^etre un ex<65>cutable programm<6D> dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.pretrait| fournit un indicateur de r<>ussite ou d'<27>chec. Il doit donc afficher une des 2 lignes suivantes :\\
En plus de cette ligne, cet ex<65>cutable peut tout <20> fait afficher d'autres informations <20> titre facultatif. A noter <20>galement qu'il est possible de faire appara\^itre des commentaires dans le rapport de test dans le cas \verb|ECHEC|. Pour cela, on <20>crit au moins un espace blanc apr<70>s \verb|ECHEC| puis ce que l'on veut sur la m\^eme ligne.\\
\item[] Le but de ce fichier est d'effectuer des traitements juste \textbf{ apr<70>s } le calcul. Il suit la m\^eme logique que le fichier \verb|.pretrait| avec 3 diff<66>rences : 1) le message de r<>ussite/<2F>chec n'a pas la m\^eme syntaxe, 2) il re<72>oit 3 arguments, 3) il est ex<65>cut<75> apr<70>s le calcul Herezh++. Ce fichier doit \^etre un ex<65>cutable programm<6D> dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.posttrait| fournit un indicateur de r<>ussite ou d'<27>chec. Il doit donc afficher une des 2 lignes suivantes :\\
En plus de cette ligne, cet ex<65>cutable peut tout <20> fait afficher d'autres informations <20> titre facultatif. A noter <20>galement qu'il est possible de faire appara\^itre des commentaires dans le rapport de test dans le cas \verb|ECHEC|. Pour cela, on <20>crit au moins un espace blanc apr<70>s \verb|ECHEC| puis ce que l'on veut sur la m\^eme ligne.\\
Il s'agit du cas le plus courant consistant <20> r<>aliser des calculs g<>n<EFBFBD>rant des donn<6E>es au format maple <20> comparer avec les donn<6E>es contenues dans un fichier \verb|.maple.ref|. Les fichiers \verb|.CVisu|[i] d<>finissent des sorties au format maple. Le calcul n<>[i] utilise le fichier \verb|.CVisu|[i] pour g<>n<EFBFBD>rer un fichier \verb|.maple| qui sera compar<61> au fichier \verb|.maple.ref|[i] qui doit contenir exactement le m\^eme nombre de colonnes que le fichier \verb|.maple|.\\
Le fichier \verb|.info| doit g<>n<EFBFBD>rer automatiquement les sorties maple en choisissant parmi les 2 possibilit<69>s suivantes :
A noter que quelque soit la fr<66>quence de sortie des r<>sultats, seule la derni<6E>re ligne de donn<6E>es du fichier \verb|.maple| est v<>rifi<66>e.\\
Le test \verb|Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_non_dynamique| est un exemple de calcul classique utilisant les pr<70>cisions par d<>faut pour la comparaison des donn<6E>es.
Le test \verb|Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage| est un exemple de calcul utilisant un fichier de commandes interactives (r<>ponses au menu interactif de l'utilitaire "\verb|avec plus fusion_maillages|"). Ce fichier sp<73>cial est le fichier d'extension \verb|.commande1|.
Le test \verb|Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non| \verb|-references| est un exemple de calcul utilisant un script de v<>rification (comparaison entre deux fichiers \verb|.her|). Ce fichier sp<73>cial est le fichier d'extension \verb|.verif1|.
Le script \verb|Perl/test.pl| lance un calcul Herezh++ avec l'option \verb|-n| si le fichier \verb|.info| ne contient pas le mot-cl<63>\verb|dimension|. Pour cela, on cr<63>e simplement un fichier \verb|.info| vide. Un fichier \verb|.commande| sera forc<72>ment n<>cessaire pour r<>pondre au menu interactif de cr<63>ation.
Il ne s'agit pas d'un calcul classique. Donc, sauf cas particulier, la v<>rification sera faite via un script \verb|.verif| afin de comparer le fichier \verb|.info| cr<63><72><20> un fichier \verb|.info| de r<>f<EFBFBD>rence. Attention au fait que le fichier \verb|.info| de r<>f<EFBFBD>rence ne doit pas avoir l'extension \verb|.info| car il ne peut y avoir qu'un seul fichier \verb|.info| dans le r<>pertoire. On peut par exemple utiliser l'extension \verb|.info.ref1|.\\
\subsubsection{Exemple complexe effectuant des pr<70>-traitements et des post-traitements}\label{section_exemple_test_5}
Il est parfois utile d'ex<65>cuter des actions avant et/ou apr<70>s le calcul Herezh++. Les fichiers \verb|.pretrait| et \verb|.posttrait| sont l<> dans ce but. La s<>quence sera :
\begin{itemize}
\item[1)] lancement du script \verb|.pretrait| (+ v<>rification de la r<>ussite de ce script)
\item[2)] lancement du calcul Herezh
\item[3)] lancement du script \verb|.posttrait| (+ v<>rification de la r<>ussite de ce script)
\item[4)] V<>rification du calcul par les moyens habituels (comparaison \verb|.maple.ref|, script \verb|.verif|, pas de v<>rification, etc...)\\
\end{itemize}
Le script \verb|.pretrait| peut par exemple servir <20> modifier des param<61>tres dans le fichier \verb|.info| avant le calcul. Mais on peut aussi imaginer d'autres situations plus complexes.
Par exemple le test \verb|Batterie/FONCTION_UNIQUE/LOI_DE_COMP|ORTE\-\verb|MENT/Test_R_LOI_VIA_UMAT_1| est un test n<>cessitant un pr<70> et un post-traitement pour r<>aliser un dialogue entre 2 processus Herezh++. La v<>rification est une comparaison classique de r<>sultats \verb|.maple|. Cet exemple tr<74>s particulier montre que l'on peut lancer un autre calcul Herezh++ dans un script \verb|.pretrait| ou \verb|.posttrait| (attention : il faut s'assurer que ce processus ne tournera plus apr<70>s la fin du test).
Le document \verb|catalogue_tests.pdf| pr<70>sent <20> la racine du projet CVS est construit sur la base du fichier \verb|README| pr<70>sent dans chaque r<>pertoire de test. Ce fichier pdf est cr<63><72> via \LaTeX. Le script \verb|genere_catalogue_tests.pl|, pr<70>sent dans le r<>pertoire \verb|Perl|, automatise le traitement en regroupant le contenu des fichiers \verb|README| au sein d'un fichier \verb|.tex| qui est ensuite compil<69> avec la commande \verb|pdflatex|.
Une fois un nouveau test pr\^et <20> l'emploi avec un fichier \verb|README| conforme, l'utilisateur peut actualiser ce catalogue en ex<65>cutant le script \verb|genere_catalogue_tests.pl|. Ce script recherche tous les r<>pertoires de test depuis son r<>pertoire de lancement. Cela veut dire que l'utilisateur peut tr<74>s bien tester, dans un r<>pertoire s<>par<61>, si ce script fonctionne correctement pour son nouveau test avant d'actualiser la totalit<69> du catalogue. Notamment, si le fichier \verb|README| contient une insertion de figure, cela permet de tester au pr<70>alable si les dimensions de la figure sont bien configur<75>es.
Pour ex<65>cuter le script \verb|genere_catalogue_tests.pl|, les commandes suivantes doivent \^etre disponibles :
\begin{itemize}
\item[-]\verb|pdflatex|
\item[-]\verb|makeindex|
\end{itemize}
~\\
La proc<6F>dure de lancement dans un terminal est :
\begin{itemize}
\item[1-] se placer dans un r<>pertoire contenant des tests et le r<>pertoire \verb|Perl|
\item[2-] ex<65>cuter le script \verb|Perl/genere_catalogue_tests.pl|
\end{itemize}
~\\
Si tout se passe normalement, le fichier \verb|catalogue_tests.pdf| a <20>t<EFBFBD> cr<63><72> dans le r<>pertoire de lancement du script. La version finale actualis<69>e du catalogue (celle regroupant l'ensemble des tests) doit \^etre plac<61>e <20> la racine du projet CVS.
Il est possible que la commande \verb|pdflatex| rencontre des probl<62>mes pour g<>n<EFBFBD>rer le fichier pdf. Tout ce qui met en d<>faut une compilation \LaTeX{} avec \verb|pdflatex| provoquera un <20>chec. Les probl<62>mes possibles identifi<66>s <20> l'heure actuelle sont :
\begin{itemize}
\item[-] des caract<63>res ou un encha\^inement de caract<63>res ing<6E>rables par \LaTeX{} sont pr<70>sents dans un fichier \verb|README|
\item[-] probl<62>me d'acc<63>s aux librairies. Une compilation \LaTeX{} requiert la pr<70>sence de certaines librairies, et parfois ces librairies ne sont pas pr<70>sentes sur la machine de l'utilisateur.
\end{itemize}
~\\
En cas de probl<62>me, le script \verb|genere_catalogue_tests.pl| signale l'<27>chec de la cr<63>ation du fichier pdf et fournit deux fichiers :
\begin{itemize}
\item[-]\verb|catalogue_tests.tex|
\item[-]\verb|catalogue_tests.error_log|
\end{itemize}
~\\
A partir de ces deux fichiers, l'utilisateur peut commencer un d<>buggage manuel. Le fichier \verb|catalogue_tests.tex| est le fichier source pr\^et <20> la compilation (avec \verb|pdflatex| ou n'importe quel autre moyen pour compiler un fichier \LaTeX). Le fichier \verb|catalogue_tests.error_log| contient l'affichage qui a <20>t<EFBFBD> produit par \verb|pdflatex|, ce qui permet de prendre connaissance des <20>ventuels message d'erreur. En premi<6D>re approche, le script \verb|genere_catalogue_tests.pl| affiche dans le terminal certaines lignes de ce fichier \verb|.error_log| (celle contenant le mot \verb|error|).\\
\indent Le fichier \verb|catalogue_tests.tex| <20>tant pr\^et <20> la compilation, il est tout <20> fait possible de s'en servir pour aboutir manuellement <20> la cr<63>ation du fichier \verb|catalogue_tests.pdf|. Il n'est pas absolument indispensable que ce fichier pdf soit cr<63><72> par une ex<65>cution sans erreur du script \verb|genere_catalogue_tests.pl|. N<>anmoins, merci de signaler tout probl<62>me d'ex<65>cution.
\color{black}
~\\
La figure \ref{exemple_erreur_genereation_catalogue} montre un exemple d'affichage produit en cas d'erreur.
\begin{figure}[H]
\footnotesize
\begin{verbatim}
Erreur (prog:genere_catalogue_tests.pl) : erreur a l execution de pdflatex
Les fichiers suivants ont ete crees pour chercher manuellement la source de l erreur :
- catalogue_tests.tex (fichier .tex pret a la compilation)
- catalogue_tests.error_log (affichage renvoye par pdflatex)
(vous pouvez essayer de compiler vous-meme le fichier .tex pour
finaliser la creation du catalogue)
Notamment, le fichier catalogue_tests.error_log contient les erreurs :
\subsection{Les tests ne se lancent pas correctement (probl<62>me d'ex<65>cution)}
Compte-tenu des diverses architectures des machines utilisateur, il est possible que certains d<>tails manquent au bon fonctionnement (informatiquement parlant). Voici une liste des causes possibles :
\begin{itemize}[label=\textbullet]
\item la variable environnement \verb|PATH| ne contient pas le chemin vers le r<>pertoire courant ./ :\\
\hspace*{0.5cm}$\Rightarrow$ Il faut ajouter le caract<63>re "." <20> votre variable environnement \verb|PATH|
\item le r<>pertoire \verb|/tmp| n'existe pas (Les tests sont lanc<6E>s dans ce r<>pertoire) :\\
\hspace*{0.5cm}$\Rightarrow$ Pour r<>soudre ce probl<62>me, cela suppose une modification des programmes actuels. Contactez un membre appropri<72> du projet pour signaler ce besoin
\item votre machine n'a pas la commande \verb|tcsh| :\\
\hspace*{0.5cm}$\Rightarrow$ Tapez "\verb|which tcsh|" dans un terminal. Si il n'y a aucun r<>sultat ou un affichage du style "\verb|not found|", la commande \verb|tcsh| n'existe pas. Installez-l<> car elle est indispensable au fonctionnement
\item[-] cr<63>ation d'un nouveau script (\verb|Perl/genere_catalogue_tests.pl|). Il g<>n<EFBFBD>re automatiquement une documentation sur les tests (r<>sum<75> et index pour recherche par mots-cl<63>s). Ce document est plac<61><20> la racine du projet sous le nom \verb|documentation_tests.pdf|. Le mode de fonctionnement (lecture des fichiers README de chaque test) impose une nouvelle contrainte sur la forme des fichiers README (interdiction d'utiliser des lignes de 3 tirets ou plus dans le corps d'une rubrique README car ce motif signifie la fin d'une rubrique). Cette contrainte est le choix actuel mais peut \^etre modifi<66><20> tout moment en d<>finissant une balise de fin de rubrique <20> utiliser dans les fichiers README (par exemple : \verb|fin_rubrique|) et en indiquant sa syntaxe dans la variable \verb|$MOTIF_FIN_RUBRIQUE| du script \verb|Perl/genere_catalogue_tests.pl|.\\
\item[-] Apparition d'une nouvelle rubrique README : \textit{ Auteur} (renseigne le ou les auteurs du test avec pr<70>nom, nom, adresse mail). rubrique qui appara\^it dans la documentation des tests.
\item[-] changement du nom du fichier de catalogue de tests (d<>sormais s'appellera \verb|catalogue_test.pdf| au lieu de \verb|documentation_tests.pdf|)\\
\item[-] le fichier .pdf de la document utilisateur principale est d<>sormais archiv<69> sous CVS. Il s'appelle \verb|doc_procedure_verification.pdf| et est plac<61><20> la racine du projet (il s'agit simplement du fichier g<>n<EFBFBD>r<EFBFBD> par \verb|Doc/doc_procedure_verification.tex|)
\item[-] ajout d'une nouvelle version du script de lancement de la batterie. Cette nouvelle version en Perl s'appelle \verb|verifier_exeHZ.pl|. Elle reproduit la m\^eme chose que la version actuelle en zsh mais propose en plus des options pour <20>viter de lancer tous les tests. La version pr<70>c<EFBFBD>dente \verb|verifier_exeHZ| est conserv<72>e mais renomm<6D>e en \verb|verifier_exeHZ.zsh|. A terme, cette version zsh sera supprim<69>e du projet CVS.
\item[-] modif du script de g<>n<EFBFBD>ration automatique du catalogue de tests (script \verb|Perl/genere_catalogue_tests.pl|). D<>sormais, il est possible d'ins<6E>rer des figures via une syntaxe par balises dans les fichiers README des tests. La m<>thode est expliqu<71>e <20> la section \ref{section_fichiers_obligatoires} "Fichiers obligatoires" (fichier \verb|README|)\\
\item[-] ajout du script \verb|Perl/verif_existence_repertoire_test.pl|. Permet de savoir si un nom de r<>pertoire de test existe d<>j<EFBFBD> dans la batterie. Est utile au moment de l'ajout d'un nouveau test pour aider <20> choisir le nom et <20>viter de choisir un nom d<>j<EFBFBD> existant (m\^eme si ce n'est pas dans le m\^eme r<>pertoire de destination car le catalogue des tests ne tient pas compte du chemin complet). Explication de son utilisation <20> la section \ref{subsection_vue_ensemble}\\
\item[-] m<>thodologie pour ajouter un nouveau test : il n'y avait aucune section exposant clairement les <20>tapes <20> suivre pour cr<63>er et ajouter un test, d'o<> la cr<63>ation de la section \ref{subsection_methodologie}
\item[-] modif du script \verb|Perl/verifier_exeHZ.pl| : le package \verb|Term::ReadKey| n'est pas forc<72>ment install<6C> sur toutes les machines. Pour <20>viter d'\^etre p<>nalis<69> par ce package, son existence est v<>rifi<66>e via la subroutine \verb|check_install| du package \verb|Module::Load::Conditional| et, si il existe, l'appel <20>\verb|Term::ReadKey| est fait via \verb|require| au lieu de \verb|use|. Cette mani<6E>re de faire pourra \^etre appliqu<71>e partout o<> il y a un doute sur l'existence d'un package et d<>finir ainsi un moyen de contourner l'absence d'un package.\\
\item[-] modif du script \verb|Perl/test.pl| : il y avait une faille dans la subroutine \verb|lancement_commande|. Sur certaines machines, la redirection \verb|tee| ne se fait pas instantan<61>ment. Ceci conduisait <20> croire que le fichier de redirection n'<27>tait pas cr<63><72> et donc renvoyait un probl<62>me li<6C><20> la redirection de l'affichage. D<>sormais, un d<>lai est accord<72> pour attendre la cr<63>ation de ce fichier (environ 2 secondes maximum avec un check de l'existence du fichier de redirection toutes les millisecondes). De mani<6E>re indirecte, ceci a conduit <20> cr<63>er un nouvel indicateur de status pour signaler si le calcul ne se lance pas (\verb|probleme lancement calcul|).
\item[-] modif de l'en-t\^ete de tous les scripts perl (y compris les \verb|.verif| de la batterie) : am<61>lioration de la portabilit<69> en modifiant le shebang selon \url{https://en.wikipedia.org/wiki/Shebang_\%28Unix\%29#Portability}. D<>sormais, les scripts commencent par \verb|#!/usr/bin/env perl| au lieu du chemin absolu \verb|#!/usr/bin/perl| qui pourrait ne pas fonctionner sur certaines machines <20> l'architecture atypique (et actualisation de la section \ref{section_fichiers_facultatifs} pour signaler cette habitude <20> prendre pour les fichiers \verb|.verif|).\\
1) possibilit<69> d'ins<6E>rer un espace "{\textbackslash}hspace" entre les figures \verb|\figures| (voir section \ref{section_fichiers_obligatoires} concernant le fichier \verb|README|)\\
2) possibilit<69> d'ins<6E>rer des formules et caract<63>res math<74>matiques dans les fichiers \verb|README| entre simples \$ ou doubles \$\$ (voir section \ref{section_fichiers_obligatoires} concernant le fichier \verb|README|)
\item[-] modif script \verb|Perl/genere_rapport.pl| : modifification de l'en-t\^ete du rapport de tests avec notamment l'affichage du nom de la machine (via variable environnement \$HOST)
\item[-] modif script \verb|Perl/test.pl| :\\
1) gestion de bugs et am<61>liorations diverses :\\
- remplacement de "\verb|cp -nf|" par l'encha\^inement "\verb|rm -f|" + "\verb|cp|" (car dans certaines versions de \verb|cp|, l'option \verb|-n| n existe pas)\\
- modification majeure : d<>sormais, un test s'<27>xecute dans un repertoire de travail sur \verb|/tmp| (voir variable \verb|$repertoire_de_travail|). L'int<6E>r\^et majeur est de ne jamais modifier le r<>pertoire d'origine du test quelque soit le d<>roulement du test. Cette strat<61>gie permet actuellement d'interrompre la batterie avec \verb|ctrl+c| sans cons<6E>quence sur le contenu des r<>pertoires de test (voir proc<6F>dure d'interruption <20> la section \ref{section_lancement_batterie_tests}). De plus, une cons<6E>quence indirecte b<>n<EFBFBD>fique de ceci est que m\^eme quand un test se d<>roule correctement, il se pouvait que certains fichiers soient l<>g<EFBFBD>rement modifi<66>s (par exemple : le num<75>ro de version Herezh en en-t\^ete du fichier \verb|cube_soude.her| du test \verb|FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins|). En cons<6E>quence, cela g<>n<EFBFBD>rait un archivage CVS suppl<70>mentaire avec envoi intempestif d'un mail aux membres du projet pour chacun de ces fichiers, alors qu'en realit<69>, ils n'<27>taient pas fondamentalement et sciemment modifi<66>s. Ce probl<62>me mineur est d<>sormais r<>solu.\\
- comparaison maple : d<>sormais, si toutes les grandeurs d'un test sont OK, un affichage all<6C>g<EFBFBD> est produit dans le rapport (juste une ligne pour indiquer que toutes les grandeurs sont OK sans d<>tailler les comparaisons)\\
2) affichage des temps de calcul :\\
- dans la subroutine \verb|lancement_commande()| : lancement de Herezh via la tournure \verb/tsch -c "time HZ -f fic.info" | tee fic.log/ pour r<>cuperer le temps CPU dans le fichier .log (l'utilisation de \verb|tcsh -c|, c'est uniquement pour que le r<>sultat de \verb|time| soit bien r<>cup<75>r<EFBFBD> sur \verb|STDOUT|, donc dans \verb|fic.log|)\\
- juste apr<70>s l'appel <20>\verb|lancement_commande()| $\Rightarrow$ saisie du temps de calcul dans le \verb|.log| et affichage dans le rapport de test (juste apr<70>s le nom du test)
\item[-] modif scripts \verb|Perl/genere_catalogue_tests.pl| et \verb|Perl/genere_rapport.pl| : suppression de l'option \verb|-s| dans le shebang (inutile et en plus g<>n<EFBFBD>re un bug sur Linux quand on utilise la tournure \verb|#/usr/bin/env perl -s|)
\item[-] modif script \verb|Perl/test.pl| :\\
- remplacement de la subroutine \verb|return_nb_decimales()| par la subroutine \verb|return_nb_decimales_first()| (m\^eme chose mais en mieux : renvoie la position de la premi<6D>re d<>cimale non nulle au lieu du nombre total de d<>cimales). Pour rappel, ce traitement n'a pas pour but d'arrondir les r<>sultats pour la comparaison. Il s'agit juste d'un arrondi <20> but cosm<73>tique pour afficher, dans le rapport, la grandeur avec un nombre de d<>cimales adapt<70><20> la pr<70>cision.\\
- comparaison maple :\\
1) modification de la comparaison pour g<>rer le cas o<> le nombre est tr<74>s petit (par exemple : 1.e-15 compar<61><20> 1.e-30 g<>n<EFBFBD>re une erreur relative <20>norme). Ce probl<62>me avait <20>t<EFBFBD> d<>j<EFBFBD> pens<6E> dans la version historique de la v<>rification Herezh (Laurent Mah<61>o) mais malheureusement non trait<69> dans la nouvelle version. D<>sormais, on traite ce probl<62>me en arrondissant les grandeurs <20> 1.e-12 pr<70>s.\\
2) correction d'une erreur dans la comparaison absolue : par erreur, la comparaison se faisait toujours par rapport <20> la pr<70>cision absolue par d<>faut (\verb|$PREC_ABSOLU|) sans tenir compte de l'<27>ventuelle modification par fichier \verb|.precision|
1) suppression du lancement de la commande \verb|makeindex| (en fait, le package imakeidx lance d<>j<EFBFBD> cette commande sous forme d'un appel system par Latex lui-e\^eme. Cette op<6F>ration <20>tait donc redondante)\\
2) meilleure gestion des erreurs de compilation pdflatex :\\
\begin{itemize}
\item[$>$] utilisation de l'option \verb|-interaction=nonstopmode| en plus de \verb|-halt-on-error|, ce qui <20>vite <20> pdflatex de s'arr\^eter sans rendre la main en cas d'absence de fichiers (package .sty introuvable, fichier image introuvable avec \verb|\includegraphics|, etc...)
\item[$>$] le script fournit <20> l'utilisateur le fichier \verb|catalogue_tests.tex| pr\^et <20> la compilation. Ce qui permet d'une part de chercher manuellement la source des erreurs de compilation, et d'autre part, de donner la possibilit<69><20> l'utilisateur de terminer manuellement la compilation du catalogue de tests m\^eme si \verb|Perl/genere_catalogue_tests.pl| n'a pas pu aller jusqu'au bout.
\end{itemize}
\item[-] ajout dans la documentation d'un paragraphe concernant la g<>n<EFBFBD>ration du catalogue de tests (section \ref{section_actualisation_catalogue_tests})
\item[-] ajout dans la documentation d'un paragraphe regroupant les personnes r<>f<EFBFBD>rentes <20> contacter (section \ref{section_personnes_referentes})
pour ces 2 scripts, une gestion des signaux d'interruption \verb|INT| et \verb|TERM| a <20>t<EFBFBD> introduite (subroutine \verb|arret_force()| et un fichier (texte) temporaire est utilis<69> pour permettre un dialogue entre les 2 processus (fichier de nom \verb|//tmp/verifier_exeHZ_2_test_$PID.com/| o<>\verb|$PID| est le pid du processus \verb|verifier_exeHZ.pl|). Un nouveau status de test existe d<>sormais dans le rapport de test : \verb|ECHEC : ***INTERRUPTION PAR L UTILISATEUR***|. A noter que le rapport de test est tout de m\^eme g<>n<EFBFBD>r<EFBFBD> en bonne et due forme pour les tests d<>j<EFBFBD> termin<69>s avant Ctrl-c (mais le rapport n'est pas automatiquement affich<63>). A noter <20>galement que, <20>tant donn<6E>es les modifs de \verb|Perl/test.pl|, l'interruption \verb|ctrl+c| n'est pas trop mal avec la version \verb|zsh| \verb|verifier_exeHZ.zsh| mais c'est tout de m\^eme moins bien ma\^itris<EFBFBD> (<28><20>viter).
\item[-] la section \ref{section_lancement_batterie_tests} de ce document a <20>t<EFBFBD> divis<69> en 2 sous-sections. Une section est d<>di<64>e <20> la proc<6F>dure d'interruption \verb|ctrl+c| (pour expliquer mais aussi pour pointer du doigt le fait qu'une interruption volontaire n'est pas toujours une op<6F>ration sans cons<6E>quences).
\item[-] modif du script \verb|Perl/test.pl| : ajout de la possibilit<69> de faire des traitements avant et apr<70>s calcul via un script \verb|.pretrait| et \verb|.posttrait| (voir section \ref{section_fichiers_facultatifs})
\item[-] modif du script \verb|Perl/genere_catalogue_tests.pl| : D<>sormais, on peut <20>crire directement du code latex dans les fichiers \verb|README| en utilisant les balises \verb|\latex_brut| et \verb|\fin_latex_brut| (voir section \ref{section_fichiers_obligatoires})
\item[-] ajout d'un nouveau r<>pertoire dans l'arborescence : le r<>pertoire \verb|Tests_en_attente_debug/| est cr<63><72> dans le but d'y placer des nouveaux tests qui ne fonctionnent pas encore. Ils sont en attente de debuggage pour \^etre <20> terme d<>plac<61>s dans un endroit appropri<72> du r<>pertoire \verb|Batterie/| une fois r<>solu. \textbf{\color{red} Attention :} il s'agit bien d'y placer des \underline{nouveaux} tests qui ne marchent pas encore. Il n'est pas question d'y d<>placer d'anciens tests d<>j<EFBFBD> pr<70>sents dans \verb|Batterie/| sous le pr<70>texte qu'ils ne fonctionnent plus suite <20> un changement de version Herezh
\item[-] modif des scripts \verb|verifier_exeHZ.pl|, \verb|verifier_exeHZ.zsh|, \verb|Perl/genere_catalogue_tests.pl|, \verb|Perl/verif_existence_repertoire_test.pl| : on omet le r<>pertoire \verb|Tests_en_attente_debug/| pour lister les tests de la batterie (via l'option \verb|-not -path| dans la commande linux \verb|find|)
\item[-] modif du script \verb|Perl/test.pl| : ajout d'un 3<>me argument pour le script \verb|.verif|. D<>sormais, le nom du fichier \verb|.info| est fourni en 3<>me argument (voir la partie relative au script \verb|.verif| en section \ref{section_fichiers_facultatifs})
\item[-] modif du script \verb|test.pl| : l<>g<EFBFBD>re modif sans cons<6E>quence (petit changement dans le message d'erreur en lien avec un probl<62>me d'ex<65>cution Herezh)
\item[-] modif du script \verb|test.pl| : d<>sormais, la v<>rification du status d'un calcul se fait avant l'ex<65>cution d'un <20>ventuel script de post-traitement. Concernant le status, il y a d<>sormais une v<>rification de la pr<70>sence de messages d'erreur dans la subroutine \verb|lancement_calcul()|. Pour l'instant, seul le message \verb|Segmentation fault| figure dans cette liste. Cette liste a vocation <20> r<>pertorier les messages d'erreur d'ordre "informatique", pas d'ordre "m<>canique" ou en lien avec les <20>l<EFBFBD>ments finis (la logique veut que les aspects num<75>riques ou m<>caniques sont des domaines qui doivent \^etre v<>rifi<66>s par un \verb|.maple.ref|). La raison de cette nouvelle v<>rification est que les tests ayant \verb|Segmentation fault| <20>taient consid<69>r<EFBFBD>s comme r<>ussis d'un point de vue informatique... ce qui pouvait conduire <20> croire qu'un test n'avait pas de probl<62>me.
\item[-] modif du script \verb|test.pl| : ajout d'un nouveau message d'erreur fatal dans la liste des erreurs <20> rep<65>rer dans le fichier de redirection \verb|.log|. D<>sormais, si Herezh++ produit un message de la forme "\verb|erreur (...message...) detectee|", le test est consid<69>r<EFBFBD> comme \verb|ECHEC|
\item[-] modif du script \verb|test.pl| : d<>sormais, les v<>rifications ne sont plus mutuellement exclusives. Un m\^eme test peut tr<74>s bien \^etre l'objet <20> la fois d'une v<>rification de \verb|.maple| et d'une v<>rification libre par script \verb|.verif|. L<>g<EFBFBD>re modif de l'affichage dans le rapport de tests de mani<6E>re <20> rendre clair les cas o<> un test est l'objet de plusieurs v<>rifications.
\item[-] modif du script \verb|test.pl| : d<>sormais, l'ex<65>cution du script \verb|.pretrait| intervient avant la mise en place du \verb|RESTART| dans le cas d'un test avec plusieurs \verb|.CVisu|[i]. D<>sormais, il est possible d'emp\^echer le \verb|RESTART| lors d'un calcul i en supprimant le fichier \verb|.PI| dans le script \verb|.pretrait| associ<63> (rq : <20> noter que c'<27>tait d<>j<EFBFBD> possible en faisant ce traitement mais cette fois dans le script \verb|.posttrait| du calcul i-1 pr<70>c<EFBFBD>dent);\\
autre modif : harmonisation des affichages des commentaires <20>crits dans le rapport de test en cas d'\verb|ECHEC| des scripts \verb|.pretrait|, \verb|.posttrait| et \verb|.verif| (voir doc associ<63>e <20> ces 3 fichiers en section \ref{section_fichiers_facultatifs})
\item[-] modif du script \verb|test.pl| : ajout du path "./" dans les appels system() <20> certaines commandes : lien symbolique vers Herezh (subroutine \verb|lancement_commande()|), scripts \verb|.pretrait| et \verb|.posttrait|, script \verb|.verif|. La raison est que certains utilisateurs ne poss<73>dent pas le path "./" dans leur variable environnement \verb|$PATH|.
\item[-] modif de cette documentation : ajout de la section \ref{section_Pre_requis}