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)..."