script pas clarifie mais avec test 0, 1 et 2
This commit is contained in:
parent
4ec099942c
commit
cfb51089ac
@ -1,21 +1,24 @@
|
||||
#! /bin/bash
|
||||
|
||||
#importer driglibash
|
||||
. driglibash-args
|
||||
# création d'un repo git en ligne leRepo avec dedans un fichier texte et un fichier main.c
|
||||
echo "<execution de test_git_update.sh>"
|
||||
foldername="leRepo" #folder de test
|
||||
filenames=("texte" "main.c") #quand main.c n'est pas compilé
|
||||
lienClonage=ssh://git@git.jean-cloud.net:22529/eleonore/pourTesterGitUpdate.git
|
||||
cloningLink=ssh://git@git.jean-cloud.net:22529/eleonore/pourTesterGitUpdate.git
|
||||
|
||||
#CAS 0 : git cloné dans un dossier vide sans tag
|
||||
#if it exists, delete the folder
|
||||
if [ -d $foldername ]; then
|
||||
rm -rf $foldername
|
||||
run rm -rf $foldername
|
||||
echo "le dossier de test préexistant $foldername a été supprimé"
|
||||
fi
|
||||
cas0="true"
|
||||
mkdir $foldername
|
||||
cd $foldername
|
||||
../git_update.sh $lienClonage
|
||||
cd ..
|
||||
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
|
||||
if [ -d "./$foldername" ]; then
|
||||
@ -25,29 +28,25 @@ if [ -d "./$foldername" ]; then
|
||||
if [ -f "./$foldername/$file" ]; then
|
||||
echo "le fichier $file a bien été importé"
|
||||
else
|
||||
echo "le fichier $file n'a pas pu être importé"
|
||||
cas0="false"
|
||||
echo $cas0
|
||||
exit #or die ?
|
||||
echo "le fichier $file n'a pas pu être importé"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "le dossier $foldername n'a pas pu être créé"
|
||||
cas0="false"
|
||||
echo $cas0
|
||||
exit #ou die ?
|
||||
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
|
||||
fi
|
||||
|
||||
#vérification que l'historique n'a pas été importé
|
||||
cd $foldername
|
||||
run cd $foldername
|
||||
if [ $(git log | grep "commit" | wc -l) -gt 1 ]; then
|
||||
echo "Plus d'un commit a été sauvegardé"
|
||||
cas0="false"
|
||||
elif [ $(git log | grep "commit" | wc -l) = 1 ]; then
|
||||
echo "Seul le dernier commit a été sauvegardé"
|
||||
else
|
||||
cas0="false"
|
||||
echo "Erreur dans le clonage, git log non cohérent"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$cas0" = "true" ]; then
|
||||
@ -55,23 +54,22 @@ if [ "$cas0" = "true" ]; then
|
||||
else
|
||||
echo "Cas de test 0, dans un dossier vide préexistant, sans historique, sans tag : ECHEC"
|
||||
fi
|
||||
cd ..
|
||||
run cd ..
|
||||
|
||||
#CAS 1 : git cloné dans un dossier vide avec tag
|
||||
#if it exists, delete the folder
|
||||
nomBranche=main
|
||||
nomTag=debut
|
||||
if [ -d $foldername ]; then
|
||||
rm -rf $foldername
|
||||
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"
|
||||
mkdir $foldername
|
||||
cd $foldername
|
||||
echo "$(pwd)"
|
||||
../git_update.sh -b $nomBranche -t $nomTag $lienClonage #avec l'option t qui redirige vers un tag
|
||||
cd ..
|
||||
|
||||
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éé"
|
||||
@ -81,20 +79,142 @@ if [ -d "./$foldername" ]; then
|
||||
echo "le fichier $file a bien été importé"
|
||||
else
|
||||
echo "le fichier $file n'a pas pu être importé"
|
||||
cas1=false
|
||||
cas1="false"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "le dossier $filename n'a pas pu être cloné"
|
||||
cas1=false
|
||||
cas1="false"
|
||||
fi
|
||||
|
||||
if [ $(git tag | wc -l) -lt 1 ]; then
|
||||
echo "le tag $tagname n'a pas été importé"
|
||||
elif [ $(cat texte | grep "0.1" | wc -l) -lt 1]; then
|
||||
echo "le tag $tagname n'a pas été importé" #normal, pour l'instant fonctionnalité non-implémentée
|
||||
cas1="false"
|
||||
elif [ $(cat $filenames[0] | grep $keyword | wc -l) -lt 1]; then
|
||||
echo "le tag $tagname a été importé mais le git checkout n'a pas fonctionné"
|
||||
cas1="false"
|
||||
else
|
||||
echo "le tag a été importé et le git checkout $tagname a fonctionné"
|
||||
fi
|
||||
|
||||
if [ "$cas1" = "true" ]; then
|
||||
echo "Cas de test 1, dans un dossier vide préexistant, sans historique, avec tag : OK"
|
||||
else
|
||||
echo "Cas de test 1, dans un dossier vide préexistant, sans historique, avec tag: ECHEC"
|
||||
fi
|
||||
|
||||
#CAS 2 : git cloné dans un dossier git déjà rempli, on souhaite que tout soit écrasé
|
||||
#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
|
||||
filenamesToOverwrite=("texte" "texteHorsGit")
|
||||
nonGitFile=texteHorsGit
|
||||
newFile=main.c
|
||||
|
||||
if [ -d $foldername ]; then #reste d'un test précédent
|
||||
run rm -rf $foldername
|
||||
echo "le dossier de test préexistant $foldername a été supprimé"
|
||||
fi
|
||||
|
||||
if [ -d $foldernameDst ]; then #reste de ce test-ci déjà exécuté
|
||||
run rm -rf $foldernameDst
|
||||
echo "le dossier de test préexistant $foldernameDst a été supprimé"
|
||||
fi
|
||||
|
||||
run mkdir $foldernameDst
|
||||
#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 --recurse-submodules $cloningLink $foldernameDst
|
||||
#on ajoute des fichiers hors Git
|
||||
run touch $foldernameDst/$nonGitFile
|
||||
cas2="true"
|
||||
#on vérifie que l'initialisation est un succès
|
||||
if [ -d "./$foldernameDst" ]; then
|
||||
for file2 in ${filenamesToOverwrite[@]}
|
||||
do
|
||||
if [ ! -f "./$foldernameDst/$file2" ]; then
|
||||
echo "Erreur dans l'initialisation du cas de test 2"
|
||||
die "Problème à régler dans l'initialisation du cas 2 afin de pouvoir conduire le test"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "Erreur dans l'initialisation du cas de test 2"
|
||||
die "Problème à régler dans l'initialisation du cas 2 afin de pouvoir conduire le test"
|
||||
|
||||
fi
|
||||
cd $foldernameDst
|
||||
#commande de clonage dans un dossier préexistant
|
||||
../git_update.sh -b $nomBranche $cloningLink
|
||||
if [ -f $nonGitFile ]; then
|
||||
echo "Le fichier déjà présent qui n'était pas considéré par Git n'a pas été supprimé"
|
||||
cas2="false"
|
||||
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"
|
||||
cas2="false"
|
||||
elif [ ! -f $newFile ]; then
|
||||
echo "Un fichier git préalablement absent du folder n'a pas été importé"
|
||||
cas2="false"
|
||||
fi
|
||||
|
||||
if [ "$cas2" = "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"
|
||||
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"
|
||||
fi
|
||||
cd ..
|
||||
|
||||
#sous-test 2 dossier contenant le même repo dans un état antérieur, on ne garde pas les fichiers hors git
|
||||
if [ -d $foldername ]; then #reste d'un test précédent
|
||||
rm -rf $foldername
|
||||
echo "le dossier de test préexistant $foldername a été supprimé"
|
||||
fi
|
||||
|
||||
if [ -d $foldernameDst ]; then #reste de ce test-ci déjà exécuté
|
||||
rm -rf $foldernameDst
|
||||
echo "le dossier de test préexistant $foldernameDst a été supprimé"
|
||||
fi
|
||||
|
||||
mkdir $foldernameDst
|
||||
#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 --recurse-submodules $cloningLink $foldernameDst
|
||||
#on ajoute des fichiers hors Git
|
||||
touch $foldernameDst/$nonGitFile
|
||||
cas2="true"
|
||||
#on vérifie que l'initialisation est un succès
|
||||
if [ -d "./$foldernameDst" ]; then
|
||||
for file2 in ${filenamesToOverwrite[@]}
|
||||
do
|
||||
if [ ! -f "./$foldernameDst/$file2" ]; then
|
||||
echo "Erreur dans l'initialisation du cas de test 2"
|
||||
exit
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "Erreur dans l'initialisation du cas de test 2"
|
||||
exit
|
||||
fi
|
||||
cd $foldernameDst
|
||||
#commande de clonage dans un dossier préexistant en gardant les fichiers qui étaient là avant
|
||||
../git_update.sh -N -b $nomBranche $cloningLink
|
||||
if [ ! -f $nonGitFile ]; then
|
||||
echo "Le fichier déjà présent qui n'était pas considéré par Git a été supprimé"
|
||||
cas2="false"
|
||||
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"
|
||||
cas2="false"
|
||||
elif [ ! -f $newFile ]; then
|
||||
echo "Un fichier git préalablement absent du folder n'a pas été importé"
|
||||
cas2="false"
|
||||
fi
|
||||
|
||||
if [ "$cas2" = "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"
|
||||
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"
|
||||
fi
|
||||
cd ..
|
||||
|
||||
#to do : tests des submodules
|
||||
#fusionner branch et tag
|
||||
#mettre en place le clonage de tags dans dossier vide
|
||||
#test des compilables
|
||||
#ajouter des run, die, section
|
||||
#mettre en place le choix des tests que l'on fait en exécutant test_git_update
|
Loading…
Reference in New Issue
Block a user