mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
commit
36c969f41f
4 changed files with 169 additions and 3 deletions
26
README.md
26
README.md
|
@ -76,6 +76,17 @@ package_check/package_check.sh APP_ynh
|
|||
fail_download_source=0
|
||||
port_already_use=1 (XXXX)
|
||||
final_path_already_use=0
|
||||
;;; Levels
|
||||
Level 1=auto
|
||||
Level 2=auto
|
||||
Level 3=auto
|
||||
Level 4=0
|
||||
Level 5=auto
|
||||
Level 6=auto
|
||||
Level 7=auto
|
||||
Level 8=0
|
||||
Level 9=0
|
||||
Level 10=0
|
||||
```
|
||||
### `;; Nom du test`
|
||||
Nom du scénario de test qui sera effectué.
|
||||
|
@ -117,6 +128,21 @@ Si un test est absent de la liste, il sera ignoré. Cela revient à le noter à
|
|||
Le numéro de port doit alors être noté entre parenthèse, il servira au test de port.
|
||||
- `final_path_already_use`: *Non implémenté pour le moment...*
|
||||
|
||||
### `;;; Levels`
|
||||
Permet de choisir comment [chaque niveau](https://forum.yunohost.org/t/redaction-de-regles-pour-passer-une-app-en-officielle/2256/26) est déterminé.
|
||||
Chaque niveau fixé à *auto* sera déterminé par le script. Il est également possible de fixer le niveau à *1* ou à *0* pour respectivement le valider ou l'invalider.
|
||||
Il est à noter que les niveaux 4, 8, 9 et 10 ne peuvent être fixés à *auto* car ils ne peuvent être testés par le script et nécessitent une vérification manuelle. Il est toutefois possible de les fixer à *na* pour indiquer que le niveau n'est pas applicable (par exemple pour le niveau 4 quand une app ne propose pas de SSO LDAP). Un niveau *na* sera tout simplement ignoré dans le calcul du niveau final.
|
||||
- Niveau 1 : L'application s'installe et se désinstalle correctement. -- Peut être vérifié par package_check
|
||||
- Niveau 2 : L'application s'installe et se désinstalle dans toutes les configurations communes. -- Peut être vérifié par package_check
|
||||
- Niveau 3 : L'application supporte l'upgrade depuis une ancienne version du package. -- Peut être vérifié par package_check
|
||||
- Niveau 4 : L'application prend en charge de LDAP et/ou HTTP Auth. -- Doit être vérifié manuellement
|
||||
- Niveau 5 : Aucune erreur dans package_linter. -- Peut être vérifié par package_check
|
||||
- Niveau 6 : L'application peut-être sauvegardée et restaurée sans erreurs sur la même machine ou une autre. -- Peut être vérifié par package_check
|
||||
- Niveau 7 : Aucune erreur dans package check. -- Peut être vérifié par package_check
|
||||
- Niveau 8 : L'application respecte toutes les YEP recommandées. -- Doit être vérifié manuellement
|
||||
- Niveau 9 : L'application respecte toutes les YEP optionnelles. -- Doit être vérifié manuellement
|
||||
- Niveau 10 : L'application est jugée parfaite. -- Doit être vérifié manuellement
|
||||
|
||||
---
|
||||
Le script `package_check.sh` accepte 6 arguments en plus du package à tester.
|
||||
- `--bash-mode`: Rend le script autonome. Aucune intervention de l'utilisateur ne sera nécessaire.
|
||||
|
|
|
@ -27,3 +27,14 @@
|
|||
fail_download_source=0
|
||||
port_already_use=1 (66)
|
||||
final_path_already_use=0
|
||||
;;; Levels
|
||||
Level 1=auto
|
||||
Level 2=auto
|
||||
Level 3=auto
|
||||
Level 4=0
|
||||
Level 5=auto
|
||||
Level 6=auto
|
||||
Level 7=auto
|
||||
Level 8=0
|
||||
Level 9=0
|
||||
Level 10=0
|
||||
|
|
130
package_check.sh
130
package_check.sh
|
@ -231,7 +231,89 @@ fi
|
|||
|
||||
|
||||
|
||||
# Cette fonctionne détermine le niveau final de l'application, en prenant en compte d'éventuels forçages
|
||||
APP_LEVEL () {
|
||||
level=0 # Initialise le niveau final à 0
|
||||
# Niveau 1: L'application ne s'installe pas ou ne fonctionne pas après installation.
|
||||
if [ "${level[1]}" == "auto" ] || [ "${level[1]}" -eq 2 ]; then
|
||||
if [ "$GLOBAL_CHECK_SETUP" -eq 1 ] && [ "$GLOBAL_CHECK_REMOVE" -eq 1 ]
|
||||
then level[1]=2 ; else level[1]=0 ; fi
|
||||
fi
|
||||
|
||||
# Niveau 2: L'application s'installe et se désinstalle dans toutes les configurations communes.
|
||||
if [ "${level[2]}" == "auto" ] || [ "${level[2]}" -eq 2 ]; then
|
||||
if [ "$GLOBAL_CHECK_SUB_DIR" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_REMOVE_SUBDIR" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_ROOT" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_REMOVE_ROOT" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_PRIVATE" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_PUBLIC" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_MULTI_INSTANCE" -ne -1 ]
|
||||
then level[2]=2 ; else level[2]=0 ; fi
|
||||
fi
|
||||
|
||||
# Niveau 3: L'application supporte l'upgrade depuis une ancienne version du package.
|
||||
if [ "${level[3]}" == "auto" ] || [ "${level[3]}" == "2" ]; then
|
||||
if [ "$GLOBAL_CHECK_UPGRADE" -eq 1 ] || ( [ "${level[3]}" == "2" ] && [ "$GLOBAL_CHECK_UPGRADE" -ne -1 ] )
|
||||
then level[3]=2 ; else level[3]=0 ; fi
|
||||
fi
|
||||
|
||||
# Niveau 4: L'application prend en charge de LDAP et/ou HTTP Auth. -- Doit être vérifié manuellement
|
||||
|
||||
# Niveau 5: Aucune erreur dans package_linter.
|
||||
if [ "${level[5]}" == "auto" ] || [ "${level[5]}" == "2" ]; then
|
||||
if [ "$GLOBAL_LINTER" -eq 1 ] || ( [ "${level[5]}" == "2" ] && [ "$GLOBAL_LINTER" -ne -1 ] )
|
||||
then level[5]=2 ; else level[5]=0 ; fi
|
||||
fi
|
||||
|
||||
# Niveau 6: L'application peut-être sauvegardée et restaurée sans erreurs sur la même machine ou une autre.
|
||||
if [ "${level[6]}" == "auto" ] || [ "${level[6]}" == "2" ]; then
|
||||
if [ "$GLOBAL_CHECK_BACKUP" -eq 1 ] && [ "$GLOBAL_CHECK_RESTORE" -eq 1 ] || ( [ "${level[6]}" == "2" ] && [ "$GLOBAL_CHECK_BACKUP" -ne -1 ] && [ "$GLOBAL_CHECK_RESTORE" -ne -1 ] )
|
||||
then level[6]=2 ; else level[6]=0 ; fi
|
||||
fi
|
||||
|
||||
# Niveau 7: Aucune erreur dans package check.
|
||||
if [ "${level[7]}" == "auto" ] || [ "${level[7]}" == "2" ]; then
|
||||
if [ "$GLOBAL_CHECK_SETUP" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_REMOVE" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_SUB_DIR" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_REMOVE_SUBDIR" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_REMOVE_ROOT" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_UPGRADE" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_PRIVATE" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_PUBLIC" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_MULTI_INSTANCE" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_ADMIN" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_DOMAIN" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_PATH" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_PORT" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_BACKUP" -ne -1 ] && \
|
||||
[ "$GLOBAL_CHECK_RESTORE" -ne -1 ]
|
||||
then level[7]=2 ; else level[7]=0 ; fi
|
||||
fi
|
||||
|
||||
# Niveau 8: L'application respecte toutes les YEP recommandées. -- Doit être vérifié manuellement
|
||||
|
||||
# Niveau 9: L'application respecte toutes les YEP optionnelles. -- Doit être vérifié manuellement
|
||||
|
||||
# Niveau 10: L'application est jugée parfaite. -- Doit être vérifié manuellement
|
||||
|
||||
# Calcule le niveau final
|
||||
for i in {1..10}; do
|
||||
if [ "${level[i]}" == "auto" ]; then
|
||||
level[i]=0 # Si des niveaux sont encore à auto, c'est une erreur de syntaxe dans le check_process, ils sont fixé à 0.
|
||||
elif [ "${level[i]}" == "na" ]; then
|
||||
continue # Si le niveau est "non applicable" (na), il est ignoré dans le niveau final
|
||||
elif [ "${level[i]}" -ge 1 ]; then
|
||||
level=$i # Si le niveau est validé, il est pris en compte dans le niveau final
|
||||
else
|
||||
break # Dans les autres cas (niveau ni validé, ni ignoré), la boucle est stoppée. Le niveau final est donc le niveau précédemment validé
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
TEST_RESULTS () {
|
||||
APP_LEVEL
|
||||
ECHO_FORMAT "\n\nPackage linter: "
|
||||
if [ "$GLOBAL_LINTER" -eq 1 ]; then
|
||||
ECHO_FORMAT "\t\t\tSUCCESS\n" "lgreen"
|
||||
|
@ -439,6 +521,20 @@ TEST_RESULTS () {
|
|||
fi
|
||||
ECHO_FORMAT "$note/20 $smiley\n" "$color_note" "$typo_note"
|
||||
ECHO_FORMAT "\t Ensemble de tests effectués: $tnote/21\n\n" "white" "bold"
|
||||
|
||||
# Affiche le niveau final
|
||||
ECHO_FORMAT "Niveau de l'application: $level\n" "white" "bold"
|
||||
for i in {1..10}
|
||||
do
|
||||
ECHO_FORMAT "\t Niveau $i: "
|
||||
if [ "${level[i]}" == "na" ]; then
|
||||
ECHO_FORMAT "N/A\n"
|
||||
elif [ "${level[i]}" -ge 1 ]; then
|
||||
ECHO_FORMAT "1\n" "white" "bold"
|
||||
else
|
||||
ECHO_FORMAT "0\n"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
INIT_VAR() {
|
||||
|
@ -499,7 +595,21 @@ INIT_VAR() {
|
|||
final_path_already_use=0
|
||||
}
|
||||
|
||||
INIT_LEVEL() {
|
||||
level[1]="auto" # L'application s'installe et se désinstalle correctement. -- Peut être vérifié par package_check
|
||||
level[2]="auto" # L'application s'installe et se désinstalle dans toutes les configurations communes. -- Peut être vérifié par package_check
|
||||
level[3]="auto" # L'application supporte l'upgrade depuis une ancienne version du package. -- Peut être vérifié par package_check
|
||||
level[4]=0 # L'application prend en charge de LDAP et/ou HTTP Auth. -- Doit être vérifié manuellement
|
||||
level[5]="auto" # Aucune erreur dans package_linter. -- Peut être vérifié par package_check
|
||||
level[6]="auto" # L'application peut-être sauvegardée et restaurée sans erreurs sur la même machine ou une autre. -- Peut être vérifié par package_check
|
||||
level[7]="auto" # Aucune erreur dans package check. -- Peut être vérifié par package_check
|
||||
level[8]=0 # L'application respecte toutes les YEP recommandées. -- Doit être vérifié manuellement
|
||||
level[9]=0 # L'application respecte toutes les YEP optionnelles. -- Doit être vérifié manuellement
|
||||
level[10]=0 # L'application est jugée parfaite. -- Doit être vérifié manuellement
|
||||
}
|
||||
|
||||
INIT_VAR
|
||||
INIT_LEVEL
|
||||
echo -n "" > "$COMPLETE_LOG" # Initialise le fichier de log
|
||||
echo -n "" > "$RESULT" # Initialise le fichier des résulats d'analyse
|
||||
if [ "$no_lxc" -eq 0 ]; then
|
||||
|
@ -510,6 +620,23 @@ if [ "$check_file" -eq 1 ]
|
|||
then # Si le fichier check_process est trouvé
|
||||
## Parsing du fichier check_process de manière séquentielle.
|
||||
echo "Parsing du fichier check_process"
|
||||
IN_LEVELS=0
|
||||
while read <&4 LIGNE
|
||||
do # Parse les indications de niveaux d'app avant de parser les tests
|
||||
LIGNE=$(echo $LIGNE | sed 's/^ *"//g') # Efface les espaces en début de ligne
|
||||
if [ "${LIGNE:0:1}" == "#" ]; then
|
||||
continue # Ligne de commentaire, ignorée.
|
||||
fi
|
||||
if echo "$LIGNE" | grep -q "^;;; Levels"; then # Définition des variables de niveaux
|
||||
IN_LEVELS=1
|
||||
fi
|
||||
if [ "$IN_LEVELS" -eq 1 ]
|
||||
then
|
||||
if echo "$LIGNE" | grep -q "Level "; then # Définition d'un niveau
|
||||
level[$(echo "$LIGNE" | cut -d '=' -f1 | cut -d ' ' -f2)]=$(echo "$LIGNE" | cut -d '=' -f2)
|
||||
fi
|
||||
fi
|
||||
done 4< "$APP_CHECK/check_process"
|
||||
while read <&4 LIGNE
|
||||
do
|
||||
LIGNE=$(echo $LIGNE | sed 's/^ *"//g') # Efface les espaces en début de ligne
|
||||
|
@ -520,7 +647,7 @@ then # Si le fichier check_process est trouvé
|
|||
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 echo "$LIGNE" | grep -q "^;;" && ! 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
|
||||
TEST_RESULTS
|
||||
|
@ -533,6 +660,7 @@ then # Si le fichier check_process est trouvé
|
|||
IN_PROCESS=1
|
||||
MANIFEST=0
|
||||
CHECKS=0
|
||||
IN_LEVELS=0
|
||||
fi
|
||||
if [ "$IN_PROCESS" -eq 1 ]
|
||||
then # Analyse des arguments du scenario de test
|
||||
|
|
|
@ -306,7 +306,7 @@ CHECK_SETUP_NO_URL () {
|
|||
note=$((note+1))
|
||||
fi
|
||||
GLOBAL_CHECK_SETUP=1 # Installation réussie
|
||||
GLOBAL_CHECK_SUB_DIR=1
|
||||
GLOBAL_CHECK_ROOT=1
|
||||
else
|
||||
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
|
||||
|
@ -327,7 +327,8 @@ CHECK_SETUP_NO_URL () {
|
|||
if [ "$GLOBAL_CHECK_REMOVE_ROOT" -eq 0 ]; then
|
||||
note=$((note+1))
|
||||
fi
|
||||
GLOBAL_CHECK_REMOVE_ROOT=1 # Suppression réussie
|
||||
GLOBAL_CHECK_REMOVE=1 # Suppression réussie
|
||||
GLOBAL_CHECK_REMOVE_ROOT=1
|
||||
else
|
||||
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||
if [ "$GLOBAL_CHECK_REMOVE" -ne 1 ]; then
|
||||
|
|
Loading…
Add table
Reference in a new issue