ffmpeg/tests/fate-update.sh
Måns Rullgård 2fad097788 Add FATE tests
This adds a "fate" make target which runs the full FATE test suite.
Individual tests can be run with "make fate-$testname".

The location of the FATE test samples must be specified with the
--samples=PATH option to configure.

The tests/fate-update.sh script regenerates the references files and
test list from the online FATE database.  These are checked in since
generating them requires non-standard tools.

Originally committed as revision 22552 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-15 19:23:24 +00:00

37 lines
977 B
Bash
Executable File

#! /bin/sh
set -e
base=$(dirname $0)
ref="${base}/ref/fate"
FATE_DB_URL="http://fate.multimedia.cx/fate-tests.sqlite.bz2"
FATE_DB=$(mktemp fate-db.XXXXXX)
SQL_TESTS='SELECT id,short_name,command FROM test_spec WHERE active=1 ORDER BY short_name'
do_sql(){
sqlite3 -noheader -separator ' ' "$FATE_DB" "$@"
}
wget -q -O - "$FATE_DB_URL" | bunzip2 > "$FATE_DB"
rm -rf "$ref"
mkdir -p "$ref"
exec 3>"$base/fate.mak"
do_sql "$SQL_TESTS" | while read id name command; do
case "$name" in
00-full-regression|ffmpeg-help|binsize-*) continue ;;
esac
case "$command" in
{MD5}*) command="${command#\{MD5\}} | do_md5sum | cut -c-32" ;;
{*}*) continue ;;
esac
command=$(echo "$command" | sed 's/\$/$$/g')
do_sql "SELECT expected_stdout FROM test_spec WHERE id=$id" | awk '/./{print}' > "$ref/$name"
printf "FATE_TESTS += fate-${name}\n" >&3
printf "fate-${name}: CMD = %s\n" "$command" >&3
done
exec 3<&-
rm -f "$FATE_DB"