sfeed_update: improve 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 d13fbb6ea1f4a4415e63eb28bdcd0ade488b0ba4
 (DIR) parent 5ea2db480c389f7db699fb4354f7679c8849a9eb
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Fri, 15 Dec 2023 14:02:53 +0100
       
       sfeed_update: improve tests
       
       Diffstat:
         D input/sfeed_update/manual.sh        |       9 ---------
         M input/sfeed_update/test.sh          |      54 ++++++++++++++++++++++++++++++-
       
       2 files changed, 53 insertions(+), 10 deletions(-)
       ---
 (DIR) diff --git a/input/sfeed_update/manual.sh b/input/sfeed_update/manual.sh
       @@ -1,9 +0,0 @@
       -#!/bin/sh
       -sfeed_update /dev/null # should say feeds function is not defined.
       -sfeed_update nonexistant
       -sfeed_update `pwd` # directory
       -sfeed_update /root # directory, no access
       -sfeed_update /root/.sfeed/sfeedrc # no access
       -
       -#sfeed_update "" # empty: loads default
       -#sfeed_update # loads default
 (DIR) diff --git a/input/sfeed_update/test.sh b/input/sfeed_update/test.sh
       @@ -146,13 +146,65 @@ feeds() {
                echo "test_sigterm: test OK" >&2
        }
        
       +test_config_invocation() {
       +        log_stdout="$(mktemp)"
       +        log_stderr="$(mktemp)"
       +        "$SFEED_UPDATE" /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"
       +
       +        # TODO:
       +        #"$SFEED_UPDATE" nonexistant
       +        #"$SFEED_UPDATE" `pwd` # directory
       +        #"$SFEED_UPDATE" /root # directory, no access
       +        #"$SFEED_UPDATE" /root/.sfeed/sfeedrc # no access
       +
       +        echo "test_config_invocation: test OK" >&2
       +}
       +
       +test_tmpdir() {
       +        rc="$(mktemp)"
       +        feedpath="$(mktemp -d)"
       +        log_stdout="$(mktemp)"
       +        log_stderr="$(mktemp)"
       +
       +        cat > "$rc" <<!
       +sfeedpath="$feedpath"
       +
       +feeds() {
       +        true
       +}
       +!
       +
       +        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"
       +
       +        "$SFEED_UPDATE" "$rc" >"$log_stdout" 2> "$log_stderr"
       +        expect "0" "$?" "exit statuscode"
       +
       +        rm -rf "$rc" "$feedpath" "$log_stdout" "$log_stderr"
       +
       +        echo "test_tmpdir: test OK" >&2
       +}
       +
        test_normal
        test_one_fail
        
        # NOTE: SIGINT can't reliably be tested.
        test_sigterm
        
       +test_tmpdir
       +test_config_invocation
       +
        # TODO:
       +# x test $TMPDIR.
       +# x test if feeds() is not set.
        # - test weird feednames.
        #   - check filenames, '*', '/', newline.
        # - test override functions.
       @@ -160,6 +212,6 @@ test_sigterm
        # - test merge, order logic.
        # - test empty fields (for xargs etc).
        # - add existing test-cases and make them automatic:
       -#   - ecoding/
       +#   - decoding/
        #   - exitstatus/
        #   - merge/