ctdb-tests: Use $PWD/bin/ if it exists when running in-tree
authorMartin Schwenke <martin@meltin.net>
Wed, 5 Feb 2020 01:09:51 +0000 (12:09 +1100)
committerAmitay Isaacs <amitay@samba.org>
Mon, 10 Feb 2020 04:07:39 +0000 (04:07 +0000)
When running tests from a top-level build, a stale build in ctdb/bin/
will be preferred and may cause confusing results.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/tests/scripts/script_install_paths.sh

index 9e54f4b473acf7c4229e55da368d9a3726e000bb..6890cf87aa69b06c3c197c1c97ca03685c4bfb96 100644 (file)
@@ -1,5 +1,29 @@
 # Hey Emacs, this is a -*- shell-script -*- !!!  :-)
 
+# Sets $bin_dir
+find_bin_dir ()
+{
+       _ctdb_dir="$1"
+
+       bin_dir="$(pwd -P)/bin"
+       if [ -d "$(pwd -P)/bin" ] ; then
+               return
+       fi
+
+       bin_dir="${_ctdb_dir}/bin"
+       if [ -d "$bin_dir" ] ; then
+               return
+       fi
+
+       bin_dir="$(dirname "${_ctdb_dir}")/bin"
+       if [ -d "$bin_dir" ] ; then
+               return
+       fi
+
+       die "Unable to locate bin/ subdirectory"
+}
+
+
 if ! $CTDB_TESTS_ARE_INSTALLED ; then
        if [ ! -f "${CTDB_TEST_DIR}/run_tests.sh" ] ; then
                die "Tests not installed but can't find run_tests.sh"
@@ -7,19 +31,16 @@ if ! $CTDB_TESTS_ARE_INSTALLED ; then
 
        ctdb_dir=$(cd -P "$(dirname "$CTDB_TEST_DIR")" && pwd) # real path
 
-       top_dir="$ctdb_dir"
-       if [ ! -d "${top_dir}/bin" ] ; then
-               top_dir=$(dirname "$top_dir")
-       fi
+       find_bin_dir "$ctdb_dir"
 
        CTDB_SCRIPTS_BASE="${ctdb_dir}/config"
        CTDB_SCRIPTS_INIT_SCRIPT="${ctdb_dir}/config/ctdb.init"
        CTDB_SCRIPTS_SBIN_DIR="${ctdb_dir}/config"
        CTDB_SCRIPTS_TOOLS_BIN_DIR="${ctdb_dir}/tools"
        CTDB_SCRIPTS_TOOLS_HELPER_DIR="${ctdb_dir}/tools"
-       CTDB_SCRIPTS_HELPER_BINDIR="${top_dir}/bin"
+       CTDB_SCRIPTS_HELPER_BINDIR="$bin_dir"
        CTDB_SCRIPTS_DATA_DIR="${ctdb_dir}/config"
-       CTDB_SCRIPTS_TESTS_LIBEXEC_DIR="${top_dir}/bin"
+       CTDB_SCRIPTS_TESTS_LIBEXEC_DIR="$bin_dir"
        CTDB_SCRIPTS_TESTS_BIN_DIR="$CTDB_TEST_DIR"
 else
        # Installed