diff --git a/notes.odt b/notes.odt index da2bfab..a71b90f 100644 Binary files a/notes.odt and b/notes.odt differ diff --git a/test_git_update.sh b/test_git_update.sh index 3bf741a..ea71bcf 100755 --- a/test_git_update.sh +++ b/test_git_update.sh @@ -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 "" 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 @@ -24,30 +27,26 @@ if [ -d "./$foldername" ]; then do if [ -f "./$foldername/$file" ]; then echo "le fichier $file a bien été importé" - else - echo "le fichier $file n'a pas pu être importé" + else 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 a été importé mais le git checkout n'a pas fonctionné" + 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é" + 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 \ No newline at end of file