forked from enlightenment/terminology
tests: add first tests + test framework
This commit is contained in:
parent
2db4a0e980
commit
826606e0c3
|
@ -0,0 +1,42 @@
|
||||||
|
Very small test framework for Terminology
|
||||||
|
|
||||||
|
Goal
|
||||||
|
----
|
||||||
|
|
||||||
|
Avoid regressions in Terminology's code that parse and interprets escape
|
||||||
|
codes.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
------------
|
||||||
|
|
||||||
|
- `tytest`, compiled with `-D tests=true` when running `meson`
|
||||||
|
- a posix shell
|
||||||
|
|
||||||
|
|
||||||
|
Tytest
|
||||||
|
------
|
||||||
|
|
||||||
|
`tytest` is a simple binary that takes escape codes in input and output an md5
|
||||||
|
sum. This checksum is computed on the state of terminology after parsing and
|
||||||
|
interpreting those escape codes.
|
||||||
|
|
||||||
|
|
||||||
|
Test cases
|
||||||
|
----------
|
||||||
|
|
||||||
|
Test cases are simple shell scripts that output escape codes.
|
||||||
|
|
||||||
|
How to run the tests
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
A shell script called `run_tests.sh` is provided to run all the tests given in
|
||||||
|
a test results file.
|
||||||
|
See `run_tests.sh --help` for more information.
|
||||||
|
|
||||||
|
Test results file
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
When running a test through `tytest`, an md5 sum is computed. This checksum is
|
||||||
|
stored with the name of the test in a file called `tests.results`.
|
||||||
|
If terminology's behaviour changed, then the checksum will change. This will
|
||||||
|
be noticed by `run_tests.sh` and will show those tests as failed.
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# fill space with E
|
||||||
|
printf '\033#8'
|
||||||
|
#set color
|
||||||
|
printf '\033[46;31;3m'
|
||||||
|
# set top/bottom margins:
|
||||||
|
printf '\033[10;20r'
|
||||||
|
# allow left/right margins
|
||||||
|
printf '\033[?69h'
|
||||||
|
# set left/right margins:
|
||||||
|
printf '\033[5;15s'
|
||||||
|
# fill larger rect with @
|
||||||
|
printf '\033[64;2;3;23;20$x'
|
||||||
|
# change color
|
||||||
|
printf '\033[0m\033[45;32;1m'
|
||||||
|
# top left corner with [
|
||||||
|
printf '\033[91;3;5;12;7$x'
|
||||||
|
# top right corner with ]
|
||||||
|
printf '\033[93;8;12;13;17$x'
|
||||||
|
# bottom left corner with (
|
||||||
|
printf '\033[40;18;3;22;8$x'
|
||||||
|
# top right corner with )
|
||||||
|
printf '\033[41;17;14;23;18$x'
|
||||||
|
# change color
|
||||||
|
printf '\033[0m\033[44;33;4m'
|
||||||
|
# one in center with #
|
||||||
|
printf '\033[35;12;12;12;12$x'
|
||||||
|
|
||||||
|
# cursor to 0,0
|
||||||
|
printf '\033[H'
|
||||||
|
echo '--------------------------------------------------'
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# fill space with E
|
||||||
|
printf '\033#8'
|
||||||
|
#set color
|
||||||
|
printf '\033[46;31;3m'
|
||||||
|
# restrict cursor
|
||||||
|
printf '\033[?6h'
|
||||||
|
# set top/bottom margins:
|
||||||
|
printf '\033[10;20r'
|
||||||
|
# allow left/right margins
|
||||||
|
printf '\033[?69h'
|
||||||
|
# set left/right margins:
|
||||||
|
printf '\033[5;15s'
|
||||||
|
# fill larger rect with @
|
||||||
|
printf '\033[64;2;3;23;20$x'
|
||||||
|
# change color
|
||||||
|
printf '\033[0m\033[45;32;1m'
|
||||||
|
# top left corner with [
|
||||||
|
printf '\033[91;3;5;12;7$x'
|
||||||
|
# top right corner with ]
|
||||||
|
printf '\033[93;8;12;13;17$x'
|
||||||
|
# bottom left corner with (
|
||||||
|
printf '\033[40;18;3;22;8$x'
|
||||||
|
# top right corner with )
|
||||||
|
printf '\033[41;17;14;23;18$x'
|
||||||
|
# change color
|
||||||
|
printf '\033[0m\033[44;33;4m'
|
||||||
|
# one in center with #
|
||||||
|
printf '\033[35;12;12;12;12$x'
|
||||||
|
|
||||||
|
# cursor to 0,0
|
||||||
|
printf '\033[H'
|
||||||
|
echo '--------------------------------------------------'
|
|
@ -0,0 +1,169 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
TYTEST="../build/src/bin/tytest"
|
||||||
|
RESULTS="tests.results"
|
||||||
|
TESTDIR="."
|
||||||
|
VERBOSE=0
|
||||||
|
DEBUG=0
|
||||||
|
EXIT_ON_FAILURE=0
|
||||||
|
NB_TESTS=0
|
||||||
|
OK_TESTS=0
|
||||||
|
FAILED_TESTS=0
|
||||||
|
|
||||||
|
die()
|
||||||
|
{
|
||||||
|
echo "$*" 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
ESC="\033"
|
||||||
|
GREEN="${ESC}[32m"
|
||||||
|
BOLD_RED="${ESC}[31;1m"
|
||||||
|
RESET_COLOR="${ESC}[0m"
|
||||||
|
|
||||||
|
ok()
|
||||||
|
{
|
||||||
|
TEST=$1
|
||||||
|
OK_TESTS=$((OK_TESTS + 1))
|
||||||
|
if [ $VERBOSE -ne 0 ]; then
|
||||||
|
printf "${GREEN}✔${RESET_COLOR}\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
failed()
|
||||||
|
{
|
||||||
|
TEST=$1
|
||||||
|
FAILED_TESTS=$((FAILED_TESTS + 1))
|
||||||
|
if [ $VERBOSE -ne 0 ]; then
|
||||||
|
printf "${BOLD_RED}✘${RESET_COLOR}\n"
|
||||||
|
fi
|
||||||
|
if [ $EXIT_ON_FAILURE -ne 0 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
summary()
|
||||||
|
{
|
||||||
|
if [ $VERBOSE -ne 0 ]; then
|
||||||
|
if [ $FAILED_TESTS -ne 0 ]; then
|
||||||
|
printf "$BOLD_RED=== $OK_TESTS/$NB_TESTS tests passed, $FAILED_TESTS tests failed ===$RESET_COLOR\n"
|
||||||
|
else
|
||||||
|
printf "$GREEN=== $OK_TESTS/$NB_TESTS tests passed ===$RESET_COLOR\n"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $FAILED_TESTS -ne 0 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
show_help()
|
||||||
|
{
|
||||||
|
cat <<HELP_EOF
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
$0 [options]
|
||||||
|
|
||||||
|
where options are:
|
||||||
|
|
||||||
|
-t, --tytest=PATH Path to the tytest binary
|
||||||
|
-r, --results=PATH Path to the result file
|
||||||
|
-d, --testdir=PATH Path to the test files
|
||||||
|
-e, --exitonfailure Exit as soon as a test fails
|
||||||
|
|
||||||
|
Misc options:
|
||||||
|
-v, --verbose Be verbose about what is being done.
|
||||||
|
--debug Debug tests
|
||||||
|
-h, --help Show this help.
|
||||||
|
HELP_EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
arg=$1
|
||||||
|
shift
|
||||||
|
option=$(echo "'$arg'" | cut -d'=' -f1 | tr -d "'")
|
||||||
|
value=$(echo "'$arg'" | cut -d'=' -f2- | tr -d "'")
|
||||||
|
if [ x"$value" = x"$option" ]; then
|
||||||
|
value=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $option in
|
||||||
|
-h|-help|--help)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-v|-verbose|--verbose)
|
||||||
|
VERBOSE=1
|
||||||
|
;;
|
||||||
|
-debug|--debug)
|
||||||
|
DEBUG=1
|
||||||
|
;;
|
||||||
|
-t|-tytest|--tytest)
|
||||||
|
if [ -z "$value" ]; then
|
||||||
|
value=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
TYTEST=$value
|
||||||
|
;;
|
||||||
|
-r|-results|--results)
|
||||||
|
if [ -z "$value" ]; then
|
||||||
|
value=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
RESULTS=$value
|
||||||
|
;;
|
||||||
|
-d|-testdir|--testdir)
|
||||||
|
if [ -z "$value" ]; then
|
||||||
|
value=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
TESTDIR=$value
|
||||||
|
;;
|
||||||
|
-e|-exitonfailure|--exitonfailure)
|
||||||
|
EXIT_ON_FAILURE=1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $option" 1>&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! -x "$TYTEST" ]; then
|
||||||
|
die "Invalid tytest binary file: $TYTEST"
|
||||||
|
fi
|
||||||
|
if [ ! -r "$RESULTS" ]; then
|
||||||
|
die "Invalid results file: $RESULTS"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$TESTDIR" ]; then
|
||||||
|
die "Invalid test directory: $TESTDIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $DEBUG -ne 0 ]; then
|
||||||
|
cat <<EOF
|
||||||
|
Using:
|
||||||
|
|
||||||
|
TYTEST=$TYTEST
|
||||||
|
RESULTS=$RESULTS
|
||||||
|
TESTDIR=$TESTDIR
|
||||||
|
EXIT_ON_FAILURE=$EXIT_ON_FAILURE
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
while read -r TEST EXPECTED_CHECKSUM; do
|
||||||
|
NB_TESTS=$((NB_TESTS + 1))
|
||||||
|
if [ $VERBOSE -ne 0 ]; then
|
||||||
|
printf "%s... " "$TEST"
|
||||||
|
fi
|
||||||
|
TEST_CHECKSUM=$("$TESTDIR"/"$TEST" | "$TYTEST")
|
||||||
|
if [ $DEBUG -ne 0 ]; then
|
||||||
|
printf "(got %s, expected %s) " "$TEST_CHECKSUM" "$EXPECTED_CHECKSUM"
|
||||||
|
fi
|
||||||
|
if [ "$TEST_CHECKSUM" = "$EXPECTED_CHECKSUM" ]; then
|
||||||
|
ok "$TEST"
|
||||||
|
else
|
||||||
|
failed "$TEST"
|
||||||
|
fi
|
||||||
|
done < "$RESULTS"
|
||||||
|
summary
|
|
@ -0,0 +1,2 @@
|
||||||
|
decfra-no-restrict-cursor.sh 433641ae9b98af9dac2b8da49e1ae321
|
||||||
|
decfra-restrict-cursor.sh ebc4be442e89e6e70d1783063429c004
|
Loading…
Reference in New Issue