237 lines
10 KiB
Perl
Executable file
237 lines
10 KiB
Perl
Executable file
#!/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(<HER_REF>)
|
|
{
|
|
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(<HER_TEST>)
|
|
{
|
|
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(<LIS_REF>)
|
|
{
|
|
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(<LIS_TEST>)
|
|
{
|
|
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");
|
|
|