#!/usr/bin/env perl use strict; use warnings; ############################################################################################### # Script pour une comparaison entre deux fichiers de même extension # # Auteur: Erwan KERGOURLAY # # Script qui compare un fichier de références avec le fichier résultat sortit par Herezh # ############################################################################################### my $version = "1."; #------------------- écriture de l'entete à l'écran -----------------# print ("\n"); print ("\n" . '#############################################################################'); print ("\n" . '# #'); print ("\n" . '# comparaison.pl #'); print ("\n" . '#############################################################################'); print ("\n" . '# licence GPL, erwan.kergourlay@univ-ubs.fr #'); print ("\n" . '# #'); print ("\n" . '# version '."$version".' #'); print ("\n" . '#############################################################################'); print ("\n\n\n"); #------------------- fin écriture de l'entete à l'écran -----------------# my $HZ=$ARGV[0]; print("La version d'herezh testée est: $HZ \n"); #------------------- déclaration des variables -----------------# my $valeur; #**Déclaration des variables qui contiennent les fichiers de références**# #------------------------------------------------------------------------# my $fichier_her_ref = "cube_soude_nevez.her.ref1"; my $fichier_lis_ref = "cube_soude_nevez.lis.ref1"; #------------------------------------------------------------------------# #**Déclaration des variables qui contiennent les fichiers résultats sortis par Herezh**# #------------------------------------------------------------------------# #**Avec vérification que le fichier existe, sinon une erreure est générée et la comparaison ne peut pas être faites**# #**Utilisation de l'opérateur de comparaison de chaînes de caractère**# #------------------------------------------------------------------------# my $fichier_her_test = "cube_soude_nevez.her"; my $fichier_lis_test = "cube_soude_nevez.lis"; if( -e "$fichier_her_test" && -e "$fichier_lis_test") #commande -e permet de voir si le fichier existe { #print("Les fichiers .her et .lis ont été créés lors du test de la version d'Herezh \n"); $valeur=0; } else { #print("Les fichiers .her et .lis n'ont pas été créés lors du test de la version d'Herezh \n"); $valeur=1; } #**Déclaration des fichiers temporaires*# #------------------------------------------------------------------------# my $fichier_temp_her_ref = "fichier_temp_her_ref.txt"; my $fichier_temp_her_test = "fichier_temp_her_test.txt"; my $fichier_temp_lis_ref = "fichier_temp_lis_ref.txt"; my $fichier_temp_lis_test = "fichier_temp_lis_test.txt"; #------------------- fin déclaration des variables -----------------# #------------------- programme de comparaison -----------------# if($valeur==0) { #---On commence par faire une lecture du fichier .her de référence et le fichier .her de test---# #---On extrait de ces fichiers uniquement les parties données puis on va les comparer entre-elles par rapport à des fichiers temporaires---# open (HER_REF, "$fichier_her_ref"); open (HER_TEST, "$fichier_her_test"); open (FICHIER_TEMP_HER_REF,">$fichier_temp_her_ref"); open (FICHIER_TEMP_HER_TEST,">$fichier_temp_her_test"); while() { my $ligne_ref = $_; #on déclare une variable qui va sauvegarder la ligne en cours chomp($ligne_ref); #on retire à la fin de cette ligne, le retour à la ligne $ligne_ref=~ s/^[ \t]+//mg; #on supprimme toutes les combinaisons de tabulation et d'espace #Si on n'a pas de '#' et 'noeuds' et 'elements', la condition est validée if(index($ligne_ref,'#') == -1 && index($ligne_ref,'noeuds') == -1 && index($ligne_ref,'elements') == -1) { my @tab_ref = split (/\s+/,$ligne_ref); if(defined($tab_ref[0])) { print FICHIER_TEMP_HER_REF ("@tab_ref \n"); } } } close FICHIER_TEMP_HER_REF; close HER_REF; while() { my $ligne_test = $_; chomp($ligne_test); $ligne_test=~ s/^[ \t]+//mg; if(index($ligne_test,'#') == -1 && index($ligne_test,'noeuds') == -1 && index($ligne_test,'elements') == -1) { my @tab_test = split (/\s+/,$ligne_test); if(defined($tab_test[0])) { print FICHIER_TEMP_HER_TEST ("@tab_test \n"); } } } close FICHIER_TEMP_HER_TEST; close HER_TEST; #---On commence par faire une lecture du fichier .lis de référence et le fichier .lis de test---# #---On extrait de ces fichiers uniquement les parties données puis on va les comparer entre-elles par rapport à des fichiers temporaires---# open (LIS_REF, "$fichier_lis_ref"); open (LIS_TEST, "$fichier_lis_test"); open (FICHIER_TEMP_LIS_REF,">$fichier_temp_lis_ref"); open (FICHIER_TEMP_LIS_TEST,">$fichier_temp_lis_test"); while() { my $ligne_ref = $_; #on déclare une variable qui va sauvegarder la ligne en cours chomp($ligne_ref); #on retire à la fin de cette ligne, le retour à la ligne $ligne_ref=~ s/^[ \t]+//mg; #on supprimme toutes les combinaisons de tabulation et d'espace #Si on n'a pas de '#' et 'noeuds' et 'elements', la condition est validée if(index($ligne_ref,'#') == -1) { my @tab_ref = split (/\s+/,$ligne_ref); if(defined($tab_ref[0])) { print FICHIER_TEMP_LIS_REF ("@tab_ref \n"); } } } close FICHIER_TEMP_LIS_REF; close LIS_REF; while() { my $ligne_test = $_; chomp($ligne_test); $ligne_test=~ s/^[ \t]+//mg; if(index($ligne_test,'#') == -1) { my @tab_test = split (/\s+/,$ligne_test); if(defined($tab_test[0])) { print FICHIER_TEMP_LIS_TEST ("@tab_test \n"); } } } close FICHIER_TEMP_LIS_TEST; close LIS_TEST; #---On verifie si les deux fichiers .her sont identiques---# system ("cmp $fichier_temp_her_test $fichier_temp_her_ref"); if ( $? == 0 ) { print("Les deux fichiers .her sont identiques\n"); $valeur=$valeur+2; #on ajoute 2 dans le cas où le fichier .her est correct } elsif ( $? != 0 ) { print("Les deux fichiers .her sont différents\n"); $valeur=$valeur+1; #on ajoute 1 dans le cas où le fichier .her est incorrect } #---On verifie si les deux fichiers .lis sont identiques---# system ("cmp $fichier_temp_lis_test $fichier_temp_lis_ref"); if ( $? == 0 ) { print("Les deux fichiers .lis sont identiques\n"); $valeur=$valeur+3; #on ajoute 3 dans le cas où le fichier .lis est correct } elsif ( $? != 0 ) { print("Les deux fichiers .lis sont différents\n"); $valeur=$valeur+1; #on ajoute 1 dans le cas où le fichier .lis est incorrect } } #------------------- Fin programme de comparaison -----------------# #------------------- Bilan comparaison fichier -----------------# #----Remarques----# # Si valeur=1, alors les nouveaux fichiers .her et .lis n'ont pas été créés. # Si valeur=2, alors le fichier .her et le fichier .lis sont incorrects. # Si valeur=3, alors le fichier .her est correct mais le fichier .lis est incorrect. # Si valeur=4, alors le fichier .her est incorrect mais le fichier .lis est correct. # Si valeur=5, alors les deux fichiers sont corrects #----Fin remarques----# if($valeur==1) { print("Les fichiers $fichier_her_test et $fichier_lis_test n'ont pas été créés avec la version d'herezh testée: $HZ\n"); print ("resultat verification: ECHEC\n"); } elsif($valeur==2) { print("Le fichier $fichier_her_test a bien été créé mais son contenu est différent du fichier $fichier_her_ref et le fichier $fichier_lis_test a bien été créé mais son contenu est différent du fichier $fichier_lis_ref\n"); print ("resultat verification: ECHEC\n"); } elsif($valeur==3) { print("Le fichier $fichier_her_test a bien été créé et son contenu est similaire au fichier $fichier_her_ref mais le fichier $fichier_lis_test a bien été créé mais son contenu est différent du fichier $fichier_lis_ref\n"); print ("resultat verification: ECHEC\n"); } elsif($valeur==4) { print("Le fichier $fichier_her_test a bien été créé mais son contenu est différent du fichier $fichier_her_ref et le fichier $fichier_lis_test a bien été créé et son contenu est similaire au fichier $fichier_lis_ref\n"); print ("resultat verification: ECHEC\n"); } elsif($valeur==5) { print("Le fichier $fichier_her_test a bien été créé et son contenu est similaire au fichier $fichier_her_ref et le fichier $fichier_lis_test a bien été créé et son contenu est similaire au fichier $fichier_lis_ref\n"); print ("resultat verification: OK\n"); } #------------------- Fin bilan comparaison fichier -----------------# #------------------- Ménage dans le répertoire -----------------# system ("rm -f $fichier_her_test $fichier_lis_test $fichier_temp_her_test $fichier_temp_her_ref $fichier_temp_lis_test $fichier_temp_lis_ref");