CI: Lint run_test: reorder function in top>down

This commit is contained in:
Tinmarino
2023-03-22 01:22:25 -03:00
parent 57107c7c56
commit dec6a9ecab
+142 -139
View File
@@ -10,13 +10,9 @@ Credit: https://github.com/w0rp/ale for script ideas and the color vader output
# Capture start time now # Capture start time now
declare -g start_time=$(date +%s) declare -g start_time=$(date +%s)
# Declare color helper
declare -g red='\033[0;31m'
declare -g green='\033[0;32m'
declare -g nc='\033[0m'
printHelp() { printHelp() {
: 'Print usage to stdout'
cat << ' EOF' | sed -e 's/^ //' cat << ' EOF' | sed -e 's/^ //'
Usage: bash run_tests.sh [OPTIONS] Usage: bash run_tests.sh [OPTIONS]
@@ -54,8 +50,144 @@ printHelp() {
} }
run_test(){
: 'Main function'
local -i res=0
# Hi
echo -en "Starting $(basename "$0") for VimWiki\n"
# Hook ctrl-c or ctrl-z to stop tests
trap exit 1 SIGINT SIGTERM
# For windows: Cmder bash is appending busybox to the path and
# and a smlll vim is included, so that override the windows path vim
if [[ -v OLD_PATH ]]; then
echo "Setting path from OLD_PATH : $OLD_PATH"
export PATH="$OLD_PATH"
fi
# WORK
parse_argument "$@"; ((res |= $?))
execute_test_argument; ((res |= $?))
# Print ellapsed time (after calculate it)
end_time=$(date +%s)
sec_time=$((end_time - start_time))
printf -v script_time '%dh:%dm:%ds' $((sec_time/3600)) $((sec_time%3600/60)) $((sec_time%60))
echo -ne "Script $(basename "$0"), in $script_time, Returned -> $res\n\n"
return "$res"
}
parse_argument(){
: 'Parse user argument'
# Declare color helper
declare -g red='\033[0;31m'
declare -g green='\033[0;32m'
declare -g nc='\033[0m'
# Declare: Path of the script, supposing no spaces
declare -g g_script_file=$(dirname "$0")
declare -g g_script_path=$(realpath "$g_script_file")
declare -g g_wiki_path=$(realpath "$g_script_path/..")
declare -g g_tmp_dir=$(dirname "$(mktemp -u)")
# Declare: list of vim/nvim versions
declare -g g_vers="$(print_versions)"
# Declare: type of tests to run - vader/vint/all
declare -g g_type="all"
# Declare: verbose output flag
declare -g g_verbose=0
# Declare: only run these tests
declare -g g_file_test=""
# Declare: docker flags
declare -g flags=(--rm -v "$PWD/../:/testplugin" -v "$PWD/../test:/home" -w /testplugin vimwiki)
# Parse all argument options
while getopts ":hvn:lt:f:" opt; do
case ${opt} in
h)
printHelp
;;
n)
g_vers="$OPTARG"
;;
v)
g_verbose=1
;;
l)
print_versions
;;
t)
g_type="$OPTARG"
;;
f)
g_file_test="$OPTARG"
;;
\?)
echo "Invalid option: $OPTARG" 1>&2
exit 1
;;
:)
echo "Invalid option: $OPTARG requires an argument" 1>&2
exit 1
;;
esac
done
# Shift out parameters already processed
shift $((OPTIND -1))
# Handle error for non-option arguments
if [[ $# -ne 0 ]]; then
echo "Error: Got $# non-option arguments." 1>&2
exit 1
fi
}
execute_test_argument(){
: 'Execute test according to global variable'
# Global error return of the script
local -i res=0 ret=0
# Select and run tests
case $g_type in
vader)
run_vader; ret=$?
echo "Main Vader: returned $ret"
((res |= ret))
;;
vint)
run_vint; ret=$?
echo "Main Vint: returned $ret"
((res |= ret))
;;
all)
run_vint; ret=$?
echo "Main Vint: returned $ret"
((res |= ret))
run_vader; ret=$?
echo "Main Vader: returned $ret"
((res |= ret))
;;
*)
echo "Error: invalid type - '$g_type'" 1>&2
exit 1
esac
return "$res"
}
print_versions() { print_versions() {
# Print the names of all vim/nvim versions : 'Print the names of all vim/nvim versions'
# Get all possible version <- Dockerfile # Get all possible version <- Dockerfile
sed -n 's/.* -name \([^ ]*\) .*/\1/p' ../Dockerfile sed -n 's/.* -name \([^ ]*\) .*/\1/p' ../Dockerfile
exit 0 exit 0
@@ -63,7 +195,7 @@ print_versions() {
run_vader() { run_vader() {
# Run Vader tests : 'Run Vader tests'
echo -e "\nStarting Vader tests." echo -e "\nStarting Vader tests."
local -i res=0 local -i res=0
local opt='' current_test='' local opt='' current_test=''
@@ -193,6 +325,7 @@ run_vader() {
run_vint() { run_vint() {
: 'Run Vint test'
local -i res=0 local -i res=0
local cmd="vint -s . && vint -s test/vimrc" local cmd="vint -s . && vint -s test/vimrc"
@@ -216,7 +349,7 @@ run_vint() {
vader_filter() { vader_filter() {
# Filter Vader Stdout : 'Pipe Helper: Filter Vader Stdout'
local -i res=0 local -i res=0
# Keep indentation # Keep indentation
local IFS='' local IFS=''
@@ -258,6 +391,7 @@ vader_filter() {
vader_color() { vader_color() {
: 'Pipe Helper: Filter to add color to Vader'
while read -r; do while read -r; do
if [[ "$REPLY" = *'[EXECUTE] (X)'* ]] || \ if [[ "$REPLY" = *'[EXECUTE] (X)'* ]] || \
[[ "$REPLY" = *'[ EXPECT] (X)'* ]] || \ [[ "$REPLY" = *'[ EXPECT] (X)'* ]] || \
@@ -289,137 +423,6 @@ vader_color() {
} }
parse_argument(){
: 'Parse user argument'
# Declare: Path of the script, supposing no spaces
declare -g g_script_file=$(dirname "$0")
declare -g g_script_path=$(realpath "$g_script_file")
declare -g g_wiki_path=$(realpath "$g_script_path/..")
declare -g g_tmp_dir=$(dirname "$(mktemp -u)")
# Declare: list of vim/nvim versions
declare -g g_vers="$(print_versions)"
# Declare: type of tests to run - vader/vint/all
declare -g g_type="all"
# Declare: verbose output flag
declare -g g_verbose=0
# Declare: only run these tests
declare -g g_file_test=""
# Declare: docker flags
declare -g flags=(--rm -v "$PWD/../:/testplugin" -v "$PWD/../test:/home" -w /testplugin vimwiki)
# Parse all argument options
while getopts ":hvn:lt:f:" opt; do
case ${opt} in
h)
printHelp
;;
n)
g_vers="$OPTARG"
;;
v)
g_verbose=1
;;
l)
print_versions
;;
t)
g_type="$OPTARG"
;;
f)
g_file_test="$OPTARG"
;;
\?)
echo "Invalid option: $OPTARG" 1>&2
exit 1
;;
:)
echo "Invalid option: $OPTARG requires an argument" 1>&2
exit 1
;;
esac
done
# Shift out parameters already processed
shift $((OPTIND -1))
# Handle error for non-option arguments
if [[ $# -ne 0 ]]; then
echo "Error: Got $# non-option arguments." 1>&2
exit 1
fi
}
execute_test_argument(){
: 'Execute test according to global variable'
# Global error return of the script
local -i res=0 ret=0
# Select and run tests
case $g_type in
vader)
run_vader; ret=$?
echo "Main Vader: returned $ret"
((res |= ret))
;;
vint)
run_vint; ret=$?
echo "Main Vint: returned $ret"
((res |= ret))
;;
all)
run_vint; ret=$?
echo "Main Vint: returned $ret"
((res |= ret))
run_vader; ret=$?
echo "Main Vader: returned $ret"
((res |= ret))
;;
*)
echo "Error: invalid type - '$g_type'" 1>&2
exit 1
esac
return "$res"
}
run_test(){
local -i res=0
# Hi
echo -en "Starting $(basename "$0") for VimWiki\n"
# Hook ctrl-c or ctrl-z to stop tests
trap exit 1 SIGINT SIGTERM
# For windows: Cmder bash is appending busybox to the path and
# and a smlll vim is included, so that override the windows path vim
if [[ -v OLD_PATH ]]; then
echo "Setting path from OLD_PATH : $OLD_PATH"
export PATH="$OLD_PATH"
fi
# WORK
parse_argument "$@"; ((res |= $?))
execute_test_argument; ((res |= $?))
# Print ellapsed time (after calculate it)
end_time=$(date +%s)
sec_time=$((end_time - start_time))
printf -v script_time '%dh:%dm:%ds' $((sec_time/3600)) $((sec_time%3600/60)) $((sec_time%60))
echo -ne "Script $(basename "$0"), in $script_time, Returned -> $res\n\n"
return "$res"
}
if ! (return 0 2>/dev/null); then if ! (return 0 2>/dev/null); then
run_test "$@"; exit $? run_test "$@"; exit $?
fi fi