X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=run%2Ftests;h=9f018b934e9eb93e373bc9c697ed08e4b37dc776;hb=e5bb0569857ef2185ba7a53b884c014a4c6dd633;hp=8f12e53618b48a8fe0afc8a9f49feab8cc5e5007;hpb=42a65cba0d8da23c12af52015e66cd9dc0b5a5fa;p=libdcp.git diff --git a/run/tests b/run/tests index 8f12e536..9f018b93 100755 --- a/run/tests +++ b/run/tests @@ -1,32 +1,52 @@ -#!/bin/bash -e +#!/bin/bash # # Run our test suite. # Private test data; this is stuff that is non-distributable -private=../libdcp1-test-private +private=../libdcp-test-private # Work directory work=build/test -# Path to dcpinfo tool +# Path to tools dcpinfo=build/tools/dcpinfo +dcpverify=build/tools/dcpverify -export LD_LIBRARY_PATH=build/src:build/asdcplib/src:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH=build/src:$LD_LIBRARY_PATH +# SIP stops this being passed in from the caller's environment +export DYLD_LIBRARY_PATH=/Users/ci/osx-environment/64/lib +export LIBDCP_SHARE_PREFIX=. # Make sure we have the required tools -for c in xmlsec1 xmldiff; do +for c in xmlsec1 xmldiff xmllint; do hash $c 2>/dev/null || { echo >&2 "$c required but not found; aborting"; exit 1; } done +echo "--- Unit tests" + # Run the unit tests in test/ if [ "$1" == "--debug" ]; then shift - gdb --args $work/tests $private + gdb --args $work/tests $private $* elif [ "$1" == "--valgrind" ]; then shift - valgrind --tool="memcheck" $work/tests $private + valgrind --tool="memcheck" $work/tests $private $* +elif [ "$1" == "--callgrind" ]; then + shift + valgrind --tool="callgrind" $work/tests $private $* else - $work/tests $private $* + $work/tests $* -- $private + if [ "$?" != "0" ]; then + echo "FAIL: unit tests" + exit 1 + fi fi +if [ "$*" != "" ]; then + echo "Skipping post-test checks as not all unit tests were run." + exit 0 +fi + +echo "--- Other tests" + # Check a MXF written by the unit tests diff $work/baz/video1.mxf $work/baz/video2.mxf if [ "$?" != "0" ]; then @@ -48,13 +68,27 @@ if [ "$?" != "0" ]; then exit 1 fi +# Check the DCP written by dcp_test5 +diff -ur test/ref/DCP/dcp_test5 $work/DCP/dcp_test5 +if [ "$?" != "0" ]; then + echo "FAIL: files differ" + exit 1 +fi + +# Check the DCP written by dcp_test7 +diff -ur test/ref/DCP/dcp_test7 $work/DCP/dcp_test7 +if [ "$?" != "0" ]; then + echo "FAIL: files differ" + exit 1 +fi + # Check the DCP written by encryption_test diff -ur test/ref/DCP/encryption_test $work/DCP/encryption_test if [ "$?" != "0" ]; then echo "FAIL: files differ" exit 1 fi - + # Everything beyond this point needs $private to exist if [ ! -e "$private/info.log" ]; then echo "" @@ -68,7 +102,7 @@ fi rm -f $work/info.log for d in `find $private/metadata -mindepth 1 -maxdepth 1 -type d | sort -f -d`; do if [ `basename $d` != ".git" ]; then - $dcpinfo --ignore-missing-assets -k -s $d 2> /dev/null >> $work/info.log + $dcpinfo --ignore-missing-assets -s $d >> $work/info.log if [ "$?" != "0" ]; then echo "FAIL: dcpinfo failed for $d" exit 1 @@ -76,6 +110,17 @@ for d in `find $private/metadata -mindepth 1 -maxdepth 1 -type d | sort -f -d`; fi done +# Run dcpverify on all the DCPs in private/metadata +for d in `find $private/metadata -mindepth 1 -maxdepth 1 -type d | sort -f -d`; do + if [ `basename $d` != ".git" ]; then + $dcpverify --ignore-missing-assets -q $d + if [ "$?" != "0" ]; then + echo "FAIL: dcpverify failed for $d" + exit 1 + fi + fi +done + # Check info.log is what it should be diff -q $work/info.log $private/info.log if [ "$?" != "0" ]; then @@ -83,17 +128,17 @@ if [ "$?" != "0" ]; then exit 1 fi -# Copy $private into build/ then re-write the subtitles of every DCP using -# $work/rewrite_subs. This tests round-trip of subtitle reading/writing. -# Note that all the subs in $private/metadata are Interop. +# Copy $private/metadata into build/metadata then re-write the subtitles +# of every DCP using $work/rewrite_subs. This tests round-trip of +# subtitle reading/writing. rm -f $work/info2.log rm -rf $work/private mkdir $work/private -cp -r $private/* $work/private +cp -r $private/metadata $work/private/ for d in `find $work/private/metadata -mindepth 1 -maxdepth 1 -type d | sort -f -d`; do if [ `basename $d` != ".git" ]; then $work/rewrite_subs $d - $dcpinfo --ignore-missing-assets -k -s $d >> $work/info2.log + $dcpinfo --ignore-missing-assets -s $d >> $work/info2.log fi done @@ -111,8 +156,12 @@ fi # and check that they are right $dcpinfo -s $private/data/JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV >> $work/jah.log -# Rewrite the subs of JourneyToJah... -#cp -r $private/data/JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV $work/ -#$work/rewrite_subs $WORK/Jou +# Parse some problematic subs and check that we get it right +run/test/subs_in_out $private/TunaBoat_Icelandic_Reel1_V1_8sec.xml > $work/tuna.xml +diff -q $private/TunaBoat_Icelandic_Reel1_V1_8sec.parsed.xml $work/tuna.xml +if [ "$?" != "0" ]; then + echo "FAIL: output of parse check 1 invalid" + exit 1 +fi echo "PASS"