Compare commits

...

5 commits

4 changed files with 69 additions and 12 deletions

View file

@ -70,17 +70,17 @@ alias _data_parse_pairs='
_data_gen_expr() { _data_gen_expr() {
# we need the pairs sorted due to how the sed expr generation works # we need the pairs sorted due to how the sed expr generation works
local IFS=$'\01\n' local IFS=$'\01\n'
local i local i sorted
sorted=($(for (( i=0; i<${#search[@]}; i++ )); do sorted=($(for (( i=0; i<${#search[@]}; i++ )); do
echo "${column[i]}"$'\01'"${search[i]}" echo "${column[i]}"$'\01'"${search[i]}"
done | sort -n -t$'\01')) done | sort -n -t$'\01'))
local last=0 local last=0
for (( i=0; i<${#sorted[@]}; i=i+2 )); do for (( i=0; i<${#sorted[@]}; i=i+2 )); do
if [[ $((sorted[i] - last)) -le 1 ]]; then if [[ $((sorted[i] - last)) -le 1 && $i != 0 ]]; then
expr+="$(_sed_sanitize "${sorted[i+1]}")${delim}" expr+="$(_sed_sanitize "${sorted[i+1]}")${delim}"
else else
expr+="$(repeat $((sorted[i] - last)) ".*$delim")$(_sed_sanitize "${sorted[i+1]}")${delim}" expr+="$(repeat $((sorted[i] - last)) "[^${delim}]*${delim}")$(_sed_sanitize "${sorted[i+1]}")${delim}"
fi fi
last="${sorted[i]}" last="${sorted[i]}"
done done
@ -238,7 +238,7 @@ data_replace_value() {
if [[ $column == 0 ]]; then if [[ $column == 0 ]]; then
local expr="s$ctrl^$(_sed_sanitize "$2")\(${delim}.*\)$ctrl$(_sed_sanitize "$3")\1$ctrl" local expr="s$ctrl^$(_sed_sanitize "$2")\(${delim}.*\)$ctrl$(_sed_sanitize "$3")\1$ctrl"
else else
local expr="s$ctrl^\($(repeat $column ".*$delim")\)$(_sed_sanitize "$2")\($delim$(repeat $(( $(cat "${1}.cols") - column - 1 )) ".*$delim")\)"'$'"$ctrl\1$(_sed_sanitize "$3")\2$ctrl" local expr="s$ctrl^\($(repeat $column "[^${delim}]*${delim}")\)$(_sed_sanitize "$2")\($delim$(repeat $(( $(cat "${1}.cols") - column - 1 )) "[^${delim}]*${delim}")\)"'$'"$ctrl\1$(_sed_sanitize "$3")\2$ctrl"
fi fi
sed -i "$expr" "$1" sed -i "$expr" "$1"
@ -273,7 +273,7 @@ data_replace() {
if [[ $column == 0 ]]; then if [[ $column == 0 ]]; then
local expr="s$ctrl^$(_sed_sanitize "$2")${delim}.*$ctrl" local expr="s$ctrl^$(_sed_sanitize "$2")${delim}.*$ctrl"
else else
local expr="s$ctrl^$(repeat $column ".*$delim")$(_sed_sanitize "$2")$delim$(repeat $(( $(cat "${store}.cols") - column - 1 )) ".*$delim")"'$'"$ctrl" local expr="s$ctrl^$(repeat $column "[^${delim}]*${delim}")$(_sed_sanitize "$2")$delim$(repeat $(( $(cat "${store}.cols") - column - 1 )) "[^${delim}]*${delim}")"'$'"$ctrl"
fi fi
# fi # fi
@ -310,7 +310,7 @@ data_yeet() {
if [[ $column == 0 ]]; then if [[ $column == 0 ]]; then
local expr="/^$(_sed_sanitize "$2")${delim}.*/d" local expr="/^$(_sed_sanitize "$2")${delim}.*/d"
else else
local expr="/^$(repeat $column ".*$delim")$(_sed_sanitize "$2")$delim$(repeat $(( $(cat "${store}.cols") - column - 1 )) ".*$delim")"'$'"/d" local expr="/^$(repeat $column "[^${delim}]*${delim}")$(_sed_sanitize "$2")$delim$(repeat $(( $(cat "${store}.cols") - column - 1 )) "[^${delim}]*${delim}")"'$'"/d"
fi fi
fi fi

View file

@ -60,7 +60,39 @@ EOF
match="nyaa" match="nyaa"
} }
server_res_header() { server_patch_dummy() {
prepare() {
cat <<"EOF" > app/webroot/meow.shs
#!/bin/bash
echo "${r[method]}"
EOF
}
tst() {
curl -s "localhost:1337/meow.shs" -X PATCH
}
match="PATCH"
}
server_put_dummy() {
tst() {
curl -s "localhost:1337/meow.shs" -X PUT
}
match="PUT"
}
server_delete_dummy() {
tst() {
curl -s "localhost:1337/meow.shs" -X DELETE
}
match="DELETE"
}
server_head() {
# known to fail; TODO for another day
tst() { tst() {
curl -s -I localhost:1337 curl -s -I localhost:1337
} }
@ -68,6 +100,14 @@ server_res_header() {
match_sub="HTTP.sh" match_sub="HTTP.sh"
} }
server_res_header() {
tst() {
curl -s -v localhost:1337 2>&1
}
match_sub="HTTP.sh"
}
server_res_header_custom() { server_res_header_custom() {
prepare() { prepare() {
cat <<"EOF" > app/webroot/meow.shs cat <<"EOF" > app/webroot/meow.shs
@ -162,6 +202,14 @@ subtest_list=(
server_get_param server_get_param
server_post_param server_post_param
# currently functionally equivalent
server_patch_dummy
server_put_dummy
server_delete_dummy
## currently broken, TODO
# server_head
server_res_header server_res_header
server_res_header_custom server_res_header_custom

View file

@ -83,7 +83,7 @@ notORM_replace_oldsyntax() {
data_get "$store" { } out data_get "$store" { } out
out[2]='meow!' out[2]='meow!'
data_replace "$store" 4 out 1 || return $? data_replace "$store" 4 out 1 || return $?
data_get "$store" 4 || return $? data_get "$store" 4 1 || return $?
[[ "${res[@]}" == "${out[@]}" ]] && return 0 || return 1 [[ "${res[@]}" == "${out[@]}" ]] && return 0 || return 1
} }
} }

17
tst.sh
View file

@ -1,4 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
trap ctrl_c INT
ctrl_c() {
pkill -P $$
echo -e "Interrupted and cleaned up."
return 255
}
_defaults() { _defaults() {
match="" match=""
@ -52,6 +58,7 @@ on_fatal() {
IFS=$'\n' IFS=$'\n'
for i in "$@"; do for i in "$@"; do
if [[ ! -f "$i" ]]; then if [[ ! -f "$i" ]]; then
echo "ENOENT: $i"
echo -e "$0 - basic test framework\n\nusage: $0 <test> [test] [...]" echo -e "$0 - basic test framework\n\nusage: $0 <test> [test] [...]"
exit 1 exit 1
fi fi
@ -116,10 +123,12 @@ _final_cleanup() {
for i in $(jobs -p); do for i in $(jobs -p); do
pkill -P $i pkill -P $i
done done
sleep 2 if [[ "$(jobs -p)" != '' ]]; then
for i in $(jobs -p); do sleep 1
pkill -9 -P $i for i in $(jobs -p); do
done pkill -9 -P $i
done
fi
pkill -P $$ pkill -P $$
} }