mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
Merge pull request #133 from YunoHost/drop-action-and-config-panel-code
Drop old code that tested the old configpanel/actions mechanism
This commit is contained in:
commit
01227cf300
3 changed files with 0 additions and 328 deletions
30
README.md
30
README.md
|
@ -19,7 +19,6 @@ The script is able to perform the following tests:
|
|||
- Upgrade from previous versions
|
||||
- Backup/restore
|
||||
- Changing the installation url (`change_url`)
|
||||
- Actions and config-panel
|
||||
|
||||
Package_check script uses a LXC container to manipulate the package in a clean environment without any previous installations.
|
||||
|
||||
|
@ -164,15 +163,6 @@ If the `build_base_lxc.sh` script detects that you are trying a cross container
|
|||
language="fr"
|
||||
password="password"
|
||||
port="666"
|
||||
; Actions
|
||||
action_argument=arg1|arg2
|
||||
is_public=1|0
|
||||
; Config_panel
|
||||
main.categorie.config_example=arg1|arg2
|
||||
main.overwrite_files.overwrite_phpfpm=1|0
|
||||
main.php_fpm_config.footprint=low|medium|high|specific
|
||||
main.php_fpm_config.free_footprint=20
|
||||
main.php_fpm_config.usage=low|medium|high
|
||||
; Checks
|
||||
pkg_linter=1
|
||||
setup_sub_dir=1
|
||||
|
@ -185,8 +175,6 @@ If the `build_base_lxc.sh` script detects that you are trying a cross container
|
|||
multi_instance=1
|
||||
port_already_use=1 (66)
|
||||
change_url=0
|
||||
actions=0
|
||||
config_panel=0
|
||||
;;; Upgrade options
|
||||
; commit=65c382d138596fcb32b4c97c39398815a1dcd4e8
|
||||
name=Name of this previous version
|
||||
|
@ -212,22 +200,6 @@ All manifest keys need to be filled to perform the installation.
|
|||
|
||||
> The manifest keys already in the file here are simply examples. Check the package manifest.
|
||||
|
||||
### `; Actions`
|
||||
|
||||
List of arguments for each action that needs an argument.
|
||||
`action_argument` is the name of the argument, as you can find at the end of [action.arguments.**action_argument**].
|
||||
`arg1|arg2` are the different arguments to use for the tests. You can have as many arguments as you want, each separated by `|`.
|
||||
|
||||
_Only `actions.toml` can be tested by package_check, not `actions.json`._
|
||||
|
||||
### `; Config_panel`
|
||||
|
||||
List of arguments for each config_panel configuration.
|
||||
`main.categorie.config_example` is the complete toml entry for the argument of a configuration.
|
||||
`arg1|arg2` are the different arguments to use for the tests. You can as many arguments as you want, each separated by `|`.
|
||||
|
||||
_Only `config_panel.toml` can be tested by package_check, not `config_panel.json`._
|
||||
|
||||
### `; Checks`
|
||||
|
||||
List of tests to perform.
|
||||
|
@ -247,8 +219,6 @@ If a test is not in the list, it will be ignored. It's similar to set the test a
|
|||
The `port_already_use` test may eventually take as argument the port number.
|
||||
The port number must be written into parentheses.
|
||||
- `change_url`: Try to change the url by 6 different ways. Root to path, path to another path and path to root. And the same thing, to another domain.
|
||||
- `actions`: All actions available in actions.toml
|
||||
- `config_panel`: All configurations available in config_panel.toml
|
||||
|
||||
### `;;; Upgrade options`
|
||||
|
||||
|
|
288
lib/tests.sh
288
lib/tests.sh
|
@ -685,291 +685,3 @@ TEST_CHANGE_URL () {
|
|||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
ACTIONS_CONFIG_PANEL () {
|
||||
|
||||
test_type=$1
|
||||
|
||||
# Define a function to split a file in multiple parts. Used for actions and config-panel toml
|
||||
splitterAA()
|
||||
{
|
||||
local bound="$1"
|
||||
local file="$2"
|
||||
|
||||
# If $2 is a real file
|
||||
if [ -e "$file" ]
|
||||
then
|
||||
# Replace name of the file by its content
|
||||
file="$(cat "$file")"
|
||||
fi
|
||||
|
||||
local file_lenght=$(echo "$file" | wc --lines | awk '{print $1}')
|
||||
|
||||
bounds=($(echo "$file" | grep --line-number --extended-regexp "$bound" | cut -d':' -f1))
|
||||
|
||||
# Go for each line number (boundary) into the array
|
||||
for line_number in $(seq 0 $(( ${#bounds[@]} -1 )))
|
||||
do
|
||||
# The first bound is the next line number in the array
|
||||
# That the low bound on which we cut
|
||||
first_bound=$(( ${bounds[$line_number+1]} - 1 ))
|
||||
# If there's no next cell in the array, we got -1, in such case, use the lenght of the file.
|
||||
# We cut at the end of the file
|
||||
test $first_bound -lt 0 && first_bound=$file_lenght
|
||||
# The second bound is the current line number in the array minus the next one.
|
||||
# The the upper bound in the file.
|
||||
second_bound=$(( ${bounds[$line_number]} - $first_bound - 1 ))
|
||||
# Cut the file a first time from the beginning to the first bound
|
||||
# And a second time from the end, back to the second bound.
|
||||
parts[line_number]="$(echo "$file" | head --lines=$first_bound \
|
||||
| tail --lines=$second_bound)"
|
||||
done
|
||||
}
|
||||
|
||||
if [ "$test_type" == "actions" ]
|
||||
then
|
||||
start_test "Actions"
|
||||
|
||||
toml_file="$package_path/actions.toml"
|
||||
if [ ! -e "$toml_file" ]
|
||||
then
|
||||
log_error "No actions.toml found!"
|
||||
return 1
|
||||
fi
|
||||
elif [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
start_test "Config-panel"
|
||||
|
||||
toml_file="$package_path/config_panel.toml"
|
||||
if [ ! -e "$toml_file" ]
|
||||
then
|
||||
log_error "No config_panel.toml found!"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if an install have previously work
|
||||
at_least_one_install_succeeded || return 1
|
||||
|
||||
# Install the application in a LXC container
|
||||
log_small_title "Preliminary install..."
|
||||
local check_path="$(default_install_path)"
|
||||
_LOAD_SNAPSHOT_OR_INSTALL_APP "$check_path"
|
||||
|
||||
local main_result=0
|
||||
|
||||
# List first, then execute
|
||||
local ret=0
|
||||
local i=0
|
||||
for i in $(seq 1 2)
|
||||
do
|
||||
# Do a test if the installation succeed
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
log_error "The previous test has failed..."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ $i -eq 1 ]
|
||||
then
|
||||
if [ "$test_type" == "actions" ]
|
||||
then
|
||||
log_info "> List the available actions..."
|
||||
|
||||
# List the actions
|
||||
_RUN_YUNOHOST_CMD "app action list $app_id"
|
||||
local ret=$?
|
||||
|
||||
[ $ret -eq 0 ] || main_result=1
|
||||
break_before_continue
|
||||
|
||||
elif [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
log_info "> Show the config panel..."
|
||||
|
||||
# Show the config-panel
|
||||
_RUN_YUNOHOST_CMD "app config show-panel $app_id"
|
||||
local ret=$?
|
||||
[ $ret -eq 0 ] || main_result=1
|
||||
break_before_continue
|
||||
|
||||
fi
|
||||
elif [ $i -eq 2 ]
|
||||
then
|
||||
local parts
|
||||
if [ "$test_type" == "actions" ]
|
||||
then
|
||||
log_info "> Execute the actions..."
|
||||
|
||||
# Split the actions.toml file to separate each actions
|
||||
splitterAA "^[[:blank:]]*\[[^.]*\]" "$toml_file"
|
||||
elif [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
log_info "> Apply configurations..."
|
||||
|
||||
# Split the config_panel.toml file to separate each configurations
|
||||
splitterAA "^[[:blank:]]*\[.*\]" "$toml_file"
|
||||
fi
|
||||
|
||||
# Read each part, each action, one by one
|
||||
for part in $(seq 0 $(( ${#parts[@]} -1 )))
|
||||
do
|
||||
local action_config_argument_name=""
|
||||
local action_config_argument_type=""
|
||||
local action_config_argument_default=""
|
||||
local actions_config_arguments_specifics=""
|
||||
local nb_actions_config_arguments_specifics=1
|
||||
|
||||
# Ignore part of the config_panel which are only titles
|
||||
if [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
# A real config_panel part should have a `ask = ` line. Ignore the part if not.
|
||||
if ! echo "${parts[$part]}" | grep --quiet --extended-regexp "^[[:blank:]]*ask ="
|
||||
then
|
||||
continue
|
||||
fi
|
||||
# Get the name of the config. ask = "Config ?"
|
||||
local action_config_name="$(echo "${parts[$part]}" | grep "ask *= *" | sed 's/^.* = \"\(.*\)\"/\1/')"
|
||||
|
||||
# Get the config argument name "YNH_CONFIG_part1_part2.part3.partx"
|
||||
local action_config_argument_name="$(echo "${parts[$part]}" | grep "^[[:blank:]]*\[.*\]$")"
|
||||
# Remove []
|
||||
action_config_argument_name="${action_config_argument_name//[\[\]]/}"
|
||||
# And remove spaces
|
||||
action_config_argument_name="${action_config_argument_name// /}"
|
||||
|
||||
elif [ "$test_type" == "actions" ]
|
||||
then
|
||||
# Get the name of the action. name = "Name of the action"
|
||||
local action_config_name="$(echo "${parts[$part]}" | grep "name" | sed 's/^.* = \"\(.*\)\"/\1/')"
|
||||
|
||||
# Get the action. [action]
|
||||
local action_config_action="$(echo "${parts[$part]}" | grep "^\[.*\]$" | sed 's/\[\(.*\)\]/\1/')"
|
||||
fi
|
||||
|
||||
# Check if there's any [action.arguments]
|
||||
# config_panel always have arguments.
|
||||
if echo "${parts[$part]}" | grep --quiet "$action_config_action\.arguments" || [ "$test_type" == "config_panel" ]
|
||||
then local action_config_has_arguments=1
|
||||
else local action_config_has_arguments=0
|
||||
fi
|
||||
|
||||
# If there's arguments for this action.
|
||||
if [ $action_config_has_arguments -eq 1 ]
|
||||
then
|
||||
if [ "$test_type" == "actions" ]
|
||||
then
|
||||
# Get the argument [action.arguments.name_of_the_argument]
|
||||
action_config_argument_name="$(echo "${parts[$part]}" | grep "$action_config_action\.arguments\." | sed 's/.*\.\(.*\)]/\1/')"
|
||||
fi
|
||||
|
||||
# Get the type of the argument. type = "type"
|
||||
action_config_argument_type="$(echo "${parts[$part]}" | grep "type" | sed 's/^.* = \"\(.*\)\"/\1/')"
|
||||
# Get the default value of this argument. default = true
|
||||
action_config_argument_default="$(echo "${parts[$part]}" | grep "default" | sed 's/^.* = \(.*\)/\1/')"
|
||||
# Do not use true or false, use 1/0 instead
|
||||
if [ "$action_config_argument_default" == "true" ] && [ "$action_config_argument_type" == "boolean" ]; then
|
||||
action_config_argument_default=1
|
||||
elif [ "$action_config_argument_default" == "false" ] && [ "$action_config_argument_type" == "boolean" ]; then
|
||||
action_config_argument_default=0
|
||||
fi
|
||||
|
||||
if [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
check_process_arguments=""
|
||||
while read line
|
||||
do
|
||||
# Remove all double quotes
|
||||
add_arg="${line//\"/}"
|
||||
# Then add this argument and follow it by :
|
||||
check_process_arguments="${check_process_arguments}${add_arg}:"
|
||||
done < <(jq -r '.extra.configpanel' $current_test_infos)
|
||||
elif [ "$test_type" == "actions" ]
|
||||
then
|
||||
local check_process_arguments=""
|
||||
while read line
|
||||
do
|
||||
# Remove all double quotes
|
||||
add_arg="${line//\"/}"
|
||||
# Then add this argument and follow it by :
|
||||
check_process_arguments="${check_process_arguments}${add_arg}:"
|
||||
done < <(jq -r '.extra.actions' $current_test_infos)
|
||||
fi
|
||||
# Look for arguments into the check_process
|
||||
if echo "$check_process_arguments" | grep --quiet "$action_config_argument_name"
|
||||
then
|
||||
# If there's arguments for this actions into the check_process
|
||||
# Isolate the values
|
||||
actions_config_arguments_specifics="$(echo "$check_process_arguments" | sed "s/.*$action_config_argument_name=\(.*\)/\1/")"
|
||||
# And remove values of the following action
|
||||
actions_config_arguments_specifics="${actions_config_arguments_specifics%%\:*}"
|
||||
nb_actions_config_arguments_specifics=$(( $(echo "$actions_config_arguments_specifics" | tr --complement --delete "|" | wc --chars) + 1 ))
|
||||
fi
|
||||
|
||||
if [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
# Finish to format the name
|
||||
# Remove . by _
|
||||
action_config_argument_name="${action_config_argument_name//./_}"
|
||||
# Move all characters to uppercase
|
||||
action_config_argument_name="${action_config_argument_name^^}"
|
||||
# Add YNH_CONFIG_
|
||||
action_config_argument_name="YNH_CONFIG_$action_config_argument_name"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Loop on the number of values into the check_process.
|
||||
# Or loop once for the default value
|
||||
for j in $(seq 1 $nb_actions_config_arguments_specifics)
|
||||
do
|
||||
local action_config_argument_built=""
|
||||
if [ $action_config_has_arguments -eq 1 ]
|
||||
then
|
||||
# If there's values into the check_process
|
||||
if [ -n "$actions_config_arguments_specifics" ]
|
||||
then
|
||||
# Build the argument from a value from the check_process
|
||||
local action_config_actual_argument="$(echo "$actions_config_arguments_specifics" | cut -d'|' -f $j)"
|
||||
action_config_argument_built="--args \"$action_config_argument_name=$action_config_actual_argument\""
|
||||
elif [ -n "$action_config_argument_default" ]
|
||||
then
|
||||
# Build the argument from the default value
|
||||
local action_config_actual_argument="$action_config_argument_default"
|
||||
action_config_argument_built="--args \"$action_config_argument_name=$action_config_actual_argument\""
|
||||
else
|
||||
log_warning "> No argument into the check_process to use or default argument for \"$action_config_name\"..."
|
||||
action_config_actual_argument=""
|
||||
fi
|
||||
|
||||
if [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
log_info "> Apply the configuration for \"$action_config_name\" with the argument \"$action_config_actual_argument\"..."
|
||||
elif [ "$test_type" == "actions" ]
|
||||
then
|
||||
log_info "> Execute the action \"$action_config_name\" with the argument \"$action_config_actual_argument\"..."
|
||||
fi
|
||||
else
|
||||
log_info "> Execute the action \"$action_config_name\"..."
|
||||
fi
|
||||
|
||||
if [ "$test_type" == "config_panel" ]
|
||||
then
|
||||
# Aply a configuration
|
||||
_RUN_YUNOHOST_CMD "app config apply $app_id $action_config_action $action_config_argument_built"
|
||||
ret=$?
|
||||
elif [ "$test_type" == "actions" ]
|
||||
then
|
||||
# Execute an action
|
||||
_RUN_YUNOHOST_CMD "app action run $app_id $action_config_action $action_config_argument_built"
|
||||
ret=$?
|
||||
fi
|
||||
[ $ret -eq 0 ] || main_result=1
|
||||
break_before_continue
|
||||
done
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
return $main_result
|
||||
}
|
||||
|
|
|
@ -81,8 +81,6 @@ parse_check_process() {
|
|||
local install_args=$( extract_check_process_section "^; Manifest" "^; " $test_serie_rawconf | sed 's/\s*(.*)$//g' | tr -d '"' | tr '\n' '&')
|
||||
local preinstall_template=$(extract_check_process_section "^; pre-install" "^; " $test_serie_rawconf)
|
||||
local preupgrade_template=$(extract_check_process_section "^; pre-upgrade" "^; " $test_serie_rawconf)
|
||||
local action_infos=$( extract_check_process_section "^; Actions" "^; " $test_serie_rawconf)
|
||||
local configpanel_infos=$( extract_check_process_section "^; Config_panel" "^; " $test_serie_rawconf)
|
||||
|
||||
# Add (empty) special args if they ain't provided in check_process
|
||||
echo "$install_args" | tr '&' '\n' | grep -q "^domain=" ||install_args+="domain=&"
|
||||
|
@ -118,12 +116,6 @@ parse_check_process() {
|
|||
local upgrade_name="$test_arg"
|
||||
fi
|
||||
extra="$(jq -n --arg upgrade_name "$upgrade_name" '{ $upgrade_name }')"
|
||||
elif [[ "$test_type" == "ACTIONS_CONFIG_PANEL" ]] && [[ "$test_arg" == "actions" ]]
|
||||
then
|
||||
extra="$(jq -n --arg actions "$action_infos" '{ $actions }')"
|
||||
elif [[ "$test_type" == "ACTIONS_CONFIG_PANEL" ]] && [[ "$test_arg" == "config_panel" ]]
|
||||
then
|
||||
extra="$(jq -n --arg configpanel "$configpanel_infos" '{ $configpanel }')"
|
||||
fi
|
||||
|
||||
jq -n \
|
||||
|
@ -158,8 +150,6 @@ parse_check_process() {
|
|||
# "Advanced" features
|
||||
|
||||
is_test_enabled change_url && add_test "TEST_CHANGE_URL"
|
||||
is_test_enabled actions && add_test "ACTIONS_CONFIG_PANEL" "actions"
|
||||
is_test_enabled config_panel && add_test "ACTIONS_CONFIG_PANEL" "config_panel"
|
||||
|
||||
# Port already used ... do we really need this ...
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue