commit 5b04db59f69332ac6d44e12ad759e224a9cd3b99 Author: teor teor@torproject.org Date: Thu Oct 31 00:58:09 2019 +1000
test/scripts: Use the same code to find the tor binary
This change makes sure we are always using the coverage binary, when coverage is enabled.
Fixes bug 32368; bugfix on 0.2.7.3-rc. --- changes/bug32368 | 4 ++++ src/test/test_cmdline.sh | 17 +++++++++++++++++ src/test/test_key_expiration.sh | 21 ++++++++++++++++++++- src/test/test_keygen.sh | 21 ++++++++++++++++++++- src/test/test_parseconf.sh | 2 ++ src/test/test_rebind.sh | 32 ++++++++++++++++++++++++++++++-- src/test/test_zero_length_keys.sh | 37 +++++++++++++++++++++++++++++++++---- 7 files changed, 126 insertions(+), 8 deletions(-)
diff --git a/changes/bug32368 b/changes/bug32368 new file mode 100644 index 000000000..378f74fa5 --- /dev/null +++ b/changes/bug32368 @@ -0,0 +1,4 @@ + o Minor bugfixes (test): + - Use the same code to find the tor binary in all of our test scripts. + This change makes sure we are always using the coverage binary, when + coverage is enabled. Fixes bug 32368; bugfix on 0.2.7.3-rc. diff --git a/src/test/test_cmdline.sh b/src/test/test_cmdline.sh index cf758c385..ded58af63 100755 --- a/src/test/test_cmdline.sh +++ b/src/test/test_cmdline.sh @@ -3,6 +3,21 @@ umask 077 set -e
+# emulate realpath(), in case coreutils or equivalent is not installed. +abspath() { + f="$*" + if [ -d "$f" ]; then + dir="$f" + base="" + else + dir="$(dirname "$f")" + base="/$(basename "$f")" + fi + dir="$(cd "$dir" && pwd)" + echo "$dir$base" +} + +# find the tor binary if [ $# -ge 1 ]; then TOR_BINARY="${1}" shift @@ -10,6 +25,8 @@ else TOR_BINARY="${TESTING_TOR_BINARY:-./src/app/tor}" fi
+TOR_BINARY="$(abspath "$TOR_BINARY")" + echo "TOR BINARY IS ${TOR_BINARY}"
die() { echo "$1" >&2 ; exit 5; } diff --git a/src/test/test_key_expiration.sh b/src/test/test_key_expiration.sh index 9d42c1cc4..2238f7aa7 100755 --- a/src/test/test_key_expiration.sh +++ b/src/test/test_key_expiration.sh @@ -6,6 +6,20 @@ umask 077 set -e
+# emulate realpath(), in case coreutils or equivalent is not installed. +abspath() { + f="$*" + if [ -d "$f" ]; then + dir="$f" + base="" + else + dir="$(dirname "$f")" + base="/$(basename "$f")" + fi + dir="$(cd "$dir" && pwd)" + echo "$dir$base" +} + if [ $# -eq 0 ] || [ ! -f "${1}" ] || [ ! -x "${1}" ]; then if [ "$TESTING_TOR_BINARY" = "" ] ; then echo "Usage: ${0} PATH_TO_TOR [case-number]" @@ -21,13 +35,18 @@ if test "$UNAME_OS" = 'CYGWIN' || \ exit 77 fi
+# find the tor binary if [ $# -ge 1 ]; then TOR_BINARY="${1}" shift else - TOR_BINARY="${TESTING_TOR_BINARY}" + TOR_BINARY="${TESTING_TOR_BINARY:-./src/app/tor}" fi
+TOR_BINARY="$(abspath "$TOR_BINARY")" + +echo "TOR BINARY IS ${TOR_BINARY}" + if "$TOR_BINARY" --list-modules | grep -q "relay: no"; then echo "This test requires the relay module. Skipping." >&2 exit 77 diff --git a/src/test/test_keygen.sh b/src/test/test_keygen.sh index 57df88827..6812f8883 100755 --- a/src/test/test_keygen.sh +++ b/src/test/test_keygen.sh @@ -6,6 +6,20 @@ umask 077 set -e
+# emulate realpath(), in case coreutils or equivalent is not installed. +abspath() { + f="$*" + if [ -d "$f" ]; then + dir="$f" + base="" + else + dir="$(dirname "$f")" + base="/$(basename "$f")" + fi + dir="$(cd "$dir" && pwd)" + echo "$dir$base" +} + if [ $# -eq 0 ] || [ ! -f "${1}" ] || [ ! -x "${1}" ]; then if [ "$TESTING_TOR_BINARY" = "" ] ; then echo "Usage: ${0} PATH_TO_TOR [case-number]" @@ -21,13 +35,18 @@ if test "$UNAME_OS" = 'CYGWIN' || \ exit 77 fi
+# find the tor binary if [ $# -ge 1 ]; then TOR_BINARY="${1}" shift else - TOR_BINARY="${TESTING_TOR_BINARY}" + TOR_BINARY="${TESTING_TOR_BINARY:-./src/app/tor}" fi
+TOR_BINARY="$(abspath "$TOR_BINARY")" + +echo "TOR BINARY IS ${TOR_BINARY}" + if "$TOR_BINARY" --list-modules | grep -q "relay: no"; then echo "This test requires the relay module. Skipping." >&2 exit 77 diff --git a/src/test/test_parseconf.sh b/src/test/test_parseconf.sh index 3edb5032e..50eeb497e 100755 --- a/src/test/test_parseconf.sh +++ b/src/test/test_parseconf.sh @@ -85,6 +85,8 @@ fi
TOR_BINARY="$(abspath "$TOR_BINARY")"
+echo "TOR BINARY IS ${TOR_BINARY}" + TOR_MODULES_DISABLED="$("$TOR_BINARY" --list-modules | grep ": no" \ | cut -d ":" -f1 | sort | tr "\n" "_")" # Remove the last underscore, if there is one diff --git a/src/test/test_rebind.sh b/src/test/test_rebind.sh index 62c9283fc..879008c1c 100755 --- a/src/test/test_rebind.sh +++ b/src/test/test_rebind.sh @@ -1,7 +1,23 @@ #!/bin/sh
+umask 077 +set -e set -x
+# emulate realpath(), in case coreutils or equivalent is not installed. +abspath() { + f="$*" + if [ -d "$f" ]; then + dir="$f" + base="" + else + dir="$(dirname "$f")" + base="/$(basename "$f")" + fi + dir="$(cd "$dir" && pwd)" + echo "$dir$base" +} + UNAME_OS=$(uname -s | cut -d_ -f1) if test "$UNAME_OS" = 'CYGWIN' || \ test "$UNAME_OS" = 'MSYS' || \ @@ -12,7 +28,19 @@ if test "$UNAME_OS" = 'CYGWIN' || \ fi fi
-if "${TESTING_TOR_BINARY}" --list-modules | grep -q "relay: no"; then +# find the tor binary +if [ $# -ge 1 ]; then + TOR_BINARY="${1}" + shift +else + TOR_BINARY="${TESTING_TOR_BINARY:-./src/app/tor}" +fi + +TOR_BINARY="$(abspath "$TOR_BINARY")" + +echo "TOR BINARY IS ${TOR_BINARY}" + +if "${TOR_BINARY}" --list-modules | grep -q "relay: no"; then echo "This test requires the relay module. Skipping." >&2 exit 77 fi @@ -35,6 +63,6 @@ elif [ ! -d "$tmpdir" ]; then exit 3 fi
-"${PYTHON:-python}" "${abs_top_srcdir:-.}/src/test/test_rebind.py" "${TESTING_TOR_BINARY}" "$tmpdir" +"${PYTHON:-python}" "${abs_top_srcdir:-.}/src/test/test_rebind.py" "${TOR_BINARY}" "$tmpdir"
exit $? diff --git a/src/test/test_zero_length_keys.sh b/src/test/test_zero_length_keys.sh index eeabab352..b944d9bf3 100755 --- a/src/test/test_zero_length_keys.sh +++ b/src/test/test_zero_length_keys.sh @@ -1,15 +1,44 @@ #!/bin/sh # Check that tor regenerates keys when key files are zero-length
-if "${builddir:-.}/src/app/tor" --list-modules | grep -q "relay: no"; then +umask 077 +set -e + +# emulate realpath(), in case coreutils or equivalent is not installed. +abspath() { + f="$*" + if [ -d "$f" ]; then + dir="$f" + base="" + else + dir="$(dirname "$f")" + base="/$(basename "$f")" + fi + dir="$(cd "$dir" && pwd)" + echo "$dir$base" +} + +# find the tor binary +if [ $# -ge 1 ]; then + TOR_BINARY="${1}" + shift +else + TOR_BINARY="${TESTING_TOR_BINARY:-./src/app/tor}" +fi + +TOR_BINARY="$(abspath "$TOR_BINARY")" + +echo "TOR BINARY IS ${TOR_BINARY}" + +if "$TOR_BINARY" --list-modules | grep -q "relay: no"; then echo "This test requires the relay module. Skipping." >&2 exit 77 fi
exitcode=0
-"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/app/tor" -z || exitcode=1 -"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/app/tor" -d || exitcode=1 -"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "${builddir:-.}/src/app/tor" -e || exitcode=1 +"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "$TOR_BINARY" -z || exitcode=1 +"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "$TOR_BINARY" -d || exitcode=1 +"${SHELL:-sh}" "${abs_top_srcdir:-.}/src/test/zero_length_keys.sh" "$TOR_BINARY" -e || exitcode=1
exit ${exitcode}
tor-commits@lists.torproject.org