sfeed_update tests: improve, wip - sfeed_tests - sfeed tests and RSS and Atom files
(HTM) git clone git://git.codemadness.org/sfeed_tests
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 169b3ffdd7096e5fe0df2475e849b2bac8e6c757
(DIR) parent dc8fa93e7c68261a0996dcb0b757ad3a0867e1b2
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Thu, 28 Dec 2023 12:16:21 +0100
sfeed_update tests: improve, wip
Diffstat:
M input/sfeed_update/test.sh | 155 +++++++++++++++++++++++--------
1 file changed, 116 insertions(+), 39 deletions(-)
---
(DIR) diff --git a/input/sfeed_update/test.sh b/input/sfeed_update/test.sh
@@ -154,6 +154,7 @@ feeds() {
kill -TERM "$pid"
} &
wait "$pid"
+ # NOTE: 143 - 15 (SIGTERM) = 128
expect "143" "$?" "exit statuscode"
test -d "$feedpath"
@@ -235,26 +236,94 @@ feeds() {
}
!
- # TODO: check error message
TMPDIR=/noaccess "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
expect "1" "$?" "exit statuscode"
TMPDIR="/tmp" "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
expect "0" "$?" "exit statuscode"
- # TODO:
- # check if TMPDIR="" is actually used and cleaned up.
- #tmp="$(mktemp -d)"
- #mkdir -p "$tmp"
- #TMPDIR="$tmp" ...
- #dircount=0; for d in "$tmp"/*/; do echo "$d"; dircount=$((dircount+1)); done
- #test "$dircount" = "1"
+ cleanup
+
+ echo "test_tmpdir: test OK" >&2
+}
+
+test_tmpdir_cleanup() {
+ init_test
+
+ tmp="$(mktemp -d 'sfeed_tmpdir_XXXXXXXX')"
+
+ createrc > "$rc" <<!
+sfeedpath="$feedpath"
+
+#cleanup() {
+# true
+#}
- # TODO: check if temporary directory is cleaned succesfully after run.
+feeds() {
+ true
+}
+!
+ TMPDIR="$tmp" "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
+ expect "0" "$?" "exit statuscode"
+
+ # global expand, normally it should contain only one dir.
+ testdir=""
+ for d in "$tmp/"*/; do
+ testdir="$d"
+ done
+
+ test -d "$testdir"
+ expect "1" "$?" "feeds directory should not exist"
+
+ test -f "$testdir/jobs"
+ expect "1" "$?" "jobs file should not exist"
+
+ rm -r "$tmp"
cleanup
- echo "test_tmpdir: test OK" >&2
+ echo "test_tmpdir_cleanup: test OK" >&2
+}
+
+test_override_cleanup() {
+ init_test
+
+ tmp="$(mktemp -d 'sfeed_tmpdir_XXXXXXXX')"
+
+ createrc > "$rc" <<!
+sfeedpath="$feedpath"
+
+cleanup() {
+ true
+}
+
+feeds() {
+ true
+}
+!
+
+ TMPDIR="$tmp" "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
+ expect "0" "$?" "exit statuscode"
+
+ # global expand, normally it should contain only one dir.
+ testdir=""
+ for d in "$tmp/"*/; do
+ testdir="$d"
+ done
+
+ test -d "$testdir"
+ expect "0" "$?" "feeds directory should still exist"
+
+ test -f "$testdir/jobs"
+ expect "0" "$?" "jobs file should still exist"
+
+ test -f "$testdir/ok"
+ expect "0" "$?" "status file should still exist"
+
+ rm -r "$tmp"
+ cleanup
+
+ echo "test_override_cleanup: test OK" >&2
}
test_parameters() {
@@ -312,11 +381,10 @@ feeds() {
echo "test_parameters: test OK" >&2
}
-# TODO
test_override_fetch() {
init_test
- paramfile="$(mktemp /tmp/param_XXXXXXXX)"
+ paramfile="$(mktemp /tmp/fetch_param_XXXXXXXX)"
createrc > "$rc" <<!
sfeedpath="$feedpath"
@@ -324,8 +392,11 @@ maxjobs=1 # must be run sequential
# fetch(name, url, feedfile)
fetch() {
- # TODO: check parameters also
- printf '%s|%s|%s|\n' "\$1" "\$2" "\$3" >> "$paramfile"
+ # test name, url parameters.
+ # dirname of feedfile is random, test only the base name which should
+ # match the feed name, with some characters replaced.
+ b="\${3##*/}"
+ printf '%s|%s|%s|\n' "\$1" "\$2" "\$b" >> "$paramfile"
case "\$1" in
1)
@@ -334,28 +405,38 @@ fetch() {
echo "<item><title>b</title></item>";;
3)
echo "<item><title>c</title></item>";;
+ # test / in names, allowed, but path name for feed itself are replaced to underscore.
+ "funky/name")
+ echo "<item><title>d</title></item>";;
+ "funky*name")
+ echo "<item><title>e</title></item>";;
+ # test spaces in names
+ "name with spaces")
+ echo "<item><title>f</title></item>";;
esac
}
feeds() {
# feed <name> <feedurl> [basesiteurl] [encoding]
- feed "1" "file:///dev/null"
- feed "2" "file:///dev/null"
- feed "3" "file:///dev/null"
+ feed "1" "file:///dev/null1"
+ feed "2" "file:///dev/null2"
+ feed "3" "file:///dev/null3"
+ feed "funky/name" "file:///dev/null4"
+ feed "funky*name" "file:///dev/null5"
+ feed "name with spaces" "file:///dev/null6"
}
!
"$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
expect "0" "$?" "exit statuscode"
- # TODO: check results.
-# ls -l "$feedpath" # DEBUG
-
- result=$(cut -f 2 "$feedpath/1" "$feedpath/2" "$feedpath/3" | tr -d '\n')
- expect "abc" "$result" "results of feed files"
+ result=$(cut -f 2 "$feedpath/1" "$feedpath/2" "$feedpath/3" \
+ "$feedpath/funky_name" "$feedpath/funky*name" "$feedpath/name with spaces" | tr -d '\n')
+ expect "abcdef" "$result" "results of feed files"
- # TODO: check paramfile contents.
- cat "$paramfile"
+ paramstr=$(cat "$paramfile" | tr -d '\n')
+ expect '1|file:///dev/null1|1|2|file:///dev/null2|2|3|file:///dev/null3|3|funky/name|file:///dev/null4|funky_name|funky*name|file:///dev/null5|funky*name|name with spaces|file:///dev/null6|name with spaces|'\
+ "$paramstr" "test parameters"
cleanup
rm -f "$paramfile"
@@ -753,16 +834,26 @@ feeds() {
}
# TODO
-#test_override_fetch
+test_override_cleanup
+test_override_fetch
+
#test_override_convertencoding
#test_override_parse
#test_override_filter
#test_override_merge
#test_override_order
+# TODO:
+
+
+
+exit 0
+
+
test_normal
test_one_fail
test_tmpdir
+test_tmpdir_cleanup
test_config_invocation
test_parameters
@@ -780,18 +871,4 @@ test_sigterm
# TODO:
# - test proper cleanup on SIGTERM.
-# - test weird feednames.
-# - check filenames, '*', '/', newline.
-# - test translation of '/' to '_' in feednames.
# - test override functions.
-# - test merge, order logic.
-# x add existing test-cases and make them automatic:
-# x decoding/
-# x exitstatus/
-# x merge/
-# x test error messages, grep for "FAIL (ENCODING)" etc.
-# x test $TMPDIR.
-# x test if feeds() is not set.
-# x test empty fields (for xargs etc).
-# x for testing, remove dependency on cURL.
-# x for testing, remove dependency on iconv?