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?