This is the mail archive of the mauve-discuss@sources.redhat.com mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch: GUI testing framework


Hi,

This patch adds support to batch_run for running GUI tests, either
within an Xvfb server (default) or directly on the tester's desktop.  It
also introduces the GUI tag; all tests that require DISPLAY to be set
should be tagged as GUI tests.

I tested this with the java.awt.Robot tests I posted last week.  The
tests run properly both within Xvfb and on my desktop.

I would like to rely on the metacity window manager, since it handles
inset sizing correctly.

Comments?
Tom

2005-01-03  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* batch_run: Invoke Xvfb and metacity if GUI key is specified.
	* choose: Handle GUI tag.
	* README: Add section on GUI tests.

Index: README
===================================================================
RCS file: /cvs/mauve/mauve/README,v
retrieving revision 1.18
diff -u -r1.18 README
--- README	12 Aug 2004 15:11:12 -0000	1.18
+++ README	3 Jan 2005 23:23:53 -0000
@@ -172,6 +172,15 @@
 
 ================================================================
 
+Graphical tests that display windows and accept input are marked with
+the GUI tag.  GUI tests are not included in the default list of tags.
+If the GUI tag does appear in KEYS, batch_run will spawn an Xvfb
+process, set DISPLAY to that X server and run the
+graphical/interactive tests there.  If you'd rather run the tests
+directly on your desktop, set SHOW_GUI_TESTS=1.
+
+================================================================
+
 The test harness can also ignore known failures.  Simply create a
 file 'xfails' in the directory where the tests are being run which
 contains 'FAIL:' entries from previous test runs.  The order of the
Index: batch_run
===================================================================
RCS file: /cvs/mauve/mauve/batch_run,v
retrieving revision 1.5
diff -u -r1.5 batch_run
--- batch_run	19 Nov 2004 10:09:28 -0000	1.5
+++ batch_run	3 Jan 2005 23:23:53 -0000
@@ -63,6 +63,30 @@
 # Generate test classes list
 ./choose-classes . "$KEYS"
 
+case $KEYS in
+    *GUI*)
+
+        XVFB=`which Xvfb`
+        METACITY=`which metacity`
+
+        if test -z "$SHOW_GUI_TESTS"; then
+            if test -z $XVFB; then
+		echo "warning: Xvfb not found on PATH.  Showing GUI tests on main desktop..."
+	    elif test -z $METACITY; then
+		echo "warning: metacity not found on PATH.  Showing GUI tests on main desktop..."
+            else
+		export DISPLAY=:57
+		echo localhost > Xvfb.cfg
+		$XVFB :57 -auth Xvfb.cfg > /dev/null 2>&1 &
+		XVFB_PID=$!
+		$METACITY > /dev/null 2>&1 &
+		METACITY_PID=$!
+		rm -f Xvfb.cfg
+	    fi
+	fi
+	;;
+esac
+
 # Compile and run all the tests
 for testclass in `cat test_classes`; do
     # Get all needed java sources
@@ -81,3 +105,13 @@
         echo "FAIL: $testclass COMPILE FAILED"
     fi
 done
+
+case $KEYS in
+    *GUI*)
+
+        # killing Xvfb also kills the window manager process
+        if test ! -z "$XVFB_PID"; then
+            kill $XVFB_PID > /dev/null 2>&1
+        fi
+	;;
+esac
Index: choose
===================================================================
RCS file: /cvs/mauve/mauve/choose,v
retrieving revision 1.25
diff -u -r1.25 choose
--- choose	14 Oct 2004 06:53:07 -0000	1.25
+++ choose	3 Jan 2005 23:23:53 -0000
@@ -69,6 +69,10 @@
        # You can't specify this.
        :
        ;;
+    GUI)
+       tags="$tags GUI $i"
+       test -z "$seen_dashdash" && spectags="$spectags $i"
+       ;;
     JAVA2)
        tags="$tags JDK1.0 JDK1.1 JDK1.2 $i"
        test -z "$seen_dashdash" && spectags="$spectags $i"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]