test_practracker.sh (2582B)
1 #!/bin/sh 2 3 # Fail this script if any subprocess fails unexpectedly. 4 set -e 5 6 umask 077 7 unset TOR_DISABLE_PRACTRACKER 8 9 TMPDIR="" 10 clean() { 11 if [ -n "$TMPDIR" ] && [ -d "$TMPDIR" ]; then 12 rm -rf "$TMPDIR" 13 fi 14 } 15 trap clean EXIT HUP INT TERM 16 17 if test "${PRACTRACKER_DIR}" = "" || 18 test ! -e "${PRACTRACKER_DIR}/practracker.py" ; then 19 PRACTRACKER_DIR=$(dirname "$0") 20 fi 21 22 # Change to the tor directory, and canonicalise PRACTRACKER_DIR, 23 # so paths in practracker output are consistent, even in out-of-tree builds 24 cd "${PRACTRACKER_DIR}"/../../.. 25 PRACTRACKER_DIR="scripts/maint/practracker" 26 27 TMPDIR="$(mktemp -d -t pracktracker.test.XXXXXX)" 28 if test -z "${TMPDIR}" || test ! -d "${TMPDIR}" ; then 29 echo >&2 "mktemp failed." 30 exit 1 31 fi 32 33 DATA="${PRACTRACKER_DIR}/testdata" 34 35 run_practracker() { 36 "${PYTHON:-python}" "${PRACTRACKER_DIR}/practracker.py" \ 37 --include-dir "" \ 38 --max-file-size=0 \ 39 --max-function-size=0 \ 40 --max-h-file-size=0 \ 41 --max-h-include-count=0 \ 42 --max-include-count=0 \ 43 --terse \ 44 "${DATA}/" "$@" || echo "practracker exit status: $?" 45 } 46 47 compare() { 48 # we can't use cmp because we need to use -b for windows 49 diff -b -u "$@" > "${TMPDIR}/test-diff" || true 50 if test -z "$(cat "${TMPDIR}"/test-diff)"; then 51 echo "OK" 52 else 53 cat "${TMPDIR}/test-diff" 54 echo "FAILED" 55 exit 1 56 fi 57 } 58 59 echo "unit tests:" 60 61 "${PYTHON:-python}" "${PRACTRACKER_DIR}/practracker_tests.py" 62 63 echo "ex0:" 64 65 run_practracker --exceptions "${DATA}/ex0.txt" \ 66 > "${TMPDIR}/ex0-received.txt" 2>&1 67 68 compare "${TMPDIR}/ex0-received.txt" \ 69 "${DATA}/ex0-expected.txt" 70 71 echo "ex1:" 72 73 run_practracker --exceptions "${DATA}/ex1.txt" \ 74 > "${TMPDIR}/ex1-received.txt" 2>&1 75 76 compare "${TMPDIR}/ex1-received.txt" \ 77 "${DATA}/ex1-expected.txt" 78 79 echo "ex1.overbroad:" 80 81 run_practracker --exceptions "${DATA}/ex1.txt" --list-overbroad \ 82 > "${TMPDIR}/ex1-overbroad-received.txt" 2>&1 83 84 compare "${TMPDIR}/ex1-overbroad-received.txt" \ 85 "${DATA}/ex1-overbroad-expected.txt" 86 87 echo "ex1.regen:" 88 89 cp "${DATA}/ex1.txt" "${TMPDIR}/ex1-copy.txt" 90 run_practracker --exceptions "${TMPDIR}/ex1-copy.txt" --regen >/dev/null 2>&1 91 compare "${TMPDIR}/ex1-copy.txt" "${DATA}/ex1-regen-expected.txt" 92 93 echo "ex1.regen_overbroad:" 94 95 cp "${DATA}/ex1.txt" "${TMPDIR}/ex1-copy.txt" 96 run_practracker --exceptions "${TMPDIR}/ex1-copy.txt" --regen-overbroad >/dev/null 2>&1 97 compare "${TMPDIR}/ex1-copy.txt" "${DATA}/ex1-regen-overbroad-expected.txt"