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() {
# we need the pairs sorted due to how the sed expr generation works
local IFS=$'\01\n'
local i
local i sorted
sorted=($(for (( i=0; i<${#search[@]}; i++ )); do
echo "${column[i]}"$'\01'"${search[i]}"
done | sort -n -t$'\01'))
local last=0
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}"
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
last="${sorted[i]}"
done
@ -238,7 +238,7 @@ data_replace_value() {
if [[ $column == 0 ]]; then
local expr="s$ctrl^$(_sed_sanitize "$2")\(${delim}.*\)$ctrl$(_sed_sanitize "$3")\1$ctrl"
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
sed -i "$expr" "$1"
@ -273,7 +273,7 @@ data_replace() {
if [[ $column == 0 ]]; then
local expr="s$ctrl^$(_sed_sanitize "$2")${delim}.*$ctrl"
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
@ -310,7 +310,7 @@ data_yeet() {
if [[ $column == 0 ]]; then
local expr="/^$(_sed_sanitize "$2")${delim}.*/d"
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

View file

@ -60,7 +60,39 @@ EOF
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() {
curl -s -I localhost:1337
}
@ -68,6 +100,14 @@ server_res_header() {
match_sub="HTTP.sh"
}
server_res_header() {
tst() {
curl -s -v localhost:1337 2>&1
}
match_sub="HTTP.sh"
}
server_res_header_custom() {
prepare() {
cat <<"EOF" > app/webroot/meow.shs
@ -162,6 +202,14 @@ subtest_list=(
server_get_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_custom

View file

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

17
tst.sh
View file

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