sfeed_update: improve and add more tests - 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 6ac10d431099c3cb985e71233520a04d55c8176b
(DIR) parent 26d3f20af23c9374e58f9eb51cc8cbe05041ee85
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Thu, 28 Dec 2023 16:08:48 +0100
sfeed_update: improve and add more tests
Diffstat:
M input/sfeed_update/test.sh | 310 +++++++++++++++++++++++++++++--
1 file changed, 298 insertions(+), 12 deletions(-)
---
(DIR) diff --git a/input/sfeed_update/test.sh b/input/sfeed_update/test.sh
@@ -1,9 +1,5 @@
#!/bin/sh
-# TODO:
-# - test proper cleanup on SIGTERM.
-# - test parameters and contents when overriding functions.
-
SFEED_UPDATE="sfeed_update"
# expect(expect, got, [extra])
@@ -134,6 +130,8 @@ feeds() {
test_sigterm() {
init_test
+ tmp=$(mktemp '/tmp/sfeed_sigterm_cleanup_XXXXXXXX')
+
createrc > "$rc" <<!
sfeedpath="$feedpath"
@@ -143,6 +141,10 @@ feed() {
sleep 2
}
+cleanup() {
+ echo "I'm created on SIGTERM" > "$tmp"
+}
+
feeds() {
# feed <name> <feedurl> [basesiteurl] [encoding]
feed "1" "file:///dev/null"
@@ -164,8 +166,11 @@ feeds() {
test -d "$feedpath"
expect "0" "$?" "directory should exist: $feedpath"
- # TODO: test that temporary directory is properly cleaned up.
+ # test that cleanup is called on SIGTERM
+ test -f "$tmp"
+ expect "0" "$?" "file should exist (test for cleanup function on SIGTERM)"
+ rm -f "$tmp"
cleanup
echo "test_sigterm: test OK" >&2
@@ -617,6 +622,66 @@ feeds() {
echo "test_fail_convertencoding: test OK" >&2
}
+test_override_parse() {
+ init_test
+
+ paramfile="$(mktemp /tmp/parse_param_XXXXXXXX)"
+
+ createrc > "$rc" <<!
+sfeedpath="$feedpath"
+maxjobs=1
+
+fetch() {
+ echo
+}
+
+convertencoding() {
+ cat
+}
+
+# parse(name, feedurl, basesiteurl)
+parse() {
+ printf '%s|%s|%s|\n' "\$1" "\$2" "\$3" >> "$paramfile"
+
+ echo "\$1 title #\$1"
+}
+
+feeds() {
+ # feed <name> <feedurl> [basesiteurl] [encoding]
+ feed "1" "file:///dev/null1" "" ""
+ feed "2" "file:///dev/null2" "basesiteurl" "utf-8"
+ feed "3" "file:///dev/null3" "" "iso-8859-1"
+ feed "4" "file:///dev/null4" "" "utf-69"
+ feed "5" "file:///dev/null5" "" "from-utf-6"
+}
+!
+
+ "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
+ expect "0" "$?" "exit statuscode"
+
+ linecount=$(wc -l < "$log_stdout")
+ linecount=$((linecount+0))
+ expect "5" "$linecount" "5 lines should be written to stdout"
+
+ linecount=$(wc -l < "$log_stderr")
+ linecount=$((linecount+0))
+ expect "0" "$linecount" "0 line should be written to stderr"
+
+ result=$(cat "$feedpath/1" "$feedpath/2" "$feedpath/3" \
+ "$feedpath/4" "$feedpath/5" | tr -d '\n')
+ expect "1 title #12 title #23 title #34 title #45 title #5"\
+ "$result" "results of feed files"
+
+ paramstr=$(cat "$paramfile" | tr -d '\n')
+ expect '1|file:///dev/null1|file:///dev/null1|2|file:///dev/null2|basesiteurl|3|file:///dev/null3|file:///dev/null3|4|file:///dev/null4|file:///dev/null4|5|file:///dev/null5|file:///dev/null5|'\
+ "$paramstr" "test parameters"
+
+ cleanup
+ rm -f "$paramfile"
+
+ echo "test_override_parse: test OK" >&2
+}
+
test_fail_parse() {
init_test
@@ -665,6 +730,70 @@ feeds() {
echo "test_fail_parse: test OK" >&2
}
+test_override_filter() {
+ init_test
+
+ paramfile="$(mktemp /tmp/filter_param_XXXXXXXX)"
+
+ createrc > "$rc" <<!
+sfeedpath="$feedpath"
+maxjobs=1
+
+fetch() {
+ echo "\$1"
+}
+
+convertencoding() {
+ cat
+}
+
+# filter(name)
+filter() {
+ printf '%s|\n' "\$1" >> "$paramfile"
+
+ sed 's@^@BLA@g'
+}
+
+parse() {
+ cat
+}
+
+feeds() {
+ # feed <name> <feedurl> [basesiteurl] [encoding]
+ feed "1" "file:///dev/null1" "" ""
+ feed "2" "file:///dev/null2" "basesiteurl" "utf-8"
+ feed "3" "file:///dev/null3" "" "iso-8859-1"
+ feed "4" "file:///dev/null4" "" "utf-69"
+ feed "5" "file:///dev/null5" "" "from-utf-6"
+}
+!
+
+ "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
+ expect "0" "$?" "exit statuscode"
+
+ linecount=$(wc -l < "$log_stdout")
+ linecount=$((linecount+0))
+ expect "5" "$linecount" "5 lines should be written to stdout"
+
+ linecount=$(wc -l < "$log_stderr")
+ linecount=$((linecount+0))
+ expect "0" "$linecount" "0 line should be written to stderr"
+
+ result=$(cat "$feedpath/1" "$feedpath/2" "$feedpath/3" \
+ "$feedpath/4" "$feedpath/5" | tr -d '\n')
+ expect 'BLA1BLA2BLA3BLA4BLA5'\
+ "$result" "results of feed files"
+
+ paramstr=$(cat "$paramfile" | tr -d '\n')
+ expect '1|2|3|4|5|'\
+ "$paramstr" "test parameters"
+
+ cleanup
+ rm -f "$paramfile"
+
+ echo "test_override_filter: test OK" >&2
+}
+
test_fail_filter() {
init_test
@@ -767,6 +896,92 @@ feeds() {
echo "test_nothing_to_merge: test OK" >&2
}
+test_override_merge() {
+ init_test
+
+ paramfile="$(mktemp /tmp/merge_param_XXXXXXXX)"
+
+ createrc > "$rc" <<!
+sfeedpath="$feedpath"
+maxjobs=1
+
+# merge(name, oldfile, newfile)
+merge() {
+ # dirname of feedfile is random, test only the base name which should
+ # match the feed name, with some characters replaced.
+ b2="\${2##*/}"
+ b3="\${3##*/}"
+
+ printf '%s|%s|%s|\n' "\$1" "\$b2" "\$b3" >> "$paramfile"
+
+ cat "\$2" "\$3"
+}
+
+order() {
+ cat
+}
+
+fetch() {
+ echo "\$1"
+}
+
+convertencoding() {
+ cat
+}
+
+filter() {
+ cat
+}
+
+parse() {
+ cat
+}
+
+feeds() {
+ # feed <name> <feedurl> [basesiteurl] [encoding]
+ feed "1" "file:///dev/null1" "" ""
+ feed "2" "file:///dev/null2" "basesiteurl" "utf-8"
+ feed "3" "file:///dev/null3" "" "iso-8859-1"
+ feed "name with / in it" "file:///dev/null4" "" "utf-69"
+ feed "name with spaces" "file:///dev/null5" "" "from-utf-6"
+}
+!
+
+ "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
+ expect "0" "$?" "exit statuscode"
+
+ linecount=$(wc -l < "$log_stdout")
+ linecount=$((linecount+0))
+ expect "5" "$linecount" "5 lines should be written to stdout"
+
+ linecount=$(wc -l < "$log_stderr")
+ linecount=$((linecount+0))
+ expect "0" "$linecount" "0 line should be written to stderr"
+
+ result=$(cat "$feedpath/1" "$feedpath/2" "$feedpath/3" \
+ "$feedpath/name with _ in it" "$feedpath/name with spaces" | tr -d '\n')
+ expect '123name with / in itname with spaces'\
+ "$result" "results of feed files"
+
+ paramstr=$(cat "$paramfile" | tr -d '\n')
+ expect '1|1|1.filter|2|2|2.filter|3|3|3.filter|name with / in it|name with _ in it|name with _ in it.filter|name with spaces|name with spaces|name with spaces.filter|'\
+ "$paramstr" "test parameters"
+
+ # run another, should concat the results (in merge function).
+ "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
+ expect "0" "$?" "exit statuscode"
+
+ result=$(cat "$feedpath/1" "$feedpath/2" "$feedpath/3" \
+ "$feedpath/name with _ in it" "$feedpath/name with spaces" | tr -d '\n')
+ expect '112233name with / in itname with / in itname with spacesname with spaces'\
+ "$result" "results of feed files"
+
+ cleanup
+ rm -f "$paramfile"
+
+ echo "test_override_merge: test OK" >&2
+}
+
test_fail_merge() {
init_test
@@ -820,6 +1035,80 @@ feeds() {
echo "test_fail_merge: test OK" >&2
}
+test_override_order() {
+ init_test
+
+ paramfile="$(mktemp /tmp/order_param_XXXXXXXX)"
+
+ createrc > "$rc" <<!
+sfeedpath="$feedpath"
+maxjobs=1
+
+fetch() {
+ echo
+}
+
+convertencoding() {
+ cat
+}
+
+parse() {
+ echo "9\$1 title #\$1"
+ echo "7\$1 title #\$1"
+ echo "8\$1 title #\$1"
+}
+
+filter() {
+ cat
+}
+
+merge() {
+ cat "\$3"
+}
+
+# order(name)
+order() {
+ printf '%s|\n' "\$1" >> "$paramfile"
+
+ sort -k1,1rn
+}
+
+feeds() {
+ # feed <name> <feedurl> [basesiteurl] [encoding]
+ feed "5" "file:///dev/null5" "" "from-utf-6"
+ feed "2" "file:///dev/null2" "basesiteurl" "utf-8"
+ feed "1" "file:///dev/null1" "" ""
+ feed "3" "file:///dev/null3" "" "iso-8859-1"
+ feed "4" "file:///dev/null4" "" "utf-69"
+
+}
+!
+
+ "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
+ expect "0" "$?" "exit statuscode"
+
+ linecount=$(wc -l < "$log_stdout")
+ linecount=$((linecount+0))
+ expect "5" "$linecount" "5 lines should be written to stdout"
+
+ linecount=$(wc -l < "$log_stderr")
+ linecount=$((linecount+0))
+ expect "0" "$linecount" "0 line should be written to stderr"
+
+ result=$(cat "$feedpath/1" | tr -d '\n')
+ expect '91 title #181 title #171 title #1'\
+ "$result" "results of feed files"
+
+ paramstr=$(cat "$paramfile" | tr -d '\n')
+ expect '5|2|1|3|4|'\
+ "$paramstr" "test parameters"
+
+ cleanup
+ rm -f "$paramfile"
+
+ echo "test_override_order: test OK" >&2
+}
+
test_fail_order() {
init_test
@@ -873,13 +1162,6 @@ feeds() {
echo "test_fail_order: test OK" >&2
}
-# TODO: test parameters and contents when overriding functions
-#test_override_parse
-#test_override_filter
-#test_override_merge
-#test_override_order
-#exit 0
-
test_normal
test_one_fail
test_tmpdir
@@ -899,6 +1181,10 @@ test_nothing_to_merge
test_override_cleanup
test_override_fetch
test_override_convertencoding
+test_override_parse
+test_override_filter
+test_override_merge
+test_override_order
echo "Testing SIGTERM (has some delay)..."