[tor-commits] [tor/master] test/scripts: Use the same code to find the tor binary

teor at torproject.org teor at torproject.org
Tue Nov 5 04:28:52 UTC 2019


commit 5b04db59f69332ac6d44e12ad759e224a9cd3b99
Author: teor <teor at 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}





More information about the tor-commits mailing list