mirror of
https://github.com/sstephenson/bats.git
synced 2026-02-26 09:48:10 +01:00
Initial commit
This commit is contained in:
51
libexec/bats-preprocess
Executable file
51
libexec/bats-preprocess
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
encode_name() {
|
||||
local name="$1"
|
||||
local result="test_"
|
||||
|
||||
if [[ ! "$name" =~ [^[:alnum:]\ _-] ]]; then
|
||||
name="${name//_/-5f}"
|
||||
name="${name//-/-2d}"
|
||||
name="${name// /_}"
|
||||
result+="$name"
|
||||
else
|
||||
local length="${#name}"
|
||||
local char i
|
||||
|
||||
for ((i=0; i<length; i++)); do
|
||||
char="${name:$i:1}"
|
||||
if [ "$char" = " " ]; then
|
||||
result+="_"
|
||||
elif [[ "$char" =~ [[:alnum:]] ]]; then
|
||||
result+="$char"
|
||||
else
|
||||
result+="$(printf -- "-%02x" \'"$char")"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo "$result"
|
||||
}
|
||||
|
||||
tests=()
|
||||
index=0
|
||||
|
||||
while IFS= read -r line; do
|
||||
index=$(($index + 1))
|
||||
quoted_name="$(expr "$line" : '^ *@test *\([^ ].*\) *{ *$' || true)"
|
||||
|
||||
if [ -n "$quoted_name" ]; then
|
||||
name="$(eval echo "$quoted_name")"
|
||||
encoded_name="$(encode_name "$name")"
|
||||
tests["${#tests[@]}"]="$encoded_name"
|
||||
echo "${encoded_name}() { bats_test_info ${quoted_name} ${index}"
|
||||
else
|
||||
echo "$line"
|
||||
fi
|
||||
done
|
||||
|
||||
for test_name in "${tests[@]}"; do
|
||||
echo "bats_test_function ${test_name}"
|
||||
done
|
||||
Reference in New Issue
Block a user