This is the mail archive of the
mauve-discuss@sources.redhat.com
mailing list for the Mauve project.
Re: Patch: GUI testing framework
On Tue, 2005-01-04 at 09:30 +0100, Thomas Zander wrote:
> On Tuesday 04 January 2005 00:36, Thomas Fitzsimmons wrote:
> > I would like to rely on the metacity window manager, since it handles
> > inset sizing correctly.
>
> If you feel the KWin WM does not, please make sure to inform the KWin
> developers where they don't follow the spec.
> I'd find it slightly amuzing if KDE does not since at least the main
> developer is also part of the spec lead..
>
It's not that they don't follow the spec, it's just that they don't
interpret it as strictly as metacity does. See this thread for the
original discussion:
http://mail.gnome.org/archives/wm-spec-list/2003-December/msg00005.html
> If you don't want to create a bugreport, please tell me exactly what the
> problem is (a reproducable c/c++ testcase would be great) so I can
> contact Lubos about this.
>
Try running gnu.testlet.java.awt.Robot.mouseMove under KWin and then
under Metacity. I've attached a new patch that makes it easier to
override the default window manager.
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 4 Jan 2005 18:05:58 -0000
@@ -172,6 +172,17 @@
================================================================
+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. By default, metacity is run in
+Xvfb; use the WM environment variable to run a different window
+manager. 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 4 Jan 2005 18:05:58 -0000
@@ -63,6 +63,32 @@
# Generate test classes list
./choose-classes . "$KEYS"
+case $KEYS in
+ *GUI*)
+
+ XVFB=`which Xvfb`
+ if test "x$WM" = "x"; then
+ WM=`which metacity`
+ fi
+
+ 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 $WM; 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=$!
+ $WM > /dev/null 2>&1 &
+ WM_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 +107,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 4 Jan 2005 18:05:58 -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"