1#!/bin/bash 2# Export tool testing script 3# 4# Version: 20170901 5 6EXIT_SUCCESS=0; 7EXIT_FAILURE=1; 8EXIT_IGNORE=77; 9 10OPTION_SETS=""; 11OPTIONS="-d"; 12 13INPUT_GLOB="*"; 14 15test_callback() 16{ 17 local TMPDIR=$1; 18 local TEST_SET_DIRECTORY=$2; 19 local TEST_OUTPUT=$3; 20 local TEST_EXECUTABLE=$4; 21 local TEST_INPUT=$5; 22 shift 5; 23 local ARGUMENTS=$@; 24 25 TEST_EXECUTABLE=$( readlink_f "${TEST_EXECUTABLE}" ); 26 INPUT_FILE_FULL_PATH=$( readlink_f "${INPUT_FILE}" ); 27 28 (cd ${TMPDIR} && run_test_with_input_and_arguments "${TEST_EXECUTABLE}" "${INPUT_FILE_FULL_PATH}" ${ARGUMENTS[@]} ${OPTIONS[@]}); 29 local RESULT=$?; 30 31 local TEST_LOG="${TEST_OUTPUT}.log"; 32 33 if test "${PLATFORM}" = "Darwin"; 34 then 35 (cd ${TMPDIR} && find "'${INPUT_NAME}.export'" -type f -exec md5 {} \; | sort -k 2 > "'${TEST_LOG}'"); 36 else 37 (cd ${TMPDIR} && find "'${INPUT_NAME}.export'" -type f -exec md5sum {} \; | sort -k 2 > "'${TEST_LOG}'"); 38 fi 39 40 local TEST_RESULTS="${TMPDIR}/${TEST_LOG}"; 41 local STORED_TEST_RESULTS="${TEST_SET_DIRECTORY}/${TEST_LOG}.gz"; 42 43 if test -f "'${STORED_TEST_RESULTS}'"; 44 then 45 # Using zcat here since zdiff has issues on Mac OS X. 46 # Note that zcat on Mac OS X requires the input from stdin. 47 zcat < "'${STORED_TEST_RESULTS}'" | diff "'${TEST_RESULTS}'" -; 48 RESULT=$?; 49 else 50 gzip "'${TEST_RESULTS}'"; 51 52 mv "'${TEST_RESULTS}.gz'" ${TEST_SET_DIRECTORY}; 53 fi 54 return ${RESULT}; 55} 56 57if ! test -z ${SKIP_TOOLS_TESTS}; 58then 59 exit ${EXIT_IGNORE}; 60fi 61 62TEST_EXECUTABLE="../pfftools/pffexport"; 63 64if ! test -x "${TEST_EXECUTABLE}"; 65then 66 TEST_EXECUTABLE="../pfftools/pffexport.exe"; 67fi 68 69if ! test -x "${TEST_EXECUTABLE}"; 70then 71 echo "Missing test executable: ${TEST_EXECUTABLE}"; 72 73 exit ${EXIT_FAILURE}; 74fi 75 76TEST_RUNNER="tests/test_runner.sh"; 77 78if ! test -f "${TEST_RUNNER}"; 79then 80 TEST_RUNNER="./test_runner.sh"; 81fi 82 83if ! test -f "${TEST_RUNNER}"; 84then 85 echo "Missing test runner: ${TEST_RUNNER}"; 86 87 exit ${EXIT_FAILURE}; 88fi 89 90PLATFORM=`uname -s`; 91 92source ${TEST_RUNNER}; 93 94assert_availability_binary find; 95 96if test "${PLATFORM}" = "Darwin"; 97then 98 assert_availability_binary md5; 99else 100 assert_availability_binary md5sum; 101fi 102 103run_test_on_input_directory "pffexport" "pffexport" "with_callback" "${OPTION_SETS}" "${TEST_EXECUTABLE}" "input" "${INPUT_GLOB}" "${OPTIONS}"; 104RESULT=$?; 105 106exit ${RESULT}; 107 108