src/tests.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    
    #!/bin/sh
    
    darcsroot()
    {
        d=`pwd`
        while ! test -d _darcs; do
    	cd ..
        done
        pwd
        cd "$d"
    }
    
    showfiles()
    {
        if ! darcs show files > /dev/null 2>&1; then
    	ls *.$1 2> /dev/null | sed 's/\(.*\)/	\1 \\/g'
        else
    	ROOT=`darcsroot`
    	DIR=`echo $PWD | sed "s|$ROOT|.|"`
    	darcs show files | grep '\'$DIR'/[^/ ]*\.'$1'$' | \
    	    sed -e 's|'$DIR'/\(.*\)|	\1 \\|g'
        fi
    }
    
    showpages()
    {
        if ! darcs show files > /dev/null 2>&1; then
    	files=`ls *$1 2> /dev/null`
        else
    	ROOT=`darcsroot`
    	DIR=`echo $PWD | sed "s|$ROOT|.|"`
    	files=`darcs show files | grep '\'$DIR'/[^/ ]*'$1'$' | sed "s|$DIR/||g"`
        fi
        for f in $files; do
    	case "$f" in
    	    *.page) echo "$f" ;;
    	    *.[chm])
    		test -x $BASILISK/darcsit/pagemagic && \
    		    $BASILISK/darcsit/pagemagic "$f" && echo "$f.page"
    		;;
    	esac
        done | sed 's/\(.*\)/	\1 \\/g'
    }
    
    # join lines delimited by \\n characters
    singleline()
    {
        sed -e ':a
    N
    $!ba
    s/\\\n//g
    '
    }
    
    echo "updating Makefile.tests"
    (
        echo "# Automatically generated using 'make Makefile.tests'"
        echo "# DO NOT EDIT, edit 'Makefile' instead"
        echo "ALLTESTS = \\"
        (showfiles c
         grep '^[a-zA-Z_0-9-]*\.*tst[ ]*:' Makefile | \
    	 sed -n 's/\(^[a-zA-Z_0-9-]*\)\.*tst[ ]*:.*/	\1.c \\/p'
        ) | sort | uniq
        echo ""
        echo "TESTS = \\"
        singleline < Makefile | 		                   \
    	grep '^check:' | tr ' ' '\n' |                     \
    	sed -n 's/[ 	]*\([a-zA-Z_0-9-]*\..tst\)[ 	]*/\1/p' |  \
    	sed 's/\(.*\)\..tst/	\1.c \\/g' | \
    	sed 's/.*$(wildcard//g'
        singleline < Makefile | 		                   \
    	grep -v '^check:' | grep '^[^.]*:.*' | tr ' ' '\n' |     \
    	sed -n 's/[ 	]*\([a-zA-Z_0-9-]*\.tst\)[ 	]*/\1/p' |    \
    	sed 's/\(.*\)\.tst/	\1.c \\/g'
        echo ""
        echo "SPECIAL_TESTS = \\"
        sed -n 's/.*:[ 	]*\([a-zA-Z_0-9-]*\.ctst\)/\1/p' Makefile | \
    	sort | uniq | sed 's/\(.*\)/	\1 \\/g'
        echo ""
        echo "ALLPAGES = \\"
        showpages ''
        echo ""
    ) > Makefile.tests
    
    rm -f Makefile.deps