Supporters update.
[dcpomatic.git] / run / tests
index 9b94ada80452c305ee67d31cf9e4436f800005a0..5db647af48f6faf136e7285bd626951d0f8fc9b7 100755 (executable)
--- a/run/tests
+++ b/run/tests
 #!/bin/bash
 #
 # e.g. --run_tests=foo
+set -e
 
-export LD_LIBRARY_PATH=build/src/lib:$LD_LIBRARY_PATH
-if [ "$1" == "--debug" ]; then
-    shift;
-    gdb --args build/test/unit-tests --catch_system_errors=no $*
-elif [ "$1" == "--valgrind" ]; then
-    shift;
-    valgrind --tool="memcheck" --leak-check=full build/test/unit-tests $*
+PRIVATE_GIT="881c48805e352dfe150993814757ca974282be18"
+
+type=""
+check=0
+while [[ $# -gt 0 ]]; do
+    case $1 in
+        -e)
+        environment=$2
+        shift
+        shift
+        ;;
+        --debug)
+        type="debug"
+        shift
+        ;;
+        --backtrace)
+        type="backtrace"
+        shift
+        ;;
+        --valgrind)
+        type="valgrind"
+        shift
+        ;;
+        --callgrind)
+        type="callgrind"
+        shift
+        ;;
+        --quiet)
+        type="quiet"
+        shift
+        ;;
+        --drd)
+        type="drd"
+        shift
+        ;;
+        --helgrind)
+        type="helgrind"
+        shift
+        ;;
+        --check)
+        check=1
+        shift
+        ;;
+        *)
+        break
+        ;;
+    esac
+done
+
+if [ "$(uname)" == "Linux" ]; then 
+  export LD_LIBRARY_PATH=build/src/lib:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
+  rm -f build/test/dcpomatic2_openssl
+  # This must be our patched openssl or tests will fail
+  if [ ! -f build/test/dcpomatic2_openssl ]; then 
+    ln -s ../../../openssl/apps/openssl build/test/dcpomatic2_openssl
+  fi
+  export DCPOMATIC_TEST_TOOLS_PATH=/opt/asdcplib/bin
+  if [ -f /src/backports/dcp_inspect ]; then
+    export DCPOMATIC_DCP_INSPECT=/src/backports/dcp_inspect
+  fi
+  set +e
+  python3 -m clairmeta.cli --help > /dev/null 2>&1
+  if [ "$?" == "0" ]; then
+    export DCPOMATIC_CLAIRMETA=1
+  fi
+  set -e
+fi
+
+if [ "$(uname)" == "Darwin" ]; then
+  resources=build/Resources
+  rm -rf $resources
+  mkdir -p $resources
+  cp fonts/*.ttf $resources
+  cp -r ../libdcp/tags $resources
+  cp -r ../libdcp/xsd $resources
+  cp ../libdcp/ratings $resources
+  rm -f build/test/openssl
+  ln -s ../../../openssl/apps/openssl build/test/openssl
+  # SIP stops this being passed in from the caller's environment
+  export DYLD_LIBRARY_PATH=$environment/x86_64/10.10/lib:/Users/ci/workspace/lib
+  # We need to find ffcmp in here
+  export PATH=$PATH:/Users/ci/workspace/bin
+fi
+
+if [ "$check" == "1" ]; then
+       if [ "$DCPOMATIC_TEST_PRIVATE" == "" ]; then
+               pushd ../dcpomatic-test-private
+       else
+               pushd $DCPOMATIC_TEST_PRIVATE
+       fi
+       current=$(git rev-parse HEAD)
+       if [ "$current" != "$PRIVATE_GIT" ]; then
+               echo "Unexpected dcpomatic-test-private version"
+               exit 1
+       fi
+       popd
+fi
+
+if [ "$type" == "debug" ]; then
+    gdb --args build/test/unit-tests --catch_system_errors=no --log_level=test_suite $*
+elif [ "$type" == "backtrace" ]; then
+    gdb -batch -ex "run" -ex "thread apply all bt" -return-child-result --args build/test/unit-tests --catch_system_errors=yes $*
+elif [ "$type" == "valgrind" ]; then
+#    valgrind --tool="memcheck" --vgdb=yes --vgdb-error=0 build/test/unit-tests $*
+    valgrind --tool="memcheck" --suppressions=suppressions build/test/unit-tests $*
+elif [ "$type" == "callgrind" ]; then
+    valgrind --tool="callgrind" build/test/unit-tests $*
+elif [ "$type" == "quiet" ]; then
+    build/test/unit-tests --catch_system_errors=no $*
+elif [ "$type" == "drd" ]; then
+    valgrind --tool="drd" build/test/unit-tests $*
+elif [ "$type" == "helgrind" ]; then
+    valgrind --tool="helgrind" build/test/unit-tests $*
 else
+    ulimit -c unlimited
     build/test/unit-tests --catch_system_errors=no $*
 fi
-