mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Grab GITs shell script-based test infrastructure and add "Hello world" test
This commit is contained in:
parent
f42b39ee3c
commit
d394cb0bc1
@ -14,9 +14,27 @@ TESTDEPS = \
|
||||
sgml-parser: $(TESTDEPS) sgml-parser.o
|
||||
$(call cmd,link)
|
||||
|
||||
test: sgml-parser
|
||||
./sgml-parser
|
||||
TESTS = $(wildcard test-*)
|
||||
|
||||
$(TESTS):
|
||||
@echo "*** $@ ***"; $(call shellquote,$(SHELL)) $@ $(TEST_OPTS)
|
||||
|
||||
test: sgml-parser $(TESTS)
|
||||
|
||||
clean-local:
|
||||
rm -fr trash
|
||||
|
||||
CLEAN += sgml-parser.o
|
||||
|
||||
.PHONY: $(TESTS)
|
||||
.NOPARALLEL:
|
||||
|
||||
include $(top_srcdir)/Makefile.lib
|
||||
|
||||
# Shell quote;
|
||||
# Result of this needs to be placed inside ''
|
||||
# XXX: Placed here because Vim cannot highlight things right afterwards
|
||||
shq = $(subst ','\'',$(1))
|
||||
# This has surrounding ''
|
||||
shellquote = '$(call shq,$(1))'
|
||||
|
||||
|
165
src/dom/test/libtest
Executable file
165
src/dom/test/libtest
Executable file
@ -0,0 +1,165 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005 Junio C Hamano
|
||||
#
|
||||
|
||||
# For repeatability, reset the environment to known value.
|
||||
LANG=C
|
||||
LC_ALL=C
|
||||
PAGER=cat
|
||||
TZ=UTC
|
||||
export LANG LC_ALL PAGER TZ
|
||||
|
||||
# Each test should start with something like this, after copyright notices:
|
||||
#
|
||||
# test_description='Description of this test...
|
||||
# This test checks if command xyzzy does the right thing...
|
||||
# '
|
||||
# . ./test-lib.sh
|
||||
|
||||
error () {
|
||||
echo "* error: $*"
|
||||
trap - exit
|
||||
exit 1
|
||||
}
|
||||
|
||||
say () {
|
||||
echo "* $*"
|
||||
}
|
||||
|
||||
test "${test_description}" != "" ||
|
||||
error "Test script did not set test_description."
|
||||
|
||||
while test "$#" -ne 0
|
||||
do
|
||||
case "$1" in
|
||||
-d|--d|--de|--deb|--debu|--debug)
|
||||
debug=t; shift ;;
|
||||
-i|--i|--im|--imm|--imme|--immed|--immedi|--immedia|--immediat|--immediate)
|
||||
immediate=t; shift ;;
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "$test_description"
|
||||
exit 0 ;;
|
||||
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
|
||||
verbose=t; shift ;;
|
||||
*)
|
||||
break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
exec 5>&1
|
||||
if test "$verbose" = "t"
|
||||
then
|
||||
exec 4>&2 3>&1
|
||||
else
|
||||
exec 4>/dev/null 3>/dev/null
|
||||
fi
|
||||
|
||||
test_failure=0
|
||||
test_count=0
|
||||
|
||||
trap 'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1' exit
|
||||
|
||||
# Test the binaries we have just built. The tests are kept in
|
||||
# test/ subdirectory and are run in test/trash subdirectory.
|
||||
export PATH="$(pwd):$PATH"
|
||||
|
||||
for dep in $DEPS; do
|
||||
test -e "$dep" || error "You haven't built things yet, have you?"
|
||||
done
|
||||
|
||||
|
||||
# You are not expected to call test_ok_ and test_failure_ directly, use
|
||||
# the text_expect_* functions instead.
|
||||
|
||||
test_ok_ () {
|
||||
test_count=$(expr "$test_count" + 1)
|
||||
say " ok $test_count: $@"
|
||||
}
|
||||
|
||||
test_failure_ () {
|
||||
test_count=$(expr "$test_count" + 1)
|
||||
test_failure=$(expr "$test_failure" + 1);
|
||||
say "FAIL $test_count: $1"
|
||||
shift
|
||||
echo "$@" | sed -e 's/^/ /'
|
||||
test "$immediate" = "" || { trap - exit; exit 1; }
|
||||
}
|
||||
|
||||
|
||||
test_debug () {
|
||||
test "$debug" = "" || eval "$1"
|
||||
}
|
||||
|
||||
test_run_ () {
|
||||
eval >&3 2>&4 "$1"
|
||||
eval_ret="$?"
|
||||
return 0
|
||||
}
|
||||
|
||||
test_expect_failure () {
|
||||
test "$#" = 2 ||
|
||||
error "bug in the test script: not 2 parameters to test-expect-failure"
|
||||
say >&3 "expecting failure: $2"
|
||||
test_run_ "$2"
|
||||
if [ "$?" = 0 -a "$eval_ret" != 0 ]
|
||||
then
|
||||
test_ok_ "$1"
|
||||
else
|
||||
test_failure_ "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
test_expect_success () {
|
||||
test "$#" = 2 ||
|
||||
error "bug in the test script: not 2 parameters to test-expect-success"
|
||||
say >&3 "expecting success: $2"
|
||||
test_run_ "$2"
|
||||
if [ "$?" = 0 -a "$eval_ret" = 0 ]
|
||||
then
|
||||
test_ok_ "$1"
|
||||
else
|
||||
test_failure_ "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
test_expect_code () {
|
||||
test "$#" = 3 ||
|
||||
error "bug in the test script: not 3 parameters to test-expect-code"
|
||||
say >&3 "expecting exit code $1: $3"
|
||||
test_run_ "$3"
|
||||
if [ "$?" = 0 -a "$eval_ret" = "$1" ]
|
||||
then
|
||||
test_ok_ "$2"
|
||||
else
|
||||
test_failure_ "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
test_done () {
|
||||
trap - exit
|
||||
case "$test_failure" in
|
||||
0)
|
||||
# We could:
|
||||
# cd .. && rm -fr trash
|
||||
# but that means we forbid any tests that use their own
|
||||
# subdirectory from calling test_done without coming back
|
||||
# to where they started from.
|
||||
# The Makefile provided will clean this test area so
|
||||
# we will leave things as they are.
|
||||
|
||||
say "passed all $test_count test(s)"
|
||||
exit 0 ;;
|
||||
|
||||
*)
|
||||
say "failed $test_failure among $test_count test(s)"
|
||||
exit 1 ;;
|
||||
|
||||
esac
|
||||
}
|
||||
|
||||
# Test repository
|
||||
test=trash
|
||||
rm -fr "$test"
|
||||
mkdir "$test"
|
||||
cd "$test"
|
34
src/dom/test/test-sgml-parser-basic
Executable file
34
src/dom/test/test-sgml-parser-basic
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005 Jonas Fonseca
|
||||
#
|
||||
|
||||
test_description='Test the very basics parsing of SGML documents.
|
||||
|
||||
This test runs very basic features, like checking that nodes are placed
|
||||
correctly in the DOM tree.
|
||||
'
|
||||
|
||||
. ./libtest
|
||||
|
||||
################################################################
|
||||
# init-db has been done in an empty repository.
|
||||
# make sure it is empty.
|
||||
|
||||
sgml-parser --uri "test:hello-world" \
|
||||
--src "<html><body><p>Hello World!</p></body></html>" \
|
||||
> output
|
||||
|
||||
cat > expected <<EOF
|
||||
#document: test:hello-world
|
||||
element: html
|
||||
element: body
|
||||
element: p
|
||||
#text: Hello World!
|
||||
EOF
|
||||
|
||||
test_expect_success \
|
||||
'Test a small document.' \
|
||||
'cmp output expected'
|
||||
|
||||
test_done
|
Loading…
Reference in New Issue
Block a user