sfeed_update: improve tests, remove old now duplicate 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 2f1ac6a1578ef94280e1754206641dc740ebcaaa
 (DIR) parent 8c57eb5eeb2c180973f9d93b7469bbdc6202f43c
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Fri, 15 Dec 2023 23:29:56 +0100
       
       sfeed_update: improve tests, remove old now duplicate tests
       
       Diffstat:
         D input/sfeed_update/exitstatus/run.… |      12 ------------
         D input/sfeed_update/exitstatus/sfee… |       6 ------
         D input/sfeed_update/exitstatus/sfee… |       6 ------
         M input/sfeed_update/test.sh          |     100 ++++++++++++++++++++++++++++----
       
       4 files changed, 90 insertions(+), 34 deletions(-)
       ---
 (DIR) diff --git a/input/sfeed_update/exitstatus/run.sh b/input/sfeed_update/exitstatus/run.sh
       @@ -1,12 +0,0 @@
       -#!/bin/sh
       -if ! sfeed_update sfeedrc.bad; then
       -        echo "Test 1 OK"
       -else
       -        echo "Test 1 FAIL: should return error code if any feed failed"
       -fi
       -
       -if sfeed_update sfeedrc.ok; then
       -        echo "Test 2 OK"
       -else
       -        echo "Test 2 FAIL: should return 0 if all feeds are OK"
       -fi
 (DIR) diff --git a/input/sfeed_update/exitstatus/sfeedrc.bad b/input/sfeed_update/exitstatus/sfeedrc.bad
       @@ -1,6 +0,0 @@
       -sfeedpath="`pwd`/output"
       -
       -feeds() {
       -        feed "test" "file:///dev/null"
       -        feed "test2" "file:///`pwd`/noexist"
       -}
 (DIR) diff --git a/input/sfeed_update/exitstatus/sfeedrc.ok b/input/sfeed_update/exitstatus/sfeedrc.ok
       @@ -1,6 +0,0 @@
       -sfeedpath="`pwd`/output"
       -
       -feeds() {
       -        feed "test" "file:///dev/null"
       -        feed "test2" "file:///dev/null"
       -}
 (DIR) diff --git a/input/sfeed_update/test.sh b/input/sfeed_update/test.sh
       @@ -150,18 +150,35 @@ feeds() {
        test_config_invocation() {
                init_test
        
       -        "$SFEED_UPDATE" /dev/null 2> "$log_stderr"  # should say feeds function is not defined.
       +        "$SFEED_UPDATE" /dev/null >/dev/null 2> "$log_stderr"  # should say feeds function is not defined.
                expect "1" "$?" "exit statuscode"
       +        msg='does not contain a "feeds" function'
       +        fgrep -q "$msg" < "$log_stderr"
       +        expect "0" "$?" "stderr must contain text $msg"
       +
       +        "$SFEED_UPDATE" nonexistant >/dev/null 2> "$log_stderr"
       +        expect "1" "$?" "exit statuscode"
       +        msg='Configuration file "nonexistant" cannot be read.'
       +        fgrep -q "$msg" < "$log_stderr"
       +        expect "0" "$?" "stderr must contain text $msg"
        
       +        "$SFEED_UPDATE" `pwd` >/dev/null 2> "$log_stderr" # directory
       +        expect "1" "$?" "exit statuscode"
                msg='does not contain a "feeds" function'
                fgrep -q "$msg" < "$log_stderr"
                expect "0" "$?" "stderr must contain text $msg"
        
       -        # TODO:
       -        #"$SFEED_UPDATE" nonexistant
       -        #"$SFEED_UPDATE" `pwd` # directory
       -        #"$SFEED_UPDATE" /root # directory, no access
       -        #"$SFEED_UPDATE" /root/.sfeed/sfeedrc # no access
       +        "$SFEED_UPDATE" /root >/dev/null 2> "$log_stderr" # directory, no access
       +        expect "1" "$?" "exit statuscode"
       +        msg='Configuration file "/root" cannot be read.'
       +        fgrep -q "$msg" < "$log_stderr"
       +        expect "0" "$?" "stderr must contain text $msg"
       +
       +        "$SFEED_UPDATE" /root/.sfeed/sfeedrc >/dev/null 2> "$log_stderr" # no access
       +        expect "1" "$?" "exit statuscode"
       +        msg='Configuration file "/root/.sfeed/sfeedrc" cannot be read.'
       +        fgrep -q "$msg" < "$log_stderr"
       +        expect "0" "$?" "stderr must contain text $msg"
        
                cleanup
        
       @@ -179,6 +196,7 @@ feeds() {
        }
        !
        
       +        # TODO: check error message
                TMPDIR=/noaccess "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
                expect "1" "$?" "exit statuscode"
        
       @@ -188,20 +206,82 @@ feeds() {
                "$SFEED_UPDATE" "$rc" >"$log_stdout" 2> "$log_stderr"
                expect "0" "$?" "exit statuscode"
        
       +        # TODO: check if temporary directory is cleaned succesfully after run.
       +
                cleanup
        
                echo "test_tmpdir: test OK" >&2
        }
        
       +# TODO
       +test_parameters() {
       +        init_test
       +
       +        expectfile="$(mktemp)"
       +
       +        cat > "$expectfile" <<!
       +||||
       +|feedurl|basesiteurl|encoding|
       +1||||
       +2|feedurl|||
       +3|feedurl|basesiteurl||
       +4|feedurl|basesiteurl|encoding|
       +5|feedurl||encoding|
       +6|||encoding|
       +7||basesiteurl|encoding|
       +8|feedurl|||
       +9|feedurl|basesiteurl||
       +!
       +
       +        cat > "$rc" <<!
       +sfeedpath="$feedpath"
       +maxjobs=1 # must be run sequential
       +
       +feed() {
       +        printf '%s|%s|%s|%s|\n' "\$1" "\$2" "\$3" "\$4"
       +}
       +
       +feeds() {
       +        # feed <name> <feedurl> [basesiteurl] [encoding]
       +        feed "" "" "" ""
       +        feed "" "feedurl" "basesiteurl" "encoding"
       +        feed "1" "" "" ""
       +        feed "2" "feedurl" "" ""
       +        feed "3" "feedurl" "basesiteurl" ""
       +        feed "4" "feedurl" "basesiteurl" "encoding"
       +        feed "5" "feedurl" "" "encoding"
       +        feed "6" ""        "" "encoding"
       +        feed "7" "" "basesiteurl" "encoding"
       +        feed "8" "feedurl"
       +        feed "9" "feedurl" "basesiteurl"
       +}
       +!
       +
       +        "$SFEED_UPDATE" "$rc" >"$log_stdout" 2>"$log_stderr"
       +        expect "0" "$?" "exit statuscode"
       +
       +        diff -u "$log_stdout" "$expectfile"
       +        expect "0" "$?" "exit statuscode"
       +
       +        cleanup
       +        rm -f "$expectfile"
       +
       +        echo "test_parameters: test OK" >&2
       +}
       +
        test_normal
        test_one_fail
        
       -# NOTE: SIGINT can't reliably be tested.
       -test_sigterm
       -
        test_tmpdir
        test_config_invocation
        
       +test_parameters
       +
       +exit $? # DEBUG
       +
       +# NOTE: SIGINT can't reliably be tested.
       +test_sigterm
       +
        # TODO:
        # x test $TMPDIR.
        # x test if feeds() is not set.
       @@ -210,7 +290,7 @@ test_config_invocation
        # - test override functions.
        # - test error messages, grep for "FAIL (ENCODING)" etc.
        # - test merge, order logic.
       -# - test empty fields (for xargs etc).
       +# x test empty fields (for xargs etc).
        # - add existing test-cases and make them automatic:
        #   - decoding/
        #   - exitstatus/