From f218763f5047b19a9ceec8c63a16e547f3b4cb1e Mon Sep 17 00:00:00 2001 From: troufflard <> Date: Wed, 30 Sep 2015 22:56:53 +0000 Subject: [PATCH] modif de l en-tete des scripts .pl et .verif (voir section evolution des modifs dans catalogue_tests.pdf); correction d un petit bug dans 2 tests UTILITAIRES (consequence d un ancien conflit cvs) --- .../cube_soude.her | 6 +- .../cube_soude.lis | 6 +- .../fusion_elements_supperposes.verif1 | 2 +- .../fusion_maillage.verif1 | 2 +- .../cube_soude.her | 6 +- .../cube_soude.lis | 6 +- .../fusion_noeuds_voisins.verif1 | 2 +- .../suppression_noeuds_non_references.verif1 | 2 +- Doc/doc_procedure_verification.tex | 8 +- Perl/genere_catalogue_tests.pl | 4 +- Perl/genere_rapport.pl | 3 +- Perl/test.pl | 7 +- Perl/verif_existence_repertoire_test.pl | 3 +- Rapport/rapport_test_L.txt | 6 +- Rapport/rapport_test_R.txt | 498 +----------------- doc_procedure_verification.pdf | Bin 205612 -> 206780 bytes verifier_exeHZ.pl | 85 +-- verifier_exeHZ.zsh | 2 +- 18 files changed, 84 insertions(+), 564 deletions(-) diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.her b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.her index a43bf33..9cff6f5 100644 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.her +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.her @@ -2,11 +2,7 @@ ########################################################################### # ecriture automatique d'un maillage au format .her, par Herezh++ # ########################################################################### -<<<<<<< cube_soude.her - # version: 6.700 -======= - # version: 6.701 ->>>>>>> 1.3 + # version: 6.725 diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.lis b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.lis index d21e795..dc6ee48 100644 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.lis +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/cube_soude.lis @@ -2,11 +2,7 @@ ########################################################################### # ecriture automatique d'un maillage au format .lis, par Herezh++ # ########################################################################### -<<<<<<< cube_soude.lis - # version: 6.700 -======= - # version: 6.701 ->>>>>>> 1.3 + # version: 6.725 diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/fusion_elements_supperposes.verif1 b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/fusion_elements_supperposes.verif1 index 0386f8c..2c08351 100755 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/fusion_elements_supperposes.verif1 +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/fusion_elements_supperposes.verif1 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl use strict; use warnings; diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage/fusion_maillage.verif1 b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage/fusion_maillage.verif1 index b236a4a..2f9c74e 100755 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage/fusion_maillage.verif1 +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage/fusion_maillage.verif1 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl use strict; use warnings; diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.her b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.her index 0d1ea6a..ceea7cb 100644 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.her +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.her @@ -2,11 +2,7 @@ ########################################################################### # ecriture automatique d'un maillage au format .her, par Herezh++ # ########################################################################### -<<<<<<< cube_soude.her - # version: 6.700 -======= - # version: 6.701 ->>>>>>> 1.3 + # version: 6.725 diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.lis b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.lis index 6cf542a..bea243b 100644 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.lis +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/cube_soude.lis @@ -2,11 +2,7 @@ ########################################################################### # ecriture automatique d'un maillage au format .lis, par Herezh++ # ########################################################################### -<<<<<<< cube_soude.lis - # version: 6.700 -======= - # version: 6.701 ->>>>>>> 1.3 + # version: 6.725 diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/fusion_noeuds_voisins.verif1 b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/fusion_noeuds_voisins.verif1 index 0386f8c..2c08351 100755 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/fusion_noeuds_voisins.verif1 +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/fusion_noeuds_voisins.verif1 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl use strict; use warnings; diff --git a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non-references/suppression_noeuds_non_references.verif1 b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non-references/suppression_noeuds_non_references.verif1 index 0386f8c..2c08351 100755 --- a/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non-references/suppression_noeuds_non_references.verif1 +++ b/Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non-references/suppression_noeuds_non_references.verif1 @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl use strict; use warnings; diff --git a/Doc/doc_procedure_verification.tex b/Doc/doc_procedure_verification.tex index 2596711..d950554 100644 --- a/Doc/doc_procedure_verification.tex +++ b/Doc/doc_procedure_verification.tex @@ -602,7 +602,7 @@ Il est important de noter que cet ex \end{minipage} \noindent\rule{0.8\textwidth}{0.5pt}\\ -Cet exécutable peut \^etre programmé dans n'importe quel langage, mais pour éviter les problèmes de compilateur, il est préférable d'éviter les langages nécessitant une compilation (par exemple : C, C++, Fortran, etc...). Il est préférables d'utiliser les langages interprétés (par exemple : sh, zsh, Perl, Python, etc...).\\ +Cet exécutable peut \^etre programmé dans n'importe quel langage, mais pour éviter les problèmes de compilateur, il est préférable d'éviter les langages nécessitant une compilation (par exemple : C, C++, Fortran, etc...). Il est préférables d'utiliser les langages interprétés (par exemple : sh, zsh, Perl, Python, etc...). Pour augmenter la portabilité de ces scripts, il faut éviter de mettre un chemin absolu vers l'interpréteur dans l'en-t\^ete. On utilisera la forme : \verb|#!/usr/bin/env| suivi du nom de l'interpréteur (exemples : \verb|#!/usr/bin/env perl| ou bien \verb|#!/usr/bin/env python|).\\ \underline{Remarque} : le script \verb|.verif| étant lancé après le calcul, il peut tout à fait servir de moyen détourné pour modifier le fichier \verb|.info| avant le calcul suivant (par exemple, pour tester un m\^eme mot-clé mais avec diverses valeurs de paramètres). Voir exemple section \ref{section_exemple_test_5}. @@ -726,6 +726,12 @@ Actuellement, il n'y a pas d'exemple dans le r \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ément. Ceci conduisait à croire que le fichier de redirection n'était pas créé et donc renvoyait un problème lié à la redirection de l'affichage. Désormais, un délai est accordé pour attendre la création de ce fichier (environ 2 secondes maximum avec un check de l'existence du fichier de redirection toutes les millisecondes). De manière indirecte, ceci a conduit à créer un nouvel indicateur de status pour signaler si le calcul ne se lance pas (\verb|probleme lancement calcul|).\\ \end{itemize}%tiret +\item[$\bullet$] 2015-09-30 (Julien Troufflard) : +\begin{itemize} +\item[-] modif de l'en-t\^ete de tous les scripts perl (y compris les \verb|.verif| de la batterie) : amélioration de la portabilité 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 à l'architecture atypique (et actualisation de la section \ref{section_fichiers_facultatifs} pour signaler cette habitude à prendre pour les fichiers \verb|.verif|).\\ +remarque : modif également pour le script zsh \verb|verifier_exeHZ.zsh|\\ +\end{itemize}%tiret + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %template d ajout d une nouvelle mise à jour (composé d'une puce "bullet" avec Date et auteur de la modif, suivie d une série de puce "-" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Perl/genere_catalogue_tests.pl b/Perl/genere_catalogue_tests.pl index 434d760..1c7a687 100755 --- a/Perl/genere_catalogue_tests.pl +++ b/Perl/genere_catalogue_tests.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl -s +#!/usr/bin/env perl -s use strict; use warnings; use File::Basename; @@ -969,7 +969,7 @@ citecolor= green %couleur citation biblio # - nom de la commande # # en sortie : -# - chemin aboslu de la commande (0 si commande introuvable) +# - chemin absolu de la commande (0 si commande introuvable) # sub verif_commande { my $cmd = shift;#nom de la commande diff --git a/Perl/genere_rapport.pl b/Perl/genere_rapport.pl index 099def6..15033c2 100755 --- a/Perl/genere_rapport.pl +++ b/Perl/genere_rapport.pl @@ -1,5 +1,4 @@ -#!/usr/bin/perl -s - +#!/usr/bin/env perl -s use strict; #use Regexp::Common;#expressions regulieres; par exemples pour reconnaitre un entier $RE{num}{int} ou un reel $RE{num}{real} use File::Basename; diff --git a/Perl/test.pl b/Perl/test.pl index 4e2dc9a..8538f24 100755 --- a/Perl/test.pl +++ b/Perl/test.pl @@ -1,5 +1,4 @@ -#!/usr/bin/perl -#!/usr/local/bin/perl +#!/usr/bin/env perl use strict; use warnings; @@ -844,6 +843,7 @@ sub printRapport { # - indicateur sur le status du calcul : "ok" => calcul a termine normalement (converge ou non) # "depassement taille maximum" => calcul a conduit a un depassement du maximum autorise pour la taille du fichier de redirection # "probleme redirection affichage" => la redirection de l affichage n a pas ete faite correctement (dans ce cas, probleme lie a la commande tee) +# "probleme lancement calcul" => le calcul ne s est pas lance # "activite cpu nulle" => calcul ne s arretait pas alors qu il avait une activite cpu nulle sub lancement_commande { use IO::Handle; @@ -948,6 +948,7 @@ sub lancement_commande { } + # #...maintenant, on va lancer un processus fils pour surveiller le calcul. On provoque son arret force (kill -9) dans les cas suivants : # 1) si la taille du fichier $fredir_tee depasse $TAILLE_MAX_FIC_REDIR octets @@ -1091,7 +1092,7 @@ sub lancement_commande { # - nom de la commande # # en sortie : -# - chemin aboslu de la commande (0 si commande introuvable) +# - chemin absolu de la commande (0 si commande introuvable) # sub verif_commande { my $cmd = shift;#nom de la commande diff --git a/Perl/verif_existence_repertoire_test.pl b/Perl/verif_existence_repertoire_test.pl index 4bf16d7..987eebe 100755 --- a/Perl/verif_existence_repertoire_test.pl +++ b/Perl/verif_existence_repertoire_test.pl @@ -1,5 +1,4 @@ -#!/usr/bin/perl -#!/usr/local/bin/perl +#!/usr/bin/env perl use strict; use warnings; use English; diff --git a/Rapport/rapport_test_L.txt b/Rapport/rapport_test_L.txt index 79c5f9d..5128a9e 100644 --- a/Rapport/rapport_test_L.txt +++ b/Rapport/rapport_test_L.txt @@ -1,11 +1,11 @@ --------------------------------------- - RAPPORT DE TEST - --------------------------------------- -- version HZ++ : HZppfast 6.719 +- version HZ++ : HZppfast 6.725 - Batterie de tests lancee -- le 29/09/2015 -- a 1:44 (heure locale) +- le 30/09/2015 +- a 23:19 (heure locale) --------------------------------------- ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_ISOELAS_CP/.CVisu1 diff --git a/Rapport/rapport_test_R.txt b/Rapport/rapport_test_R.txt index 97e9daf..154beb2 100644 --- a/Rapport/rapport_test_R.txt +++ b/Rapport/rapport_test_R.txt @@ -1,14 +1,14 @@ --------------------------------------- - RAPPORT DE TEST - --------------------------------------- -- version HZ++ : HZppfast 6.719 +- version HZ++ : HZppfast 6.725 - Batterie de tests lancee -- le 29/09/2015 -- a 1:44 (heure locale) +- le 01/10/2015 +- a 0:46 (heure locale) --------------------------------------- -./Batterie/FONCTION_UNIQUE/CONTACT/Test_R_contact_axi_non_dynamique/.CVisu1 +./TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/.CVisu1 -> grandeur testee : colonne [1] - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK @@ -65,473 +65,7 @@ - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK - -> grandeur testee : colonne [15] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [16] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [17] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [18] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [19] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [20] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [21] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [22] - - comparaison absolue (precision : 1.e-6) -> ECHEC - -> Valeur = 7.911199265281e+03 - -> Valeur reference = 3.955599632662e+03 - -> Difference = 3955.599633 - - comparaison relative (precision : 1.e-3%) -> ECHEC - -> Valeur = 7.911199265281e+03 - -> Valeur reference = 3.955599632662e+03 - -> Difference relative = 100.000% - - -> grandeur testee : colonne [23] - - comparaison absolue (precision : 1.e-6) -> ECHEC - -> Valeur = -5.715819369653e+00 - -> Valeur reference = -2.857909684829e+00 - -> Difference = -2.857910 - - comparaison relative (precision : 1.e-3%) -> ECHEC - -> Valeur = -5.715819369653e+00 - -> Valeur reference = -2.857909684829e+00 - -> Difference relative = 100.000% - - -> grandeur testee : colonne [24] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [25] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [26] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [27] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [28] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [29] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [30] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [31] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [32] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [33] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [34] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [35] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_R_quadrangle_isohyper3dorgeas1_CP_traction/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [7] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [8] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [9] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [10] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/ISOHYPER3DFAVIER3/Test_R_cube_ISOHYPER3DFAVIER3_cisaillement/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/ISOHYPER3DFAVIER3/Test_R_cube_ISOHYPER3DFAVIER3_traction/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [7] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [8] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/MAXWELL3D/Test_R_cube_MAXWELL3D_traction_relaxation/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [7] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [8] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/MOONEY_RIVLIN_3D/Test_R_cube_MOONEY_RIVLIN_3D_cisaillement/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/MOONEY_RIVLIN_3D/Test_R_cube_MOONEY_RIVLIN_3D_traction/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [7] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [8] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Orgeas/Test_R_cube_isohyperd3dorgeas1_traction/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [7] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [8] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [9] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [10] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [11] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [12] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [13] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [14] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [15] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [16] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_barre_PRANDTL_REUSS1D_traction/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_cube_ISOHYPERBULK3_compression_hydrostatique/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [7] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [8] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [9] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [10] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/.CVisu1 - -> grandeur testee : colonne [1] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [2] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [3] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [4] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [5] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [6] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [7] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [8] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [9] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [10] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [11] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [12] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [13] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - - -> grandeur testee : colonne [14] - - comparaison absolue (precision : 1.e-6) -> OK - - comparaison relative (precision : 1.e-3%) -> OK - -./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_explicite/.CVisu1 +./TYPE_DE_CALCUL/Test_R_dynamique_explicite/.CVisu1 -> grandeur testee : colonne [1] - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK @@ -612,7 +146,7 @@ -> Valeur reference = 2.068916079252e+03 -> Difference relative = 0.005% -./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite/.CVisu1 +./TYPE_DE_CALCUL/Test_R_dynamique_implicite/.CVisu1 -> grandeur testee : colonne [1] - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK @@ -669,7 +203,7 @@ - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK -./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/.CVisu1 +./TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/.CVisu1 -> grandeur testee : colonne [1] - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK @@ -726,7 +260,7 @@ - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK -./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_relaxation_dynam/.CVisu1 +./TYPE_DE_CALCUL/Test_R_dynamique_relaxation_dynam/.CVisu1 -> grandeur testee : colonne [1] - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK @@ -747,7 +281,7 @@ - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK -./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_non_dynamique/.CVisu1 +./TYPE_DE_CALCUL/Test_R_non_dynamique/.CVisu1 -> grandeur testee : colonne [1] - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK @@ -780,7 +314,7 @@ - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK -./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/.CVisu1 +./TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/.CVisu1 -> grandeur testee : colonne [1] - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK @@ -837,15 +371,3 @@ - comparaison absolue (precision : 1.e-6) -> OK - comparaison relative (precision : 1.e-3%) -> OK -./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/.CVisu1 - -> ECHEC (resultat fourni par le script de verification fusion_elements_supperposes.verif1) - -./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage/.CVisu1 - -> OK (resultat fourni par le script de verification fusion_maillage.verif1) - -./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/.CVisu1 - -> ECHEC (resultat fourni par le script de verification fusion_noeuds_voisins.verif1) - -./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non-references/.CVisu1 - -> OK (resultat fourni par le script de verification suppression_noeuds_non_references.verif1) - diff --git a/doc_procedure_verification.pdf b/doc_procedure_verification.pdf index 48f1a8e3fbd55bdd5097b5a4a01a946b86502d61..e331de526d5db74bd85bf8096d8b02cf7b5eb966 100644 GIT binary patch delta 49357 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 RjI8X8>@Z|xVhZ9g{{bHuGZg>; diff --git a/verifier_exeHZ.pl b/verifier_exeHZ.pl index 2e1973f..9d490c7 100755 --- a/verifier_exeHZ.pl +++ b/verifier_exeHZ.pl @@ -1,5 +1,4 @@ -#!/usr/bin/perl -#!/usr/local/bin/perl +#!/usr/bin/env perl use strict; use warnings; use English; @@ -79,7 +78,8 @@ if($is_opt_help or $#ARGV < 0) { my $exeHZ;#argument obligatoire : nom de l executable Herezh my $is_opt_R = 0;#indicateur de l option -R (0 par defaut; si egal 1 => lancement des tests rapides Test_R uniquement) my $is_opt_L = 0;#indicateur de l option -L (0 par defaut; si egal 1 => lancement des tests longs Test_L uniquement) -my $fic_rapport;#option -rpt : nom du fichier de rapport a exploiter (non defini par defaut; si utilisation de l option -rpt => lancement uniquement des tests ayant echoue de ce rapport (ECHEC) +my $is_opt_rpt = 0;#indicateur de l option -rpt (0 par defaut; si egal 1 => lancement uniquement des tests ayant un status ECHEC dans un rapport precedent) +my $opt_rpt_fic_rapport;#option -rpt : nom du fichier de rapport a exploiter (non defini par defaut) #On vide le contenu de @ARGV en conservant les arguments obligatoires dans @args et traiter les options au cas par cas my $opt; @@ -97,10 +97,11 @@ while($#ARGV != -1) { } #option -rpt elsif($opt eq '-rpt') { + $is_opt_rpt = 1; ($#ARGV != -1) or die "\nErreur (prog:$NOM_PROG, opt:-rpt) : l option -rpt necessite de specifier un nom de fichier rapport...\n\n"; - $fic_rapport = shift(@ARGV); + $opt_rpt_fic_rapport = shift(@ARGV); #verif de l existence du fichier rapport - (-e $fic_rapport) or die "\nErreur (prog:$NOM_PROG, opt:-rpt) : fichier rapport $fic_rapport introuvable...\n\n"; + (-e $opt_rpt_fic_rapport) or die "\nErreur (prog:$NOM_PROG, opt:-rpt) : fichier rapport $opt_rpt_fic_rapport introuvable...\n\n"; } #* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #note aux developpeurs : AJOUTER ICI LE TRAITEMENT D UNE NOUVELLE OPTION @@ -141,17 +142,14 @@ if($is_opt_R and $is_opt_L) { die "\nErreur (prog:$NOM_PROG, opt:-R/-L) : interdiction d utiliser les options -R et -L en meme temps...\n\n"; } -#si option -rpt : verif de l existence et de la validite du fichier rapport $fic_rapport -if(defined $fic_rapport) { - #existence - (-e $fic_rapport) or die "\nErreur (prog:$NOM_PROG, opt:-rpt) : fichier $fic_rapport introuvable...\n\n"; - +#si option -rpt : verif de la validite du fichier rapport $opt_rpt_fic_rapport +if($is_opt_rpt) { #validite (par une heuristique : est valide si on y trouve la chaine "RAPPORT DE TEST", sensible a la casse) my $fichier_valide = 0; - open(FIC, "<$fic_rapport"); + open(FIC, "<$opt_rpt_fic_rapport"); while() {next if(not /RAPPORT DE TEST/); $fichier_valide = 1; last;} close(FIC); - $fichier_valide or die "\nErreur (prog:$NOM_PROG, opt:-rpt) : fichier $fic_rapport existe mais n est pas un fichier de rapport genere par le script $NOM_PROG...\n\n"; + $fichier_valide or die "\nErreur (prog:$NOM_PROG, opt:-rpt) : fichier $opt_rpt_fic_rapport existe mais n est pas un fichier de rapport genere par le script $NOM_PROG...\n\n"; } #* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #note aux developpeurs : AJOUTER ICI DE NOUVELLES VERIF EN LIEN AVEC UNE NOUVELLE OPTION OU UN NOUVEL ARGUMENT @@ -165,6 +163,10 @@ if(defined $fic_rapport) { ########################################################################## # # LANCEMENT DES TESTS +# actuellement 3 options a gerer : +# -R : lancement uniquement des tests rapides +# -L : lancement uniquement des tests longs +# -rpt : lancement uniquement des tests ayant echoue du rapport $opt_rpt_fic_rapport # ########################################################################## ########################################################################## @@ -173,18 +175,19 @@ if(defined $fic_rapport) { #verification prealable de la presence du repertoire Rapport # > si existe deja mais est un fichier => arret avec message d erreur if(-f "./Rapport") { - die "\nErreur (prog:$NOM_PROG) : la presence d un repertoire de nom Rapport est necessaire mais le repertoire contient deja un fichier de nom Rapport...\n\n"; + die "\nErreur (prog:$NOM_PROG) : impossible de creer le repertoire Rapport car il existe deja un fichier de nom Rapport...\n\n"; } # > si absent => on le cree mkdir "./Rapport" if(not -e "./Rapport"); + #-------------------------------------------------------------------------- -# option -rpt => lancement uniquement des tests ayant echoue du rapport $fic_rapport (et sortie du programme) +# option -rpt => lancement uniquement des tests ayant echoue du rapport $opt_rpt_fic_rapport (et sortie du programme) #-------------------------------------------------------------------------- my @LISTE_TESTS_ECHEC; -if(defined $fic_rapport) { - open(FIC, "<$fic_rapport"); +if(defined $opt_rpt_fic_rapport) { + open(FIC, "<$opt_rpt_fic_rapport"); my $is_test_ECHEC; my $nom_repertoire_test; while() { @@ -199,7 +202,8 @@ if(defined $fic_rapport) { #si le mot ECHEC est trouve => on enregistre le repertoire (sauf si ca a deja ete fait precedemment) elsif(/ECHEC/) { push(@LISTE_TESTS_ECHEC, $nom_repertoire_test); - #dans la ligne suivante, on evite d enregistrer plusieurs fois un meme repertoire + #si le dernier element et l avant dernier element de la liste @LISTE_TESTS_ECHEC sont identiques, on supprime (pop) le + # dernier element pour eviter d enregistrer plusieurs fois un meme repertoire pop(@LISTE_TESTS_ECHEC) if($#LISTE_TESTS_ECHEC >= 1 and $LISTE_TESTS_ECHEC[-1] eq $LISTE_TESTS_ECHEC[-2]); } } @@ -209,7 +213,7 @@ if(defined $fic_rapport) { #si il n y a aucun test ECHEC dans @LISTE_TESTS_ECHEC => tant mieux! on affiche la bonne nouvelle et on exit if($#LISTE_TESTS_ECHEC == -1) { print "\n"; - print "Aucun test ECHEC n a ete trouve dans le fichier $fic_rapport ...\n\n"; + print "Aucun test ECHEC n a ete trouve dans le fichier $opt_rpt_fic_rapport ...\n\n"; print " - arret -\n"; exit; } @@ -228,7 +232,7 @@ if(defined $fic_rapport) { system("echo $rep_test >> Rapport/Liste_Tests_debugECHEC.txt"); } - #lancement des tests (dont le resultat s ecrit dans le rapport temporaire) + #lancement des tests (dont le resultat s ecrit dans le rapport temporaire Rapport/rapport_test.txt) foreach my $rep_test (@LISTE_TESTS_ECHEC) { system("./Perl/test.pl $rep_test $exeHZ"); } @@ -237,19 +241,16 @@ if(defined $fic_rapport) { system("mv -f Rapport/rapport_test.txt Rapport/rapport_test_debugECHEC.txt"); #affichage du rapport system("nedit Rapport/rapport_test_debugECHEC.txt &"); - } - - #on arrete le script - exit; - }#fin option -rpt + + #-------------------- -#lancement des tests rapides (sauf en cas d option -L) +#lancement des tests rapides (sauf en cas d option -L ou -rpt) #-------------------- -unless($is_opt_L) { +unless($is_opt_L or $is_opt_rpt) { #recherche des tests Test_R dans l arborescence (utilisation de find et suppression de chaque retour a la ligne avec chomp) my @LISTE_TESTS_R = map {chomp; $_} qx(find . -name "Test_R*" -type d); @@ -273,7 +274,7 @@ unless($is_opt_L) { system("echo $rep_test >> Rapport/Liste_Tests_R.txt"); } - #lancement des tests (dont le resultat s ecrit dans le rapport temporaire) + #lancement des tests (dont le resultat s ecrit dans le rapport temporaire Rapport/rapport_test.txt) foreach my $rep_test (@LISTE_TESTS_R) { system("./Perl/test.pl $rep_test $exeHZ"); } @@ -285,10 +286,13 @@ unless($is_opt_L) { } } + + + #-------------------- -#lancement des tests longs (sauf en cas d option -R) +#lancement des tests longs (sauf en cas d option -R ou -rpt) #-------------------- -unless($is_opt_R) { +unless($is_opt_R or $is_opt_rpt) { #recherche des tests Test_L dans l arborescence (utilisation de find et suppression de chaque retour a la ligne avec chomp) my @LISTE_TESTS_L = map {chomp; $_} qx(find . -name "Test_L*" -type d); @@ -312,7 +316,7 @@ unless($is_opt_R) { system("echo $rep_test >> Rapport/Liste_Tests_L.txt"); } - #lancement des tests (dont le resultat s ecrit dans le rapport temporaire) + #lancement des tests (dont le resultat s ecrit dans le rapport temporaire Rapport/rapport_test.txt) foreach my $rep_test (@LISTE_TESTS_L) { system("./Perl/test.pl $rep_test $exeHZ"); } @@ -333,9 +337,6 @@ unless($is_opt_R) { - - - ########################################################################## ########################################################################## ########################################################################## @@ -346,6 +347,13 @@ unless($is_opt_R) { ########################################################################## ########################################################################## +##################################################################################################### +#subroutine permettant de terminer proprement le script en cas de ctrl-z +##################################################################################################### +sub fin_script { + +} + ##################################################################################################### #subroutine permettant d ecrire une ligne de tirets de la largeur du terminal @@ -355,16 +363,17 @@ unless($is_opt_R) { # - print ou warn (suivant que l on souhaite afficher avec print (donc vers STDOUT) ou warn (donc vers STDERR) # sub afficher_ligne_tirets { - #utilisation de Term::ReadKey seulement si la librairie existe + my $funct_disp = shift; + ($funct_disp eq 'print') or ($funct_disp eq 'warn') or die "\nErreur (sub:afficher_ligne_tirets) : l argument d entree doit etre \"print\" ou \"warn\" (argument recu : $funct_disp)...\n\n"; + + #utilisation de Term::ReadKey pour connaitre la largeur du terminal en nombre de caracteres + # (seulement si la librairie existe. si non, la ligne de tirets aura une largeur de 78) my $nb_char_largeur_terminal = 78; if(check_install( module => 'Term::ReadKey')) { require Term::ReadKey; Term::ReadKey->import(qw(GetTerminalSize)); $nb_char_largeur_terminal = ( GetTerminalSize() )[0];#largeur du terminal en nombre de caracteres (via package Term::ReadKey) } - my $funct_disp = shift; - - my $ligne_tirets = ''; $ligne_tirets .= '-' for(1 .. $nb_char_largeur_terminal); @@ -381,7 +390,7 @@ sub afficher_ligne_tirets { # - nom de la commande # # en sortie : -# - chemin aboslu de la commande (0 si commande introuvable) +# - chemin absolu de la commande (0 si commande introuvable) # sub verif_commande { my $cmd = shift;#nom de la commande diff --git a/verifier_exeHZ.zsh b/verifier_exeHZ.zsh index 5f1278b..3cd1f87 100755 --- a/verifier_exeHZ.zsh +++ b/verifier_exeHZ.zsh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/usr/bin/env zsh ###-------------------------------- ### --- ATTENTION : script en zsh