[FFmpeg-cvslog] r24530 - trunk/tests/fate.sh
mru
subversion
Tue Jul 27 01:44:09 CEST 2010
Author: mru
Date: Tue Jul 27 01:44:09 2010
New Revision: 24530
Log:
fate: add fate session script
Added:
trunk/tests/fate.sh (contents, props changed)
Added: trunk/tests/fate.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/tests/fate.sh Tue Jul 27 01:44:09 2010 (r24530)
@@ -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
More information about the ffmpeg-cvslog
mailing list