Author: tross
Date: Wed Nov 25 19:21:20 2009
New Revision: 884231

URL: http://svn.apache.org/viewvc?rev=884231&view=rev
Log:
QPID-2219 - Example tests hang when run in a vpath build
Verify scripts updated to operate in vpath builds.

Modified:
    qpid/trunk/qpid/cpp/examples/Makefile.am
    qpid/trunk/qpid/cpp/examples/verify
    qpid/trunk/qpid/cpp/examples/verify_all

Modified: qpid/trunk/qpid/cpp/examples/Makefile.am
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/examples/Makefile.am?rev=884231&r1=884230&r2=884231&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/examples/Makefile.am (original)
+++ qpid/trunk/qpid/cpp/examples/Makefile.am Wed Nov 25 19:21:20 2009
@@ -41,8 +41,9 @@
 
 # For older versions of automake
 abs_top_srcdir = @abs_top_srcdir@
+abs_top_builddir = @abs_top_builddir@
 
 # Verify the examples in the buid tree.
 check-local: 
-       $(srcdir)/verify_all $(abs_top_srcdir)/.. $(top_builddir)/src/qpidd 
$(broker_args) $(exclude_examples_regexp)
+       $(srcdir)/verify_all $(abs_top_srcdir)/.. $(abs_top_builddir) 
$(broker_args) $(exclude_examples_regexp)
 

Modified: qpid/trunk/qpid/cpp/examples/verify
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/examples/verify?rev=884231&r1=884230&r2=884231&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/examples/verify (original)
+++ qpid/trunk/qpid/cpp/examples/verify Wed Nov 25 19:21:20 2009
@@ -75,13 +75,28 @@
     done
 }
 
+function normalize() {
+    local path=${1//\/.\//\/}\/
+    while [[ $path =~ ([^/][^/]*/\.\./) ]]
+    do
+        path=${path/${BASH_REMATCH[0]}/}
+    done
+    echo $path | sed 's/\/$//'
+}
+
 verify() {
     FAIL=
-    if [ -d $1 ]; then dir=$1; script=verify;
-    else dir=`dirname $1`; script=`basename $1`; fi
-    cd $dir || return 1
+    arg=$(normalize $1)
+    srcdir=$(normalize $2)
+    builddir=$(normalize $3)
+    if [ -d $arg ]; then dir=$arg; script=verify;
+    else dir=`dirname $arg`; script=`basename $arg`; fi
+
+    # if the example is in the "cpp" area, make sure we run from the build 
directory, not the source dir.
+    rundir=${dir/$srcdir\/cpp/$builddir/}
+    cd $rundir || return 1
     rm -f *.out
-    { source ./$script && diff -ac $script.out $script.in ; } || fail
+    { source $dir/$script && diff -ac $script.out $dir/$script.in ; } || fail
     test -z "$FAIL" && rm -f *.out
     return $FAIL
 }
@@ -100,8 +115,12 @@
     trap "$QPIDD -q" EXIT
 fi
 
+topsrcdir=$1
+topbuilddir=$2
+shift 2
+
 for example in "$@"; do
-    echo "== $example "
-    if ( verify $example; ) then echo "PASS";  else echo "FAIL"; RET=1; fi
+    echo "== $(normalize $example)"
+    if ( verify $example $topsrcdir $topbuilddir; ) then echo "PASS";  else 
echo "FAIL"; RET=1; fi
      done
 exit $RET

Modified: qpid/trunk/qpid/cpp/examples/verify_all
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/examples/verify_all?rev=884231&r1=884230&r2=884231&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/examples/verify_all (original)
+++ qpid/trunk/qpid/cpp/examples/verify_all Wed Nov 25 19:21:20 2009
@@ -24,7 +24,8 @@
 
 verify=`dirname $0`/verify
 topsrcdir=$1
-qpidd=$2
+topbuilddir=$2
+qpidd=$topbuilddir/src/qpidd
 broker_args=$3
 exclude_regexp=$4
 python=${QPID_PYTHON_DIR:-$topsrcdir/python}
@@ -50,4 +51,4 @@
        { cat $f | grep $exclude_regexp > /dev/null ; } || 
run_examples="$run_examples $f"
     done
 fi
-$verify $run_examples
+$verify $topsrcdir $topbuilddir $run_examples



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to