You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# -*- mode: shell-script -*-
exname="$(basename $0)"
if [ -t 1 ]; then GRAY=$(echo -en "\e[1;30m") RED=$(echo -en "\e[1;31m") GREEN=$(echo -en "\e[1;32m") YELLOW=$(echo -en "\e[1;33m") BLUE=$(echo -en "\e[1;34m") PINK=$(echo -en "\e[1;35m") CYAN=$(echo -en "\e[1;36m") WHITE=$(echo -en "\e[1;37m")
DARKGRAY=$(echo -en "\e[0;30m") DARKRED=$(echo -en "\e[0;31m") DARKGREEN=$(echo -en "\e[0;32m") DARKYELLOW=$(echo -en "\e[0;33m") DARKBLUE=$(echo -en "\e[0;34m") DARKPINK=$(echo -en "\e[0;35m") DARKCYAN=$(echo -en "\e[0;36m")
NORMAL=$(echo -en "\e[0m") fi
function out() { cat "$tmp_out"; } function err() { cat "$tmp_err"; } function errlvl() { cat "$tmp_errlvl"; } function var() { echo "${$1}"; }
function time_note() { echo "scale=1 ; l($1 - $empty_try_time) / l(10)" | bc -l }
function swallow_last_time() { if test "$sum_time" == "0" -a -z "$cmd"; then ## catches first empty try '' empty_try_time="$(echo "scale=0 ; $time_diff / 2" | bc -l )" return 0 fi test -z "$test_counter" && test_counter=0 || test_counter=$[$test_counter + 1] test -z "$sum_time" && sum_time=0 test_name=${exname}_${test_counter} if test "$time_diff"; then test_time_note=$(time_note $time_diff) profiler_info="$(echo -en "$profiler_info\n- $test_name\t$test_time_note")" sum_time=$(echo "scale=3; $sum_time + $time_diff" | bc -l ) fi
}
function time_exec() { beg_exec=$(date +%s.%N) ( echo "$*" | bash ) errorlevel=$? end_exec=$(date +%s.%N) time_diff="$(echo "scale=3; ($end_exec - $beg_exec)*1000000" | bc | cut -f 1 -d ".")" return $errorlevel }
function try() { swallow_last_time cmd="$*" desc=$(echo ; echo "$ $cmd" ) time_exec "$prefix_cmd$cmd" 1> "$tmp_out" 2> "$tmp_err" echo $? > "$tmp_errlvl" }
function apply_opt() { code=$(cat -) for opt in $*; do code=$(echo "$code" | $opt) done echo "$code" }
function NOCOLOR() { esc_char=$(echo -en "\e") cat - | sed -r "s/$esc_char\[[0-9]+(;[0-9]+)*m//g" }
function NOPOS() { esc_char=$(echo -en "\e\\[[0-9]\\+[GA]") cat - | sed "s/$esc_char//g" }
function TRIM() { cat - | sed -r "s/^ +//g" | sed -r "s/ +\$//g" }
function RTRIM() { cat - | sed -r "s/ +\$//g" }
function SIZE() { cat - | wc -c }
## usage: ## is ACTION [reg] CODE [OPTION ...] is() { local act="$1" type code msg test -z "$total" && total=0 shift
case "$1" in reg|part) type="$1" shift ;; *) type="" ;; esac
code="$1" shift #code=$(echo "$code" | apply_opt $*) msg=$(echo "$type $code" | cut -c -30)
output=$($act | apply_opt $*) case "$type" in "") test "$code" == "$output" ;; "part") [[ "$output" == *"$code"* ]] ;; ("reg") echo -n "$output" | egrep -- "$code" >/dev/null 2>&1 ;; esac && total=$[$total + 1] && echo "[v] is $act $msg" >/dev/null && return 0 echo "$desc" echo "[ ] is $act $msg" echo "--- $*" echo -n "$output" echo echo "--- DIFF" diff -u <(echo "$code") <(echo "$output") | egrep -v '^(---|\+\+\+) /' exit 1
}
function summary() { swallow_last_time
echo "$profiler_info" echo echo "$total tests conducted in $(echo "scale=3;$sum_time/1000000" | bc) s ($(time_note $sum_time))" } function noerror() { is err '' is errlvl 0 }
pid=$$ tmp_dir="/tmp" tmp_out="$tmp_dir/test.$pid.out.tmp" tmp_err="$tmp_dir/test.$pid.err.tmp" tmp_errlvl="$tmp_dir/test.$pid.errlvl.tmp"
try '' try '' try ''
|