From 9ce547e19593c487e51765c8d51b5548580d2790 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Tue, 28 Jun 2016 13:07:13 +0200 Subject: [PATCH] =?UTF-8?q?Test=20upgrade,=20public,=20priv=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check_process | 35 +---- package_check.sh | 139 +++++++++++-------- sub_scripts/testing_process.sh | 238 ++++++++++++++++++++++++++------- 3 files changed, 277 insertions(+), 135 deletions(-) diff --git a/check_process b/check_process index b65cef1..fde850a 100644 --- a/check_process +++ b/check_process @@ -1,33 +1,12 @@ ## Nom du 1er scénario de test + auto_remove=1 # Manifest - domain="$DOMAIN" - path="$PATH" - admin="$USER" - language="en_EN" - is_public="No" - password="$PASSWORD" - port="666" - # Checks - setup_sub_dir=1 - setup_root=1 - setup_nourl=0 - setup_private=1 - setup_public=1 - wrong_user=1 - wrong_path=1 - incorrect_path=1 - corrupt_source=1 - fail_download_source=1 - port_already_use=1 - final_path_already_use=1 -## Nom du 2e scénario de test - # Manifest - domain="$DOMAIN" - path="$PATH" - admin="$USER" - language="en_EN" - is_public="Yes" - password="$PASSWORD" + domain="$DOMAIN" (DOMAIN) + path="$PATH" (PATH) + admin="$USER" (USER) + language="fr" + is_public="No" (PUBLIC|public=Yes|private=No) + password="$PASSWORD" (PASSWORD) port="666" # Checks setup_sub_dir=1 diff --git a/package_check.sh b/package_check.sh index 8901c27..782e8f0 100755 --- a/package_check.sh +++ b/package_check.sh @@ -27,7 +27,8 @@ APP_CHECK=$1 # Vérifie l'existence du fichier check_process if [ ! -e $APP_CHECK/check_process ]; then - echo "Impossible de trouver le fichier check_process pour procéder aux tests." + echo -e "\nImpossible de trouver le fichier check_process pour procéder aux tests." + echo "Merci d'ajouter un fichier check_process à la racine de l'app à tester." exit 1 fi @@ -53,8 +54,12 @@ GLOBAL_CHECK_FINALPATH=0 IN_PROCESS=0 MANIFEST=0 CHECKS=0 +AUTO_REMOVE=1 while read LIGNE do + if echo "$LIGNE" | grep -q "auto_remove="; then # Indication d'auto remove + auto_remove=$(echo "$LIGNE" | cut -d '=' -f2) + fi if echo "$LIGNE" | grep -q "^##"; then # Début d'un scénario de test if [ "$IN_PROCESS" -eq 1 ]; then # Un scénario est déjà en cours. Donc on a atteind la fin du scénario. TESTING_PROCESS @@ -86,6 +91,28 @@ do if [ "$MANIFEST" -eq 1 ] then # Analyse des arguments du manifest if echo "$LIGNE" | grep -q "="; then + if echo "$LIGNE" | grep -q "(DOMAIN)"; then # Domaine dans le manifest + MANIFEST_DOMAIN=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant au domaine + LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne + fi + if echo "$LIGNE" | grep -q "(PATH)"; then # Path dans le manifest + MANIFEST_PATH=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant au path + LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne + fi + if echo "$LIGNE" | grep -q "(USER)"; then # User dans le manifest + MANIFEST_USER=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant à l'utilisateur + LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne + fi + if echo "$LIGNE" | grep -q "(PUBLIC"; then # Accès public/privé dans le manifest + MANIFEST_PUBLIC=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant à l'accès public ou privé + MANIFEST_PUBLIC_public=$(echo "$LIGNE" | grep -o "|public=[a-Z]*" | cut -d "=" -f2) # Récupère la valeur pour un accès public. + MANIFEST_PUBLIC_private=$(echo "$LIGNE" | grep -o "|private=[a-Z]*" | cut -d "=" -f2) # Récupère la valeur pour un accès privé. + LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne + fi + if echo "$LIGNE" | grep -q "(PASSWORD)"; then # Password dans le manifest + MANIFEST_PASSWORD=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant au mot de passe + LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne + fi if [ "${#MANIFEST_ARGS}" -gt 0 ]; then # Si il y a déjà des arguments MANIFEST_ARGS="$MANIFEST_ARGS&" #, précède de & fi @@ -137,164 +164,164 @@ done < "$APP_CHECK/check_process" TESTING_PROCESS -ECHO_FORMAT "Installation: " +ECHO_FORMAT "\n\nInstallation: " if [ "$GLOBAL_CHECK_SETUP" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_SETUP" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Installation en sous-dossier: " if [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_SUB_DIR" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Installation à la racine: " if [ "$GLOBAL_CHECK_ROOT" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_ROOT" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Suppression: " if [ "$GLOBAL_CHECK_REMOVE" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_REMOVE" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Suppression depuis sous-dossier: " if [ "$GLOBAL_CHECK_REMOVE_SUBDIR" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_REMOVE_SUBDIR" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\tNot evaluated.\n" "white" fi ECHO_FORMAT "Suppression depuis racine: " if [ "$GLOBAL_CHECK_REMOVE_ROOT" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_REMOVE_ROOT" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Upgrade: " if [ "$GLOBAL_CHECK_UPGRADE" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_UPGRADE" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Backup: " if [ "$GLOBAL_CHECK_BACKUP" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_BACKUP" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Restore: " if [ "$GLOBAL_CHECK_RESTORE" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_RESTORE" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Installation privée: " if [ "$GLOBAL_CHECK_PRIVATE" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_PRIVATE" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Installation publique: " if [ "$GLOBAL_CHECK_PUBLIC" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_PUBLIC" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Mauvais utilisateur: " if [ "$GLOBAL_CHECK_ADMIN" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_ADMIN" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Erreur de domaine: " if [ "$GLOBAL_CHECK_DOMAIN" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_DOMAIN" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Correction de path: " if [ "$GLOBAL_CHECK_PATH" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_PATH" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Source corrompue: " if [ "$GLOBAL_CHECK_CORRUPT" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_CORRUPT" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Erreur de téléchargement de la source: " if [ "$GLOBAL_CHECK_DL" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_DL" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\tNot evaluated.\n" "white" fi ECHO_FORMAT "Port déjà utilisé: " if [ "$GLOBAL_CHECK_PORT" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_PORT" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi ECHO_FORMAT "Dossier déjà utilisé: " if [ "$GLOBAL_CHECK_FINALPATH" -eq 1 ]; then - ECHO_FORMAT "SUCCESS\n" "lgreen" + ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen" elif [ "$GLOBAL_CHECK_FINALPATH" -eq -1 ]; then - ECHO_FORMAT "FAIL\n" "lred" + ECHO_FORMAT "\t\t\tFAIL\n" "lred" else - ECHO_FORMAT "Not evaluated.\n" "white" + ECHO_FORMAT "\t\t\tNot evaluated.\n" "white" fi diff --git a/sub_scripts/testing_process.sh b/sub_scripts/testing_process.sh index b1eaf5b..18eea74 100644 --- a/sub_scripts/testing_process.sh +++ b/sub_scripts/testing_process.sh @@ -9,17 +9,24 @@ source $abs_path/sub_scripts/log_extractor.sh echo -n "" > $RESULT # Initialise le fichier des résulats d'analyse SETUP_APP () { -# echo -e "\nMANIFEST_ARGS=$MANIFEST_ARGS_MOD\n" +# echo -e "MANIFEST_ARGS=$MANIFEST_ARGS_MOD" + COPY_LOG 1 sudo yunohost --debug app install $APP_CHECK -a "$MANIFEST_ARGS_MOD" > /dev/null 2>&1 YUNOHOST_RESULT=$? + COPY_LOG 2 + APPID=$(grep -o "YNH_APP_INSTANCE_NAME=[^ ]*" "$OUTPUTD" | cut -d '=' -f2) # Récupère le nom de l'app au moment de l'install. Pour pouvoir le réutiliser dans les commandes yunohost. La regex matche tout ce qui suit le =, jusqu'à l'espace. } REMOVE_APP () { + ECHO_FORMAT "\nSuppression...\n" "white" "bold" + COPY_LOG 1 sudo yunohost --debug app remove $APPID > /dev/null 2>&1 YUNOHOST_REMOVE=$? + COPY_LOG 2 } CHECK_URL () { + ECHO_FORMAT "\nAccès par l'url...\n" "white" "bold" echo "127.0.0.1 $DOMAIN #package_check" | sudo tee -a /etc/hosts > /dev/null # Renseigne le hosts pour le domain à tester, pour passer directement sur localhost curl -LksS $DOMAIN/$CHECK_PATH -o url_output URL_TITLE=$(grep "" url_output | cut -d '>' -f 2 | cut -d '<' -f1) @@ -39,13 +46,12 @@ CHECK_URL () { CHECK_SETUP_SUBDIR () { # Test d'installation en sous-dossier - ECHO_FORMAT "\n>>Installation en sous-dossier...\n" "white" "bold" + ECHO_FORMAT "\n>> Installation en sous-dossier...\n" "white" "bold" MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$DOMAIN'/"$DOMAIN"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PATH'/"$PATH_TEST"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$USER'/"$USER_TEST"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PASSWORD'/"$PASSWORD_TEST"} - COPY_LOG 1 + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_DOMAIN=[a-Z./-$]*\&/$MANIFEST_DOMAIN=$DOMAIN\&/") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=$PATH_TEST\&@") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_USER=[a-Z/-$]*\&@$MANIFEST_USER=$USER_TEST\&@") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PASSWORD=[a-Z$]*\&/$MANIFEST_PASSWORD=$PASSWORD_TEST\&/") # Installation de l'app SETUP_APP if [ "$YUNOHOST_RESULT" -eq 0 ]; then @@ -59,43 +65,37 @@ CHECK_SETUP_SUBDIR () { fi GLOBAL_CHECK_SUB_DIR=-1 # Installation en sous-dossier échouée fi - COPY_LOG 2 LOG_EXTRACTOR - APPID=$(grep -o "YNH_APP_INSTANCE_NAME=[^ ]*" "$OUTPUTD" | cut -d '=' -f2) # Récupère le nom de l'app au moment de l'install. Pour pouvoir le réutiliser dans les commandes yunohost. La regex matche tout ce qui suit le =, jusqu'à l'espace. - ECHO_FORMAT "\nAccès par l'url...\n" "white" "bold" # Test l'accès à l'app CHECK_PATH=$PATH_TEST CHECK_URL - COPY_LOG 1 - ECHO_FORMAT "\nSuppression...\n" "white" "bold" # Suppression de l'app REMOVE_APP if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression then if [ "$YUNOHOST_REMOVE" -eq 0 ]; then ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" - GLOBAL_CHECK_REMOVE_SUBDIR=1 # Suppression réussie + GLOBAL_CHECK_REMOVE_SUBDIR=1 # Suppression en sous-dossier réussie + GLOBAL_CHECK_REMOVE=1 # Suppression réussie else ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" if [ "$GLOBAL_CHECK_REMOVE" -ne 1 ]; then GLOBAL_CHECK_REMOVE=-1 # Suppression échouée fi - GLOBAL_CHECK_REMOVE_SUBDIR=-1 # Suppression échouée + GLOBAL_CHECK_REMOVE_SUBDIR=-1 # Suppression en sous-dossier échouée fi - COPY_LOG 2 LOG_EXTRACTOR fi } CHECK_SETUP_ROOT () { # Test d'installation à la racine - ECHO_FORMAT "\n>>Installation à la racine...\n" "white" "bold" + ECHO_FORMAT "\n>> Installation à la racine...\n" "white" "bold" MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$DOMAIN'/"$DOMAIN"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PATH'/"$PATH_TEST"} # Domain et path ne devrait théoriquement pas être utilisés - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$USER'/"$USER_TEST"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PASSWORD'/"$PASSWORD_TEST"} - COPY_LOG 1 + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_DOMAIN=[a-Z./-$]*\&/$MANIFEST_DOMAIN=$DOMAIN\&/") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=/\&@") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_USER=[a-Z/-$]*\&@$MANIFEST_USER=$USER_TEST\&@") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PASSWORD=[a-Z$]*\&/$MANIFEST_PASSWORD=$PASSWORD_TEST\&/") # Installation de l'app SETUP_APP if [ "$YUNOHOST_RESULT" -eq 0 ]; then @@ -109,43 +109,37 @@ CHECK_SETUP_ROOT () { fi GLOBAL_CHECK_ROOT=-1 # Installation à la racine échouée fi - COPY_LOG 2 LOG_EXTRACTOR - APPID=$(grep -o "YNH_APP_INSTANCE_NAME=[^ ]*" "$OUTPUTD" | cut -d '=' -f2) # Récupère le nom de l'app au moment de l'install. Pour pouvoir le réutiliser dans les commandes yunohost. La regex matche tout ce qui suit le =, jusqu'à l'espace. - ECHO_FORMAT "\nAccès par l'url...\n" "white" "bold" # Test l'accès à l'app CHECK_PATH="/" CHECK_URL - COPY_LOG 1 - ECHO_FORMAT "\nSuppression...\n" "white" "bold" # Suppression de l'app REMOVE_APP if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression then if [ "$YUNOHOST_REMOVE" -eq 0 ]; then ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" - GLOBAL_CHECK_REMOVE_ROOT=1 # Suppression réussie + GLOBAL_CHECK_REMOVE_ROOT=1 # Suppression à la racine réussie + GLOBAL_CHECK_REMOVE=1 # Suppression réussie else ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" if [ "$GLOBAL_CHECK_REMOVE" -ne 1 ]; then GLOBAL_CHECK_REMOVE=-1 # Suppression échouée fi - GLOBAL_CHECK_REMOVE_ROOT=-1 # Suppression échouée + GLOBAL_CHECK_REMOVE_ROOT=-1 # Suppression à la racine échouée fi - COPY_LOG 2 LOG_EXTRACTOR fi } CHECK_SETUP_NO_URL () { # Test d'installation sans accès par url - ECHO_FORMAT "\n>>Installation sans accès par url...\n" "white" "bold" + ECHO_FORMAT "\n>> Installation sans accès par url...\n" "white" "bold" MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$DOMAIN'/"$DOMAIN"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PATH'/"/"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$USER'/"$USER_TEST"} - MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PASSWORD'/"$PASSWORD_TEST"} - COPY_LOG 1 + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_DOMAIN=[a-Z./-$]*\&/$MANIFEST_DOMAIN=$DOMAIN\&/") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=$PATH_TEST\&@") # Domain et path ne devrait théoriquement pas être utilisés + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_USER=[a-Z/-$]*\&@$MANIFEST_USER=$USER_TEST\&@") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PASSWORD=[a-Z$]*\&/$MANIFEST_PASSWORD=$PASSWORD_TEST\&/") # Installation de l'app SETUP_APP if [ "$YUNOHOST_RESULT" -eq 0 ]; then @@ -157,11 +151,7 @@ CHECK_SETUP_NO_URL () { GLOBAL_CHECK_SETUP=-1 # Installation échouée fi fi - COPY_LOG 2 LOG_EXTRACTOR - APPID=$(grep -o "YNH_APP_INSTANCE_NAME=[^ ]*" "$OUTPUTD" | cut -d '=' -f2) # Récupère le nom de l'app au moment de l'install. Pour pouvoir le réutiliser dans les commandes yunohost. La regex matche tout ce qui suit le =, jusqu'à l'espace. - COPY_LOG 1 - ECHO_FORMAT "\nSuppression...\n" "white" "bold" # Suppression de l'app REMOVE_APP if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression @@ -176,56 +166,202 @@ CHECK_SETUP_NO_URL () { fi GLOBAL_CHECK_REMOVE_ROOT=-1 # Suppression échouée fi - COPY_LOG 2 LOG_EXTRACTOR fi } CHECK_UPGRADE () { -echo "Non implémenté" -# GLOBAL_CHECK_UPGRADE=0 + # Test d'upgrade + ECHO_FORMAT "\n>> Upgrade...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + return; + fi + MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_DOMAIN=[a-Z./-$]*\&/$MANIFEST_DOMAIN=$DOMAIN\&/") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_USER=[a-Z/-$]*\&@$MANIFEST_USER=$USER_TEST\&@") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PASSWORD=[a-Z$]*\&/$MANIFEST_PASSWORD=$PASSWORD_TEST\&/") + if [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ]; then # Si l'install en sub_dir à fonctionné. Utilise ce mode d'installation + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=$PATH_TEST\&@") + CHECK_PATH="$PATH_TEST" + elif [ "$GLOBAL_CHECK_ROOT" -eq 1 ]; then # Sinon utilise une install root, si elle a fonctionné + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=/\&@") + CHECK_PATH="/" + else + echo "Aucun mode d'installation n'a fonctionné, impossible d'effectuer ce test..." + return; + fi + ECHO_FORMAT "\nInstallation préalable..." "white" "bold" + # Installation de l'app + SETUP_APP + ECHO_FORMAT "\nUpgrade sur la même version du package...\n" "white" "bold" + # Upgrade de l'app + COPY_LOG 1 + sudo yunohost --debug app upgrade $APPID -f $APP_CHECK > /dev/null 2>&1 + YUNOHOST_RESULT=$? + COPY_LOG 2 + if [ "$YUNOHOST_RESULT" -eq 0 ]; then + ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" + GLOBAL_CHECK_UPGRADE=1 # Upgrade réussie + else + ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" + GLOBAL_CHECK_UPGRADE=-1 # Upgrade échouée + fi + LOG_EXTRACTOR + # Test l'accès à l'app + CHECK_URL + # Suppression de l'app + REMOVE_APP } + CHECK_BACKUP () { + # Test de backup + ECHO_FORMAT "\n>> Backup...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_BACKUP=0 } CHECK_RESTORE () { + # Test de restore + ECHO_FORMAT "\n>> Restore...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_RESTORE=0 } -CHECK_PRIVATE () { -echo "Non implémenté" -# GLOBAL_CHECK_PRIVATE=0 -} -CHECK_PUBLIC () { -echo "Non implémenté" -# GLOBAL_CHECK_PUBLIC=0 + +CHECK_PUBLIC_PRIVATE () { + # Test d'installation en public/privé + if [ "$1" == "private" ]; then + ECHO_FORMAT "\n>> Installation privée...\n" "white" "bold" + fi + if [ "$1" == "public" ]; then + ECHO_FORMAT "\n>> Installation publique...\n" "white" "bold" + fi + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + return; + fi + MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_DOMAIN=[a-Z./-$]*\&/$MANIFEST_DOMAIN=$DOMAIN\&/") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_USER=[a-Z/-$]*\&@$MANIFEST_USER=$USER_TEST\&@") + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PASSWORD=[a-Z$]*\&/$MANIFEST_PASSWORD=$PASSWORD_TEST\&/") + # Choix public/privé + if [ "$1" == "private" ]; then + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PUBLIC=[a-Z]*\&/$MANIFEST_PUBLIC=$MANIFEST_PUBLIC_private\&/") + fi + if [ "$1" == "public" ]; then + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PUBLIC=[a-Z]*\&/$MANIFEST_PUBLIC=$MANIFEST_PUBLIC_public\&/") + fi + if [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ]; then # Si l'install en sub_dir à fonctionné. Utilise ce mode d'installation + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=$PATH_TEST\&@") + CHECK_PATH="$PATH_TEST" + elif [ "$GLOBAL_CHECK_ROOT" -eq 1 ]; then # Sinon utilise une install root, si elle a fonctionné + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=/\&@") + CHECK_PATH="/" + else + echo "Aucun mode d'installation n'a fonctionné, impossible d'effectuer ce test..." + return; + fi + # Installation de l'app + SETUP_APP + # Test l'accès à l'app + CHECK_URL + if [ "$1" == "private" ]; then + if [ "$YUNO_PORTAL" -eq 0 ]; then # En privé, si l'accès url n'arrive pas sur le portail. C'est un échec. + YUNOHOST_RESULT=1 + fi + fi + if [ "$1" == "public" ]; then + if [ "$YUNO_PORTAL" -eq 1 ]; then # En public, si l'accès url arrive sur le portail. C'est un échec. + YUNOHOST_RESULT=1 + fi + fi + if [ "$YUNOHOST_RESULT" -eq 0 ]; then + ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" + if [ "$1" == "private" ]; then + GLOBAL_CHECK_PRIVATE=1 # Installation privée réussie + fi + if [ "$1" == "public" ]; then + GLOBAL_CHECK_PUBLIC=1 # Installation publique réussie + fi + else + ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" + if [ "$1" == "private" ]; then + GLOBAL_CHECK_PRIVATE=-1 # Installation privée échouée + fi + if [ "$1" == "public" ]; then + GLOBAL_CHECK_PUBLIC=-1 # Installation publique échouée + fi + fi + LOG_EXTRACTOR + # Suppression de l'app + REMOVE_APP } + CHECK_ADMIN () { + # Test d'erreur d'utilisateur + ECHO_FORMAT "\n>> Erreur d'utilisateur...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_ADMIN=0 } CHECK_DOMAIN () { + # Test d'erreur de path ou de domaine + ECHO_FORMAT "\n>> Erreur de domaine...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_DOMAIN=0 } CHECK_PATH () { + # Test d'erreur de forme de path + ECHO_FORMAT "\n>> Path mal formé...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_PATH=0 } CHECK_CORRUPT () { + # Test d'erreur sur source corrompue + ECHO_FORMAT "\n>> Source corrompue après téléchargement...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_CORRUPT=0 } CHECK_DL () { + # Test d'erreur de téléchargement de la source + ECHO_FORMAT "\n>> Erreur de téléchargement de la source...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_DL=0 } CHECK_PORT () { + # Test d'erreur de port + ECHO_FORMAT "\n>> Port déjà utilisé...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_PORT=0 } CHECK_FINALPATH () { + # Test sur final path déjà utilisé. + ECHO_FORMAT "\n>> Final path déjà utilisé...\n" "white" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + echo "L'installation a échouée, impossible d'effectuer ce test..." + fi echo "Non implémenté" # GLOBAL_CHECK_FINALPATH=0 } @@ -246,10 +382,10 @@ TESTING_PROCESS () { CHECK_BACKUP CHECK_RESTORE if [ "$setup_private" -eq 1 ]; then - CHECK_PRIVATE # Test d'installation en privé + CHECK_PUBLIC_PRIVATE private # Test d'installation en privé fi if [ "$setup_public" -eq 1 ]; then - CHECK_PUBLIC # Test d'installation en public + CHECK_PUBLIC_PRIVATE public # Test d'installation en public fi if [ "$wrong_user" -eq 1 ]; then CHECK_ADMIN # Test d'erreur d'utilisateur