debut de reecriture pas encore fonctionnelle du test de git update
This commit is contained in:
parent
8f709e5084
commit
0d9b713763
@ -1,222 +1,279 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
#importer driglibash
|
#importer driglibash
|
||||||
. driglibash-args
|
. driglibash-base
|
||||||
# création d'un repo git en ligne leRepo avec dedans un fichier texte et un fichier main.c
|
echo "<execution of test_git_update.sh>"
|
||||||
echo "<execution de test_git_update.sh>"
|
|
||||||
foldername="leRepo" #folder de test
|
|
||||||
filenames=("texte" "main.c") #quand main.c n'est pas compilé
|
|
||||||
cloningLink=ssh://git@git.jean-cloud.net:22529/eleonore/pourTesterGitUpdate.git
|
|
||||||
|
|
||||||
#CAS 0 : git cloné dans un dossier vide sans tag
|
REPO_NAME=performance_testing
|
||||||
#if it exists, delete the folder
|
REMOTE_LOCATION=./remote
|
||||||
section TEST0
|
WITH_SUBMODULE="true"
|
||||||
if [ -d $foldername ]; then
|
REMOTE="./remote/performance_testing"
|
||||||
run rm -rf $foldername
|
FILENAMES=("sample0" "sample1")
|
||||||
echo "le dossier de test préexistant $foldername a été supprimé"
|
TAG_NAME=start
|
||||||
|
|
||||||
|
if [ "$WITH_SUBMODULE" = "true" ]; then
|
||||||
|
bash creation_repo.sh -s &> /dev/null
|
||||||
|
else
|
||||||
|
bash creation_repo.sh &> /dev/null
|
||||||
fi
|
fi
|
||||||
cas0="true" #boolean qui suit le succès ou échec du test
|
|
||||||
run mkdir $foldername
|
|
||||||
run cd $foldername
|
|
||||||
run ../git_update.sh $cloningLink
|
|
||||||
run cd ..
|
|
||||||
|
|
||||||
#vérification que leRepo a été cloné et qu'il contient bien les fichiers
|
Help()
|
||||||
if [ -d "./$foldername" ]; then
|
{
|
||||||
echo "le dossier $foldername a été créé"
|
echo "
|
||||||
for file in ${filenames[@]}
|
NAME
|
||||||
|
test_git_update.sh
|
||||||
|
SYNOPSIS
|
||||||
|
test_git_update.sh [-a] [-h] [-n number]
|
||||||
|
OPTIONS
|
||||||
|
-a excutes all the tests.
|
||||||
|
-n number executes test number
|
||||||
|
-h prints the help.
|
||||||
|
DESCRIPTION"
|
||||||
|
}
|
||||||
|
|
||||||
|
cloning_check(){
|
||||||
|
if [ -d "./$REPO_NAME" ]; then
|
||||||
|
echo "$REPO_NAME has been created"
|
||||||
|
cloning_result=0
|
||||||
|
cd ./$REPO_NAME
|
||||||
|
for FILE in ${FILENAMES[@]}
|
||||||
do
|
do
|
||||||
if [ -f "./$foldername/$file" ]; then
|
if [ -f "./$REPO_NAME/$FILE" ]; then
|
||||||
echo "le fichier $file a bien été importé"
|
echo "the file $FILE was correctly imported"
|
||||||
else
|
else
|
||||||
cas0="false"
|
cloning_result=1
|
||||||
echo "le fichier $file n'a pas pu être importé"
|
echo "the file $FILE could not be imported"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
cd ..
|
||||||
else
|
else
|
||||||
cas0="false"
|
cloning_result=1
|
||||||
die "le dossier $foldername n'a pas pu être créé" #die parce qu'il y a un problème à règler hors programme si le script n'a pas pu créer de dossier
|
echo "the folder $REPO_NAME could not be created"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#vérification que l'historique n'a pas été importé
|
history_check(){
|
||||||
run cd $foldername
|
run cd $REPO_NAME
|
||||||
if [ $(git log | grep "commit" | wc -l) -gt 1 ]; then
|
history_result=0
|
||||||
echo "Plus d'un commit a été sauvegardé"
|
if [ $(git log | grep "commit" | wc -l) -gt 1 ]; then
|
||||||
cas0="false"
|
echo "Several commits have been saved"
|
||||||
elif [ $(git log | grep "commit" | wc -l) = 1 ]; then
|
history_result=1
|
||||||
echo "Seul le dernier commit a été sauvegardé"
|
elif [ $(git log | grep "commit" | wc -l) = 1 ]; then
|
||||||
else
|
echo "Only the last commit has been saved"
|
||||||
cas0="false"
|
|
||||||
echo "Erreur dans le clonage, git log non cohérent"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$cas0" = "true" ]; then
|
|
||||||
echo "Cas de test 0, dans un dossier vide préexistant, sans historique, sans tag : OK"
|
|
||||||
else
|
|
||||||
echo "Cas de test 0, dans un dossier vide préexistant, sans historique, sans tag : ECHEC"
|
|
||||||
fi
|
|
||||||
run cd ..
|
|
||||||
|
|
||||||
#CAS 1 : git cloné dans un dossier vide avec tag
|
|
||||||
section TEST1
|
|
||||||
#if it exists, delete the folder
|
|
||||||
if [ -d $foldername ]; then
|
|
||||||
run rm -rf $foldername
|
|
||||||
echo "le dossier de test préexistant $foldername a été supprimé"
|
|
||||||
fi
|
|
||||||
nomBranche=main
|
|
||||||
nomTag=debut
|
|
||||||
keyword=0.1 #expression présente dans le premier fichier au moment du tag mais plus après
|
|
||||||
cas1="true"
|
|
||||||
run mkdir $foldername
|
|
||||||
run cd $foldername
|
|
||||||
run ../git_update.sh -b $nomBranche -t $nomTag $cloningLink #avec l'option t qui redirige vers un tag
|
|
||||||
run cd ..
|
|
||||||
|
|
||||||
if [ -d "./$foldername" ]; then
|
|
||||||
echo "le dossier $filename a bien été créé"
|
|
||||||
for file in ${filenames[@]}
|
|
||||||
do
|
|
||||||
if [ -f "./$foldername/$file" ]; then
|
|
||||||
echo "le fichier $file a bien été importé"
|
|
||||||
else
|
else
|
||||||
echo "le fichier $file n'a pas pu être importé"
|
history_result=1
|
||||||
cas1="false"
|
echo "Cloning error, incoherent git log"
|
||||||
fi
|
fi
|
||||||
done
|
cd ..
|
||||||
else
|
}
|
||||||
echo "le dossier $filename n'a pas pu être cloné"
|
|
||||||
cas1="false"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $(git tag | wc -l) -lt 1 ]; then
|
test0 (){
|
||||||
echo "le tag $tagname n'a pas été importé" #normal, pour l'instant fonctionnalité non-implémentée
|
#CASE 0: git cloned in an empty directory without tag
|
||||||
cas1="false"
|
section TEST0
|
||||||
elif [ $(cat $filenames[0] | grep $keyword | wc -l) -lt 1]; then
|
#if it exists, delete the directory
|
||||||
echo "le tag $tagname a été importé mais le git checkout n'a pas fonctionné"
|
if [ -d $REPO_NAME ]; then
|
||||||
cas1="false"
|
rm -rf $REPO_NAME
|
||||||
else
|
fi
|
||||||
echo "le tag a été importé et le git checkout $tagname a fonctionné"
|
run ./git_update.sh $REMOTE
|
||||||
fi
|
#checks
|
||||||
|
cloning_check
|
||||||
|
history_check
|
||||||
|
case0=$(($history_result+$cloning_result))
|
||||||
|
if [ $case0=0 ]; then
|
||||||
|
echo "case de test 0, dans un dossier vide préexistant, sans historique, sans tag : OK"
|
||||||
|
else
|
||||||
|
echo "case de test 0, dans un dossier vide préexistant, sans historique, sans tag : ECHEC"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if [ "$cas1" = "true" ]; then
|
test1(){
|
||||||
echo "Cas de test 1, dans un dossier vide préexistant, sans historique, avec tag : OK"
|
#CASE 1: git cloned in an empty directory with tag
|
||||||
else
|
section TEST1
|
||||||
echo "Cas de test 1, dans un dossier vide préexistant, sans historique, avec tag: ECHEC"
|
#if it exists, delete the directory
|
||||||
fi
|
if [ -d $REPO_NAME ]; then
|
||||||
|
run rm -rf $REPO_NAME
|
||||||
|
fi
|
||||||
|
run ./git_update.sh -r $TAG_NAME $REMOTE
|
||||||
|
#checks
|
||||||
|
cloning_check
|
||||||
|
history_check
|
||||||
|
tagcheck #à ecrire
|
||||||
|
|
||||||
#CAS 2 : git cloné dans un dossier git déjà rempli, on souhaite que tout soit écrasé
|
case1=
|
||||||
|
if [ "$case1" = "true" ]; then
|
||||||
|
echo "case de test 1, dans un dossier vide préexistant, sans historique, avec tag : OK"
|
||||||
|
else
|
||||||
|
echo "case de test 1, dans un dossier vide préexistant, sans historique, avec tag: ECHEC"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
test2(){
|
||||||
|
#case 2 : git cloné dans un dossier git déjà rempli, on souhaite que tout soit écrasé
|
||||||
section TEST2.1
|
section TEST2.1
|
||||||
#sous-test 1 : dossier contenant le même repo dans un état antérieur, on ne garde pas les fichiers hors git
|
#sous-test 1 : dossier contenant le même repo dans un état antérieur, on ne garde pas les fichiers hors git
|
||||||
foldernameDst=leRepo2 #destination
|
REPO_NAMEDst=leRepo2 #destination
|
||||||
filenamesToOverwrite=("texte" "texteHorsGit")
|
FILENAMESToOverwrite=("texte" "texteHorsGit")
|
||||||
nonGitFile=texteHorsGit
|
nonGitFILE=texteHorsGit
|
||||||
newFile=main.c
|
newFILE=main.c
|
||||||
|
|
||||||
if [ -d $foldername ]; then #reste d'un test précédent
|
if [ -d $REPO_NAME ]; then #reste d'un test précédent
|
||||||
run rm -rf $foldername
|
run rm -rf $REPO_NAME
|
||||||
echo "le dossier de test préexistant $foldername a été supprimé"
|
echo "le dossier de test préexistant $REPO_NAME a été supprimé"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $foldernameDst ]; then #reste de ce test-ci déjà exécuté
|
if [ -d $REPO_NAMEDst ]; then #reste de ce test-ci déjà exécuté
|
||||||
run rm -rf $foldernameDst
|
run rm -rf $REPO_NAMEDst
|
||||||
echo "le dossier de test préexistant $foldernameDst a été supprimé"
|
echo "le dossier de test préexistant $REPO_NAMEDst a été supprimé"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run mkdir $foldernameDst
|
run mkdir $REPO_NAMEDst
|
||||||
#on clone notre repo de test dans un état précédent (grâce au tag début quand on aura la fonctionnalité précédente fonctionnelle)
|
#on clone notre repo de test dans un état précédent (grâce au tag début quand on aura la fonctionnalité précédente fonctionnelle)
|
||||||
run git clone -q --recurse-submodules $cloningLink $foldernameDst
|
run git clone -q --recurse-submodules $REMOTE $REPO_NAMEDst
|
||||||
#on ajoute des fichiers hors Git
|
#on ajoute des fichiers hors Git
|
||||||
run touch $foldernameDst/$nonGitFile
|
run touch $REPO_NAMEDst/$nonGitFILE
|
||||||
cas2="true"
|
case2="true"
|
||||||
#on vérifie que l'initialisation est un succès
|
#on vérifie que l'initialisation est un succès
|
||||||
if [ -d "./$foldernameDst" ]; then
|
if [ -d "./$REPO_NAMEDst" ]; then
|
||||||
for file2 in ${filenamesToOverwrite[@]}
|
for FILE2 in ${FILENAMESToOverwrite[@]}
|
||||||
do
|
do
|
||||||
if [ ! -f "./$foldernameDst/$file2" ]; then
|
if [ ! -f "./$REPO_NAMEDst/$FILE2" ]; then
|
||||||
echo "Erreur dans l'initialisation du cas de test 2"
|
echo "Erreur dans l'initialisation du case de test 2"
|
||||||
die "Problème à régler dans l'initialisation du cas 2 afin de pouvoir conduire le test"
|
die "Problème à régler dans l'initialisation du case 2 afin de pouvoir conduire le test"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "Erreur dans l'initialisation du cas de test 2"
|
echo "Erreur dans l'initialisation du case de test 2"
|
||||||
die "Problème à régler dans l'initialisation du cas 2 afin de pouvoir conduire le test"
|
die "Problème à régler dans l'initialisation du case 2 afin de pouvoir conduire le test"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
cd $foldernameDst
|
cd $REPO_NAMEDst
|
||||||
#commande de clonage dans un dossier préexistant
|
#commande de clonage dans un dossier préexistant
|
||||||
../git_update.sh -b $nomBranche $cloningLink
|
../git_update.sh -b $nomBranche $REMOTE
|
||||||
if [ -f $nonGitFile ]; then
|
if [ -f $nonGitFILE ]; then
|
||||||
echo "Le fichier déjà présent qui n'était pas considéré par Git n'a pas été supprimé"
|
echo "Le fichier déjà présent qui n'était pas considéré par Git n'a pas été supprimé"
|
||||||
cas2="false"
|
case2="false"
|
||||||
elif [ $(cat ${filenamesToOverwrite[0]} | grep $keyword | wc -l) -gt 0 ]; then
|
elif [ $(cat ${FILENAMESToOverwrite[0]} | grep $keyword | wc -l) -gt 0 ]; then
|
||||||
echo "Le fichier git déjà présent n'a pas été changé pour la nouvelle version"
|
echo "Le fichier git déjà présent n'a pas été changé pour la nouvelle version"
|
||||||
cas2="false"
|
case2="false"
|
||||||
elif [ ! -f $newFile ]; then
|
elif [ ! -f $newFILE ]; then
|
||||||
echo "Un fichier git préalablement absent du folder n'a pas été importé"
|
echo "Un fichier git préalablement absent du folder n'a pas été importé"
|
||||||
cas2="false"
|
case2="false"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$cas2" = "true" ]; then
|
if [ "$case2" = "true" ]; then
|
||||||
echo "Cas de test 2 sous-test 1, dans un dossier préexistant du même repo Git dans un état antérieur, sans tag, sans garder de fichier non git : OK"
|
echo "case de test 2 sous-test 1, dans un dossier préexistant du même repo Git dans un état antérieur, sans tag, sans garder de fichier non git : OK"
|
||||||
else
|
else
|
||||||
echo "Cas de test 2 sous-test 1, dans un dossier préexistant du même repo Git dans un état antérieur, sans tag, sans garder de fichier non git: ECHEC"
|
echo "case de test 2 sous-test 1, dans un dossier préexistant du même repo Git dans un état antérieur, sans tag, sans garder de fichier non git: ECHEC"
|
||||||
fi
|
fi
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
#sous-test 2 dossier contenant le même repo dans un état antérieur, on ne garde pas les fichiers hors git
|
#sous-test 2 dossier contenant le même repo dans un état antérieur, on ne garde pas les fichiers hors git
|
||||||
section TEST2.2
|
section TEST2.2
|
||||||
if [ -d $foldername ]; then #reste d'un test précédent
|
if [ -d $REPO_NAME ]; then #reste d'un test précédent
|
||||||
rm -rf $foldername
|
rm -rf $REPO_NAME
|
||||||
echo "le dossier de test préexistant $foldername a été supprimé"
|
echo "le dossier de test préexistant $REPO_NAME a été supprimé"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d $foldernameDst ]; then #reste de ce test-ci déjà exécuté
|
if [ -d $REPO_NAMEDst ]; then #reste de ce test-ci déjà exécuté
|
||||||
rm -rf $foldernameDst
|
rm -rf $REPO_NAMEDst
|
||||||
echo "le dossier de test préexistant $foldernameDst a été supprimé"
|
echo "le dossier de test préexistant $REPO_NAMEDst a été supprimé"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir $foldernameDst
|
mkdir $REPO_NAMEDst
|
||||||
#on clone notre repo de test dans un état précédent (grâce au tag début quand on aura la fonctionnalité précédente fonctionnelle)
|
#on clone notre repo de test dans un état précédent (grâce au tag début quand on aura la fonctionnalité précédente fonctionnelle)
|
||||||
git clone -q --recurse-submodules $cloningLink $foldernameDst
|
git clone -q --recurse-submodules $REMOTE $REPO_NAMEDst
|
||||||
#on ajoute des fichiers hors Git
|
#on ajoute des fichiers hors Git
|
||||||
touch $foldernameDst/$nonGitFile
|
touch $REPO_NAMEDst/$nonGitFILE
|
||||||
cas2="true"
|
case2="true"
|
||||||
#on vérifie que l'initialisation est un succès
|
#on vérifie que l'initialisation est un succès
|
||||||
if [ -d "./$foldernameDst" ]; then
|
if [ -d "./$REPO_NAMEDst" ]; then
|
||||||
for file2 in ${filenamesToOverwrite[@]}
|
for FILE2 in ${FILENAMESToOverwrite[@]}
|
||||||
do
|
do
|
||||||
if [ ! -f "./$foldernameDst/$file2" ]; then
|
if [ ! -f "./$REPO_NAMEDst/$FILE2" ]; then
|
||||||
echo "Erreur dans l'initialisation du cas de test 2"
|
echo "Erreur dans l'initialisation du case de test 2"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "Erreur dans l'initialisation du cas de test 2"
|
echo "Erreur dans l'initialisation du case de test 2"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
cd $foldernameDst
|
cd $REPO_NAMEDst
|
||||||
#commande de clonage dans un dossier préexistant en gardant les fichiers qui étaient là avant
|
#commande de clonage dans un dossier préexistant en gardant les fichiers qui étaient là avant
|
||||||
../git_update.sh -N -b $nomBranche $cloningLink
|
../git_update.sh -N -b $nomBranche $REMOTE
|
||||||
if [ ! -f $nonGitFile ]; then
|
if [ ! -f $nonGitFILE ]; then
|
||||||
echo "Le fichier déjà présent qui n'était pas considéré par Git a été supprimé"
|
echo "Le fichier déjà présent qui n'était pas considéré par Git a été supprimé"
|
||||||
cas2="false"
|
case2="false"
|
||||||
elif [ $(cat ${filenamesToOverwrite[0]} | grep $keyword | wc -l) -gt 0 ]; then
|
elif [ $(cat ${FILENAMESToOverwrite[0]} | grep $keyword | wc -l) -gt 0 ]; then
|
||||||
echo "Le fichier git déjà présent n'a pas été changé pour la nouvelle version"
|
echo "Le fichier git déjà présent n'a pas été changé pour la nouvelle version"
|
||||||
cas2="false"
|
case2="false"
|
||||||
elif [ ! -f $newFile ]; then
|
elif [ ! -f $newFILE ]; then
|
||||||
echo "Un fichier git préalablement absent du folder n'a pas été importé"
|
echo "Un fichier git préalablement absent du folder n'a pas été importé"
|
||||||
cas2="false"
|
case2="false"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$cas2" = "true" ]; then
|
if [ "$case2" = "true" ]; then
|
||||||
echo "Cas de test 2 sous-test 2, dans un dossier préexistant du même repo Git dans un état antérieur, en gardant les fichiers non-git, sans tag : OK"
|
echo "case de test 2 sous-test 2, dans un dossier préexistant du même repo Git dans un état antérieur, en gardant les fichiers non-git, sans tag : OK"
|
||||||
else
|
else
|
||||||
echo "Cas de test 2 sous-test 2, dans un dossier préexistant du même repo Git dans un état antérieur, en gardant les fichiers non-git, sans tag: ECHEC"
|
echo "case de test 2 sous-test 2, dans un dossier préexistant du même repo Git dans un état antérieur, en gardant les fichiers non-git, sans tag: ECHEC"
|
||||||
fi
|
fi
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
#to do : tests des submodules
|
}
|
||||||
#fusionner branch et tag
|
|
||||||
#mettre en place le clonage de tags dans dossier vide
|
|
||||||
#test des compilables
|
while getopts ":hn:a" option; do
|
||||||
#mettre en place le choix des tests que l'on fait en exécutant test_git_update
|
case $option in
|
||||||
|
h) # display Help
|
||||||
|
Help
|
||||||
|
exit;;
|
||||||
|
n)
|
||||||
|
TEST_NUM=$OPTARG;;
|
||||||
|
a)
|
||||||
|
ALL_TESTS=true;;
|
||||||
|
\?) # Invalid option
|
||||||
|
echo "Error: Invalid option here"
|
||||||
|
exit;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$ALL_TESTS" = "true" ]; then
|
||||||
|
test0
|
||||||
|
test1
|
||||||
|
test2
|
||||||
|
test3
|
||||||
|
test4
|
||||||
|
test5
|
||||||
|
test6
|
||||||
|
test7
|
||||||
|
test8
|
||||||
|
test9
|
||||||
|
|
||||||
|
elif [ -n "$TEST_NUM" ]; then
|
||||||
|
case $TEST_NUM in
|
||||||
|
0)
|
||||||
|
test0;;
|
||||||
|
1)
|
||||||
|
test1;;
|
||||||
|
2)
|
||||||
|
test2;;
|
||||||
|
3)
|
||||||
|
test3;;
|
||||||
|
4)
|
||||||
|
test4;;
|
||||||
|
5)
|
||||||
|
test5;;
|
||||||
|
6)
|
||||||
|
test6;;
|
||||||
|
7)
|
||||||
|
test7;;
|
||||||
|
8)
|
||||||
|
test8;;
|
||||||
|
9)
|
||||||
|
test9;;
|
||||||
|
*)
|
||||||
|
echo "Error: Invalid test number"
|
||||||
|
die;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
Help
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user