summaryrefslogtreecommitdiff
path: root/tests/fate.sh
diff options
context:
space:
mode:
authorMåns Rullgård <mans@mansr.com>2010-07-26 23:44:09 +0000
committerMåns Rullgård <mans@mansr.com>2010-07-26 23:44:09 +0000
commita9dc61114588615633981acc7487c236e55c4f7c (patch)
tree1294d0e4339bcbf7c5c453865a50aab214d79bd0 /tests/fate.sh
parentb82be636880a8dece6205bdcded8136bbd6ce5d6 (diff)
fate: add fate session script
Originally committed as revision 24530 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'tests/fate.sh')
-rwxr-xr-xtests/fate.sh107
1 files changed, 107 insertions, 0 deletions
diff --git a/tests/fate.sh b/tests/fate.sh
new file mode 100755
index 0000000000..af2e14f8bf
--- /dev/null
+++ b/tests/fate.sh
@@ -0,0 +1,107 @@
+#! /bin/sh
+
+config=$1
+
+die(){
+ echo "$@"
+ exit 1
+}
+
+test -r "$config" || die "usage: fate.sh <config>"
+
+workdir=$(dirname $config)
+make=make
+
+. "$config"
+
+test -n "$slot" || die "slot not specified"
+test -n "$repo" || die "repo not specified"
+test -d "$samples" || die "samples location not specified"
+
+lock(){
+ lock=$1/fate.lock
+ (set -C; exec >$lock) 2>/dev/null || return
+ trap 'rm $lock' EXIT
+}
+
+checkout(){
+ case "$repo" in
+ file:*|/*) src="${repo#file:}" ;;
+ git:*) git clone "$repo" "$src" ;;
+ svn:*) svn co "$repo" "$src" ;;
+ esac
+}
+
+update()(
+ cd ${src} || return
+ case "$repo" in
+ git:*) git pull ;;
+ svn:*) svn up ;;
+ esac
+)
+
+configure()(
+ cd ${build} || return
+ ${src}/configure \
+ --prefix="${inst}" \
+ --samples="${samples}" \
+ ${arch:+--arch=$arch} \
+ ${cpu:+--cpu="$cpu"} \
+ ${cross_prefix:+--cross-prefix="$cross_prefix"} \
+ ${cc:+--cc="$cc"} \
+ ${target_os:+--target-os="$target_os"} \
+ ${sysroot:+--sysroot="$sysroot"} \
+ ${target_exec:+--target-exec="$target_exec"} \
+ ${target_path:+--target-path="$target_path"} \
+ ${extra_cflags:+--extra-cflags="$extra_cflags"} \
+ ${extra_ldflags:+--extra-ldflags="$extra_ldflags"} \
+ ${extra_libs:+--extra-libs="$extra_libs"} \
+ ${extra_conf}
+)
+
+compile()(
+ cd ${build} || return
+ ${make} ${makeopts} && ${make} install
+)
+
+fate()(
+ cd ${build} || return
+ ${make} ${makeopts} -k fate
+)
+
+report(){
+ date=$(date -u +%Y%m%d%H%M%S)
+ echo "fate:0:${date}:${slot}:${version}:$1:$2" >report
+ cat ${build}/config.fate ${build}/tests/data/fate/*.rep >>report
+ test -n "$fate_recv" && tar cz report *.log | $fate_recv
+}
+
+fail(){
+ report "$@"
+ exit
+}
+
+mkdir -p ${workdir} || die "Error creating ${workdir}"
+lock ${workdir} || die "${workdir} locked"
+cd ${workdir} || die "cd ${workdir} failed"
+
+src=${workdir}/src
+build=${workdir}/build
+inst=${workdir}/install
+report=tests/data/fate/report
+
+test -d "$src" && update || checkout || die "Error fetching source"
+
+cd ${workdir}
+
+version=$(${src}/version.sh ${src})
+test "$version" = "$(cat version 2>/dev/null)" && exit 0
+echo ${version} >version
+
+rm -rf "${build}"
+mkdir -p ${build}
+
+configure >configure.log 2>&1 || fail $? "error configuring"
+compile >compile.log 2>&1 || fail $? "error compiling"
+fate >test.log 2>&1 || fail $? "error testing"
+report 0 success