Home | History | Annotate | Download | only in test
      1 #!/bin/sh
      2 
      3 case @abi@ in
      4   macho)
      5     export DYLD_FALLBACK_LIBRARY_PATH="@objroot@lib"
      6     ;;
      7   pecoff)
      8     export PATH="${PATH}:@objroot@lib"
      9     ;;
     10   *)
     11     ;;
     12 esac
     13 
     14 # Make a copy of the @JEMALLOC_CPREFIX@MALLOC_CONF passed in to this script, so
     15 # it can be repeatedly concatenated with per test settings.
     16 export MALLOC_CONF_ALL=${@JEMALLOC_CPREFIX@MALLOC_CONF}
     17 # Concatenate the individual test's MALLOC_CONF and MALLOC_CONF_ALL.
     18 export_malloc_conf() {
     19   if [ "x${MALLOC_CONF}" != "x" -a "x${MALLOC_CONF_ALL}" != "x" ] ; then
     20     export @JEMALLOC_CPREFIX@MALLOC_CONF="${MALLOC_CONF},${MALLOC_CONF_ALL}"
     21   else
     22     export @JEMALLOC_CPREFIX@MALLOC_CONF="${MALLOC_CONF}${MALLOC_CONF_ALL}"
     23   fi
     24 }
     25 
     26 # Corresponds to test_status_t.
     27 pass_code=0
     28 skip_code=1
     29 fail_code=2
     30 
     31 pass_count=0
     32 skip_count=0
     33 fail_count=0
     34 for t in $@; do
     35   if [ $pass_count -ne 0 -o $skip_count -ne 0 -o $fail_count != 0 ] ; then
     36     echo
     37   fi
     38   echo "=== ${t} ==="
     39   if [ -e "@srcroot@${t}.sh" ] ; then
     40     # Source the shell script corresponding to the test in a subshell and
     41     # execute the test.  This allows the shell script to set MALLOC_CONF, which
     42     # is then used to set @JEMALLOC_CPREFIX@MALLOC_CONF (thus allowing the
     43     # per test shell script to ignore the @JEMALLOC_CPREFIX@ detail).
     44     enable_fill=@enable_fill@ \
     45     enable_prof=@enable_prof@ \
     46     . @srcroot@${t}.sh && \
     47     export_malloc_conf && \
     48     $JEMALLOC_TEST_PREFIX ${t}@exe@ @abs_srcroot@ @abs_objroot@
     49   else
     50     export MALLOC_CONF= && \
     51     export_malloc_conf && \
     52     $JEMALLOC_TEST_PREFIX ${t}@exe@ @abs_srcroot@ @abs_objroot@
     53   fi
     54   result_code=$?
     55   case ${result_code} in
     56     ${pass_code})
     57       pass_count=$((pass_count+1))
     58       ;;
     59     ${skip_code})
     60       skip_count=$((skip_count+1))
     61       ;;
     62     ${fail_code})
     63       fail_count=$((fail_count+1))
     64       ;;
     65     *)
     66       echo "Test harness error: ${t} w/ MALLOC_CONF=\"${MALLOC_CONF}\"" 1>&2
     67       echo "Use prefix to debug, e.g. JEMALLOC_TEST_PREFIX=\"gdb --args\" sh test/test.sh ${t}" 1>&2
     68       exit 1
     69   esac
     70 done
     71 
     72 total_count=`expr ${pass_count} + ${skip_count} + ${fail_count}`
     73 echo
     74 echo "Test suite summary: pass: ${pass_count}/${total_count}, skip: ${skip_count}/${total_count}, fail: ${fail_count}/${total_count}"
     75 
     76 if [ ${fail_count} -eq 0 ] ; then
     77   exit 0
     78 else
     79   exit 1
     80 fi
     81