summaryrefslogblamecommitdiffstats
path: root/tests/maketests.sh
blob: c6ffed7452481548e1146ae0d103f034e82f9e5e (plain) (tree)




























































                                                                               
#!/bin/bash

BASEDIR=$(dirname $(readlink -f $0))

function printhelp {
    echo -e "usage:"
    echo -e "-i, --input [FILE]"
    echo -e "-o, --output [FILE]"
    exit 1
}

function gen_code {
    local CASES
    CASES=$(sed -n '/#include.*\.c"/p' "$1" | cut -d'"' -f2 | grep -v '../src')

    for c in ${CASES}; do
        local cc
        cc=${c%.*}
        printf "    TCase * tc_%s = tcase_create(\"%s\");\n" ${cc} ${cc}
        tests=""
        tests=$(sed -n 's/START_TEST(\(.*\))/\1/p' "$BASEDIR/$c")
        for t in ${tests}; do
            printf "    tcase_add_test(tc_%s, %s);\n" ${cc} ${t}
        done            
        printf "    suite_add_tcase(s, tc_%s);\n" ${cc}
    done
}

if [ $# -lt 1 ]
then
    printhelp
fi

while [[ $# -gt 0 ]]
do
    key="$1"
    case $key in
        -i|--input)
            INPUT="$2"
            shift # past argument
            shift # past value
            ;;
        -o|--output)
            OUTPUT="$2"
            shift # past argument
            shift # past value
            ;;
        *)    # unknown option
            printhelp
            ;;
    esac
done

if ! [ -f "$INPUT" ]; then
    printhelp
fi

sed "/maketests.sh begin/q" "$INPUT" > "$OUTPUT"
gen_code "$INPUT" >> "$OUTPUT"
sed -n -e '/maketests.sh end/,$p' "$INPUT" >> "$OUTPUT"
exit 0