fate: allow running regtests through fate frontend
authorMåns Rullgård <mans@mansr.com>
Tue, 20 Jul 2010 10:19:28 +0000 (10:19 +0000)
committerMåns Rullgård <mans@mansr.com>
Tue, 20 Jul 2010 10:19:28 +0000 (10:19 +0000)
Originally committed as revision 24347 to svn://svn.ffmpeg.org/ffmpeg/trunk

Makefile
tests/fate-run.sh

index 052a058..7b5211a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -266,15 +266,52 @@ include $(SRC_PATH_BARE)/tests/fate2.mak
 
 FATE_TESTS += $(FATE2_TESTS)
 
+FATE_ACODEC  = $(ACODEC_TESTS:regtest-%=fate-acodec-%)
+FATE_VSYNTH1 = $(VCODEC_TESTS:regtest-%=fate-vsynth1-%)
+FATE_VSYNTH2 = $(VCODEC_TESTS:regtest-%=fate-vsynth2-%)
+FATE_VCODEC  = $(FATE_VSYNTH1) $(FATE_VSYNTH2)
+FATE_LAVF    = $(LAVF_TESTS:regtest-%=fate-lavf-%)
+FATE_LAVFI   = $(LAVFI_TESTS:regtest-%=fate-lavfi-%)
+FATE_SEEK    = $(SEEK_TESTS:seek_%=fate-seek-%)
+
+FATE = $(FATE_ACODEC)                                                   \
+       $(FATE_VCODEC)                                                   \
+       $(FATE_LAVF)                                                     \
+       $(FATE_LAVFI)                                                    \
+       $(FATE_SEEK)                                                     \
+
+$(FATE_ACODEC): $(AREF)
+$(FATE_VCODEC): $(VREF)
+$(FATE_LAVF):   $(REFS)
+$(FATE_LAVFI):  $(REFS)
+$(FATE_SEEK):   fate-codec fate-lavf tests/seek_test$(EXESUF)
+
+$(FATE_ACODEC):  CMD = codectest acodec
+$(FATE_VSYNTH1): CMD = codectest vsynth1
+$(FATE_VSYNTH2): CMD = codectest vsynth2
+$(FATE_LAVF):    CMD = lavftest
+$(FATE_LAVFI):   CMD = lavfitest
+$(FATE_SEEK):    CMD = seektest
+
+fate-codec:  fate-acodec fate-vcodec
+fate-acodec: $(FATE_ACODEC)
+fate-vcodec: $(FATE_VCODEC)
+fate-lavf:   $(FATE_LAVF)
+fate-lavfi:  $(FATE_LAVFI)
+fate-seek:   $(FATE_SEEK)
+
 ifdef SAMPLES
-fate: $(FATE_TESTS)
-fate2: $(FATE2_TESTS)
-$(FATE_TESTS): ffmpeg$(EXESUF) tests/tiny_psnr$(HOSTEXESUF)
-       @echo "TEST FATE   $(@:fate-%=%)"
-       $(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)'
+FATE += $(FATE_TESTS)
 else
-fate fate2 $(FATE_TESTS):
+fate2 $(FATE_TESTS):
        @echo "SAMPLES not specified, cannot run FATE"
 endif
 
+fate: $(FATE)
+fate2: $(FATE2_TESTS)
+
+$(FATE): ffmpeg$(EXESUF) tests/tiny_psnr$(HOSTEXESUF)
+       @echo "TEST FATE   $(@:fate-%=%)"
+       $(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)'
+
 .PHONY: documentation *test regtest-* alltools check config
index 0bbb530..4112e1a 100755 (executable)
@@ -59,15 +59,49 @@ pcm(){
     ffmpeg "$@" -vn -f s16le -
 }
 
-if ! test -e "$ref"; then
-    echo "reference file '$ref' not found"
-    exit 1
-fi
+regtest(){
+    t="${test#$2-}"
+    ref=${base}/ref/$2/$t
+    outfile=tests/data/regression/$2/$t
+    ${base}/${1}-regression.sh $t $2 $3 "$target_exec" "$target_path"
+}
+
+codectest(){
+    regtest codec $1 tests/$1
+}
+
+lavftest(){
+    regtest lavf lavf tests/vsynth1
+}
+
+lavfitest(){
+    regtest lavfi lavfi tests/vsynth1
+}
+
+seektest(){
+    t="${test#seek-}"
+    ref=${base}/ref/seek/$t
+    case $t in
+        image_*) file="tests/data/images/${t#image_}/%02d.${t#image_}" ;;
+        *)       file=$(echo $t | tr _ '?')
+                 for d in acodec vsynth2 lavf; do
+                     test -f tests/data/$d/$file && break
+                 done
+                 file=$(echo tests/data/$d/$file)
+                 ;;
+    esac
+    $target_exec $target_path/tests/seek_test $target_path/$file
+}
 
 mkdir -p "$outdir"
 
 $command > "$outfile" 2>/dev/null || exit
 
+if ! test -e "$ref"; then
+    echo "reference file '$ref' not found"
+    exit 1
+fi
+
 case $cmp in
     diff)   diff -u -w "$ref" "$outfile"            ;;
     oneoff) oneoff     "$ref" "$outfile" "$fuzz"    ;;