diff --git a/check_process b/check_process index eff244b..b65cef1 100644 --- a/check_process +++ b/check_process @@ -10,6 +10,7 @@ # Checks setup_sub_dir=1 setup_root=1 + setup_nourl=0 setup_private=1 setup_public=1 wrong_user=1 @@ -31,6 +32,7 @@ # Checks setup_sub_dir=1 setup_root=1 + setup_nourl=0 setup_private=1 setup_public=1 wrong_user=1 diff --git a/leed_ynh/check_process b/leed_ynh/check_process deleted file mode 100644 index eff244b..0000000 --- a/leed_ynh/check_process +++ /dev/null @@ -1,42 +0,0 @@ -## Nom du 1er scénario de test - # 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_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" - port="666" - # Checks - setup_sub_dir=1 - setup_root=1 - 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 diff --git a/package_check.sh b/package_check.sh index 1e78b96..8901c27 100755 --- a/package_check.sh +++ b/package_check.sh @@ -2,14 +2,19 @@ USER_TEST=package_checker PASSWORD_TEST=checker_pwd -# DOMAIN=$(sudo yunohost domain list -l 1 | cut -d" " -f 2) +PATH_TEST=/check +DOMAIN=$(sudo yunohost domain list -l 1 | cut -d" " -f 2) -source sub_scripts/* +abs_path=$(cd $(dirname $0); pwd) # Récupère le chemin absolu du script. + +source $abs_path/sub_scripts/testing_process.sh +source /usr/share/yunohost/helpers # Vérifie l'existence de l'utilisateur de test -# if ! ynh_user_exists "$USER_TEST" ; then # Si il n'existe pas, il faut le créer. -# sudo yunohost user create --firstname $USER_TEST --mail $USER_TEST@$DOMAIN --lastname $USER_TEST --password $PASSWORD_TEST $USER_TEST -# fi +if ! ynh_user_exists "$USER_TEST" ; then # Si il n'existe pas, il faut le créer. + USER_TEST_CLEAN=${USER_TEST//"_"/""} + sudo yunohost user create --firstname "$USER_TEST_CLEAN" --mail "$USER_TEST_CLEAN@$DOMAIN" --lastname "$USER_TEST_CLEAN" --password "$PASSWORD_TEST" "$USER_TEST" +fi # Vérifie le type d'emplacement du package à tester if echo "$1" | grep -Eq "https?:\/\/" @@ -30,18 +35,19 @@ fi GLOBAL_CHECK_SETUP=0 GLOBAL_CHECK_SUB_DIR=0 GLOBAL_CHECK_ROOT=0 -GLOBAL_CHECK_PRIVATE=0 -GLOBAL_CHECK_PUBLIC=0 GLOBAL_CHECK_REMOVE=0 +GLOBAL_CHECK_REMOVE_SUBDIR=0 +GLOBAL_CHECK_REMOVE_ROOT=0 GLOBAL_CHECK_UPGRADE=0 GLOBAL_CHECK_BACKUP=0 GLOBAL_CHECK_RESTORE=0 +GLOBAL_CHECK_PRIVATE=0 +GLOBAL_CHECK_PUBLIC=0 GLOBAL_CHECK_ADMIN=0 GLOBAL_CHECK_DOMAIN=0 GLOBAL_CHECK_PATH=0 GLOBAL_CHECK_CORRUPT=0 GLOBAL_CHECK_DL=0 -GLOBAL_CHECK_=0 GLOBAL_CHECK_PORT=0 GLOBAL_CHECK_FINALPATH=0 IN_PROCESS=0 @@ -56,7 +62,7 @@ do PROCESS_NAME=${LIGNE#\#\# } IN_PROCESS=1 fi - if [ $IN_PROCESS -eq 1 ] + if [ "$IN_PROCESS" -eq 1 ] then # Analyse des arguments du scenario de test if echo "$LIGNE" | grep -q "# Manifest"; then # Arguments du manifest MANIFEST=1 @@ -83,7 +89,7 @@ do if [ "${#MANIFEST_ARGS}" -gt 0 ]; then # Si il y a déjà des arguments MANIFEST_ARGS="$MANIFEST_ARGS&" #, précède de & fi - MANIFEST_ARGS="$MANIFEST_ARGS$(echo $LIGNE | sed 's/ //g')" # Ajoute l'argument du manifest, en retirant les espaces. + MANIFEST_ARGS="$MANIFEST_ARGS$(echo $LIGNE | sed 's/[ \"]//g')" # Ajoute l'argument du manifest, en retirant les espaces et les guillemets. fi fi if [ "$CHECKS" -eq 1 ] @@ -94,6 +100,9 @@ do if echo "$LIGNE" | grep -q "setup_root="; then # Test d'installation à la racine setup_root=$(echo "$LIGNE" | cut -d '=' -f2) fi + if echo "$LIGNE" | grep -q "setup_nourl="; then # Test d'installation sans accès par url + setup_nourl=$(echo "$LIGNE" | cut -d '=' -f2) + fi if echo "$LIGNE" | grep -q "setup_private="; then # Test d'installation en privé setup_private=$(echo "$LIGNE" | cut -d '=' -f2) fi @@ -121,11 +130,171 @@ do if echo "$LIGNE" | grep -q "final_path_already_use="; then # Test sur final path déjà utilisé. final_path_already_use=$(echo "$LIGNE" | cut -d '=' -f2) fi - - fi fi done < "$APP_CHECK/check_process" TESTING_PROCESS + +ECHO_FORMAT "Installation: " +if [ "$GLOBAL_CHECK_SETUP" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_SETUP" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Installation en sous-dossier: " +if [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_SUB_DIR" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Installation à la racine: " +if [ "$GLOBAL_CHECK_ROOT" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_ROOT" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Suppression: " +if [ "$GLOBAL_CHECK_REMOVE" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_REMOVE" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Suppression depuis sous-dossier: " +if [ "$GLOBAL_CHECK_REMOVE_SUBDIR" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_REMOVE_SUBDIR" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Suppression depuis racine: " +if [ "$GLOBAL_CHECK_REMOVE_ROOT" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_REMOVE_ROOT" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Upgrade: " +if [ "$GLOBAL_CHECK_UPGRADE" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_UPGRADE" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Backup: " +if [ "$GLOBAL_CHECK_BACKUP" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_BACKUP" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Restore: " +if [ "$GLOBAL_CHECK_RESTORE" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_RESTORE" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Installation privée: " +if [ "$GLOBAL_CHECK_PRIVATE" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_PRIVATE" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Installation publique: " +if [ "$GLOBAL_CHECK_PUBLIC" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_PUBLIC" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Mauvais utilisateur: " +if [ "$GLOBAL_CHECK_ADMIN" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_ADMIN" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Erreur de domaine: " +if [ "$GLOBAL_CHECK_DOMAIN" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_DOMAIN" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Correction de path: " +if [ "$GLOBAL_CHECK_PATH" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_PATH" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Source corrompue: " +if [ "$GLOBAL_CHECK_CORRUPT" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_CORRUPT" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not 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" +elif [ "$GLOBAL_CHECK_DL" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Port déjà utilisé: " +if [ "$GLOBAL_CHECK_PORT" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_PORT" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi + +ECHO_FORMAT "Dossier déjà utilisé: " +if [ "$GLOBAL_CHECK_FINALPATH" -eq 1 ]; then + ECHO_FORMAT "SUCCESS\n" "lgreen" +elif [ "$GLOBAL_CHECK_FINALPATH" -eq -1 ]; then + ECHO_FORMAT "FAIL\n" "lred" +else + ECHO_FORMAT "Not evaluated.\n" "white" +fi diff --git a/sub_scripts/log_extractor.sh b/sub_scripts/log_extractor.sh new file mode 100644 index 0000000..7f97ba5 --- /dev/null +++ b/sub_scripts/log_extractor.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +OUTPUTD="debug_output" +YUNOHOST_LOG="/var/log/yunohost/yunohost-cli.log" + +echo "Chargement des fonctions de log_extractor.sh" + +ECHO_FORMAT () { + if [ "$2" == "red" ]; then + echo -en "\e[91m" + fi + if [ "$2" == "lyellow" ]; then + echo -en "\e[93m" + fi + if [ "$2" == "lred" ]; then + echo -en "\e[91m" + fi + if [ "$2" == "lgreen" ]; then + echo -en "\e[92m" + fi + if [ "$2" == "white" ]; then + echo -en "\e[97m" + fi + if [ "$3" == "bold" ]; then + echo -en "\e[1m" + fi + if [ "$3" == "underlined" ]; then + echo -en "\e[4m" + fi + echo -en "$1" | tee -a $RESULT + echo -en "\e[0m" +} + +COPY_LOG () { + if [ "$1" -eq 1 ]; then + log_line=$(sudo wc -l "$YUNOHOST_LOG" | cut -d ' ' -f 1) # Compte le nombre de ligne du fichier de log Yunohost + log_line=$(( $log_line + 1 )) # Ignore la première ligne, reprise de l'ancien log. + fi + if [ "$1" -eq 2 ]; then + sudo tail -n +$log_line "$YUNOHOST_LOG" > "$OUTPUTD" # Copie le fichier de log à partir de la dernière ligne du log préexistant + fi +} + +PARSE_LOG () { + while read LOG_LIGNE_TEMP + do # Lit le log pour extraire les warning et les erreurs. + if echo "$LOG_LIGNE_TEMP" | grep -q "^>ERROR: "; then + ECHO_FORMAT "Error:" "red" "underlined" + ECHO_FORMAT " $(echo "$LOG_LIGNE_TEMP\n" | sed 's/^>ERROR: //')" "red" + fi + if echo "$LOG_LIGNE_TEMP" | grep -q "^>WARNING: "; then + ECHO_FORMAT "Warning:" "lyellow" "underlined" + ECHO_FORMAT " $(echo "$LOG_LIGNE_TEMP\n" | sed 's/^>WARNING: //')" "lyellow" + fi + done < "temp_$RESULT" +} + +CLEAR_LOG () { + # Élimine les warning parasites connus et identifiables facilement. + sed -i '/^>WARNING: yunohost\.hook - \[[0-9.]*\] ?$/d' "temp_$RESULT" # Ligne de warning vide précédant et suivant la progression d'un wget + sed -i '/^>WARNING: yunohost\.hook - \[[0-9.]*\] *[0-9]*K \.* /d' "temp_$RESULT" # Ligne de warning de progression d'un wget + sed -i '/% Total % Received % Xferd/d' "temp_$RESULT" # Ligne de warning des statistiques d'un wget + sed -i '/Dload Upload Total Spent/d' "temp_$RESULT" # 2e ligne de warning des statistiques d'un wget + sed -i '/--:--:-- --:--:-- --:--:--/d' "temp_$RESULT" # 3e ligne de warning des statistiques d'un wget + sed -i '/^$/d' "temp_$RESULT" # Retire les lignes vides +} + +LOG_EXTRACTOR () { + echo -n "" > temp_$RESULT # Initialise le fichier des résulats d'analyse + while read LOG_LIGNE + do # Lit le log pour extraire les warning et les erreurs. + if echo "$LOG_LIGNE" | grep -q " ERROR "; then + echo -n ">ERROR: " >> "temp_$RESULT" + echo "$LOG_LIGNE" | sed 's/^.* ERROR *//' >> "temp_$RESULT" + fi + if echo "$LOG_LIGNE" | grep -q " WARNING "; then + echo -n ">WARNING: " >> "temp_$RESULT" + echo "$LOG_LIGNE" | sed 's/^.* WARNING *//' >> "temp_$RESULT" + fi + done < "$OUTPUTD" + CLEAR_LOG + PARSE_LOG +} diff --git a/sub_scripts/testing_process.sh b/sub_scripts/testing_process.sh index 552c6c5..b1eaf5b 100644 --- a/sub_scripts/testing_process.sh +++ b/sub_scripts/testing_process.sh @@ -1,18 +1,275 @@ -OUTPUTD="debug_output" +#!/bin/bash + +RESULT="Test_results.log" + +echo "Chargement des fonctions de testing_process.sh" + +source $abs_path/sub_scripts/log_extractor.sh + +echo -n "" > $RESULT # Initialise le fichier des résulats d'analyse SETUP_APP () { - sudo yunohost app --debug install $APP_CHECK -a "$MANIFEST_ARGS" > $OUTPUTD 2>&1 +# echo -e "\nMANIFEST_ARGS=$MANIFEST_ARGS_MOD\n" + sudo yunohost --debug app install $APP_CHECK -a "$MANIFEST_ARGS_MOD" > /dev/null 2>&1 + YUNOHOST_RESULT=$? } REMOVE_APP () { -# Il faut choper le label pour savoir quoi supprimer... + sudo yunohost --debug app remove $APPID > /dev/null 2>&1 + YUNOHOST_REMOVE=$? +} +CHECK_URL () { + 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) + ECHO_FORMAT "Titre de la page: $URL_TITLE\n" "white" + if [ "$URL_TITLE" == "YunoHost Portal" ]; then + YUNO_PORTAL=1 + # Il serait utile de réussir à s'authentifier sur le portail pour tester une app protégée par celui-ci. Mais j'y arrive pas... + else + YUNO_PORTAL=0 + ECHO_FORMAT "Extrait du corps de la page:\n" "white" + echo -e "\e[37m" # Écrit en light grey + grep "<body" -A 20 url_output | sed 1d | tee -a $RESULT + echo -e "\e[0m" + fi + sudo sed -i '/#package_check/d' /etc/hosts # Supprime la ligne dans le hosts +} + +CHECK_SETUP_SUBDIR () { + # Test d'installation en sous-dossier + 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 + # Installation de l'app + SETUP_APP + if [ "$YUNOHOST_RESULT" -eq 0 ]; then + ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" + GLOBAL_CHECK_SETUP=1 # Installation réussie + GLOBAL_CHECK_SUB_DIR=1 # Installation en sous-dossier réussie + else + ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + GLOBAL_CHECK_SETUP=-1 # Installation échouée + 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 + 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 + fi + COPY_LOG 2 + LOG_EXTRACTOR + fi +} + +CHECK_SETUP_ROOT () { + # Test d'installation à la racine + 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 + # Installation de l'app + SETUP_APP + if [ "$YUNOHOST_RESULT" -eq 0 ]; then + ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" + GLOBAL_CHECK_SETUP=1 # Installation réussie + GLOBAL_CHECK_ROOT=1 # Installation à la racine réussie + else + ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + GLOBAL_CHECK_SETUP=-1 # Installation échouée + 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 + 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 + 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" + 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 + # Installation de l'app + SETUP_APP + if [ "$YUNOHOST_RESULT" -eq 0 ]; then + ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" + GLOBAL_CHECK_SETUP=1 # Installation réussie + else + ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" + if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then + 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 + then + if [ "$YUNOHOST_REMOVE" -eq 0 ]; then + ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" + GLOBAL_CHECK_REMOVE_ROOT=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 + fi + COPY_LOG 2 + LOG_EXTRACTOR + fi +} + +CHECK_UPGRADE () { +echo "Non implémenté" +# GLOBAL_CHECK_UPGRADE=0 +} +CHECK_BACKUP () { +echo "Non implémenté" +# GLOBAL_CHECK_BACKUP=0 +} +CHECK_RESTORE () { +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_ADMIN () { +echo "Non implémenté" +# GLOBAL_CHECK_ADMIN=0 +} +CHECK_DOMAIN () { +echo "Non implémenté" +# GLOBAL_CHECK_DOMAIN=0 +} +CHECK_PATH () { +echo "Non implémenté" +# GLOBAL_CHECK_PATH=0 +} +CHECK_CORRUPT () { +echo "Non implémenté" +# GLOBAL_CHECK_CORRUPT=0 +} +CHECK_DL () { +echo "Non implémenté" +# GLOBAL_CHECK_DL=0 +} +CHECK_PORT () { +echo "Non implémenté" +# GLOBAL_CHECK_PORT=0 +} +CHECK_FINALPATH () { +echo "Non implémenté" +# GLOBAL_CHECK_FINALPATH=0 } TESTING_PROCESS () { # Lancement des tests - echo "PROCESS_NAME=$PROCESS_NAME" - echo "MANIFEST_ARGS=$MANIFEST_ARGS" - - SETUP_APP + ECHO_FORMAT "\nScénario de test: $PROCESS_NAME\n" "white" "underlined" + if [ "$setup_sub_dir" -eq 1 ]; then + CHECK_SETUP_SUBDIR # Test d'installation en sous-dossier + fi + if [ "$setup_root" -eq 1 ]; then + CHECK_SETUP_ROOT # Test d'installation à la racine du domaine + fi + if [ "$setup_nourl" -eq 1 ]; then + CHECK_SETUP_NO_URL # Test d'installation sans accès par url + fi + CHECK_UPGRADE + CHECK_BACKUP + CHECK_RESTORE + if [ "$setup_private" -eq 1 ]; then + CHECK_PRIVATE # Test d'installation en privé + fi + if [ "$setup_public" -eq 1 ]; then + CHECK_PUBLIC # Test d'installation en public + fi + if [ "$wrong_user" -eq 1 ]; then + CHECK_ADMIN # Test d'erreur d'utilisateur + fi + if [ "$wrong_path" -eq 1 ]; then + CHECK_DOMAIN # Test d'erreur de path ou de domaine + fi + if [ "$incorrect_path" -eq 1 ]; then + CHECK_PATH # Test d'erreur de forme de path + fi + if [ "$corrupt_source" -eq 1 ]; then + CHECK_CORRUPT # Test d'erreur sur source corrompue -> Comment je vais provoquer ça!? + fi + if [ "$fail_download_source" -eq 1 ]; then + CHECK_DL # Test d'erreur de téléchargement de la source -> Comment!? + fi + if [ "$port_already_use" -eq 1 ]; then + CHECK_PORT # Test d'erreur de port + fi + if [ "$final_path_already_use" -eq 1 ]; then + CHECK_FINALPATH # Test sur final path déjà utilisé. + fi }