From 781b0cdef9d2091a055aa2fc0a36e24bee25966d Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Thu, 25 Aug 2005 00:20:41 +0000 Subject: * test/python: Add python regression test * configure.in: Add test/python/Makefile * test/Makefile.am: Add the python directory to SUBDIRS --- test/python/Makefile.am | 11 ++++++++++ test/python/run-test.sh | 34 +++++++++++++++++++++++++++++ test/python/test-client.py | 52 +++++++++++++++++++++++++++++++++++++++++++++ test/python/test-service.py | 34 +++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+) create mode 100644 test/python/Makefile.am create mode 100755 test/python/run-test.sh create mode 100755 test/python/test-client.py create mode 100755 test/python/test-service.py (limited to 'test/python') diff --git a/test/python/Makefile.am b/test/python/Makefile.am new file mode 100644 index 00000000..5e4da980 --- /dev/null +++ b/test/python/Makefile.am @@ -0,0 +1,11 @@ +## note that TESTS has special meaning (stuff to use in make check) +## so if adding tests not to be run in make check, don't add them to +## TESTS +if DBUS_BUILD_TESTS +TESTS_ENVIRONMENT=DBUS_TOP_BUILDDIR=$(ABSOLUTE_TOP_BUILDDIR) +TESTS=run-test.sh +else +TESTS= +endif + +EXTRA_DIST=run-test.sh test-service.py test-client.py diff --git a/test/python/run-test.sh b/test/python/run-test.sh new file mode 100755 index 00000000..f7e067aa --- /dev/null +++ b/test/python/run-test.sh @@ -0,0 +1,34 @@ +#! /bin/bash + +function die() +{ + if ! test -z "$DBUS_SESSION_BUS_PID" ; then + echo "killing message bus "$DBUS_SESSION_BUS_PID >&2 + kill -9 $DBUS_SESSION_BUS_PID + fi + echo $SCRIPTNAME: $* >&2 + + rm $DBUS_TOP_BUILDDIR/python/dbus + + exit 1 +} + + +SCRIPTNAME=$0 +MODE=$1 + +## so the tests can complain if you fail to use the script to launch them +export DBUS_TEST_PYTHON_RUN_TEST_SCRIPT=1 + +# Rerun ourselves with tmp session bus if we're not already +if test -z "$DBUS_TEST_PYTHON_IN_RUN_TEST"; then + DBUS_TEST_PYTHON_IN_RUN_TEST=1 + export DBUS_TEST_PYTHON_IN_RUN_TEST + exec $DBUS_TOP_BUILDDIR/tools/run-with-tmp-session-bus.sh $SCRIPTNAME $MODE +fi + +ln -s $DBUS_TOP_BUILDDIR/python $DBUS_TOP_BUILDDIR/python/dbus +echo "running test-client.py" +$DBUS_TOP_BUILDDIR/test/python/test-client.py || die "test-client.py failed" +rm $DBUS_TOP_BUILDDIR/python/dbus + diff --git a/test/python/test-client.py b/test/python/test-client.py new file mode 100755 index 00000000..f9f692c2 --- /dev/null +++ b/test/python/test-client.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +import sys +import os + +builddir = os.environ["DBUS_TOP_BUILDDIR"] +pydir = builddir + "/python" + +sys.path.insert(0, pydir) + +import dbus + +if not dbus.__file__.startswith(pydir): + raise Exception("DBus modules are not being picked up from the package") + +bus = dbus.SessionBus() +remote_object = bus.get_object("org.freedesktop.DBus.TestSuitePythonService", "/org/freedesktop/DBus/TestSuitePythonObject") +iface = dbus.Interface(remote_object, "org.freedesktop.DBus.TestSuiteInterface") + +try: + #test dbus_interface parameter + print remote_object.Echo("dbus_interface test Passed", dbus_interface = "org.freedesktop.DBus.TestSuiteInterface") + + #test introspection + print "\n********* Introspection Test ************" + print remote_object.Introspect(dbus_interface="org.freedesktop.DBus.Introspectable") + print "Introspection test passed" + + #test sending python types and getting them back + print "\n********* Testing Python Types ***********" + test_vals = [1, 12323231, 3.14159265, 99999999.99, + "dude", "123", "What is all the fuss about?", "gob@gob.com", + [1,2,3], ["how", "are", "you"], [1.23,2.3], [1], ["Hello"], + (1,2,3), (1,), (1,"2",3), ("2", "what"), ("you", 1.2), + {1:"a", 2:"b"}, {"a":1, "b":2}, {1:1.1, 2:2.2}, {1.1:"a", 1.2:"b"}, + [[1,2,3],[2,3,4]], [["a","b"],["c","d"]], + ([1,2,3],"c", 1.2, ["a","b","c"], {"a": (1,"v"), "b": (2,"d")})] + + for send_val in test_vals: + print "Testing %s"% str(send_val) + recv_val = iface.Echo(send_val) + #TODO: is this right in python - construct a better comparison + # method + if send_val != recv_val: + raise Exception("Python type tests: %s does not equal %s"%(str(send_val), str(recv_val))) + + + +except Exception, e: + print e + sys.exit(1) + +sys.exit(0) diff --git a/test/python/test-service.py b/test/python/test-service.py new file mode 100755 index 00000000..21d101ce --- /dev/null +++ b/test/python/test-service.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +import sys +import os + +builddir = os.environ["DBUS_TOP_BUILDDIR"] +pydir = builddir + "/python" + +sys.path.insert(0, pydir) + +import dbus + +if not dbus.__file__.startswith(pydir): + raise Exception("DBus modules are not being picked up from the package") + +import dbus.service +import dbus.glib +import gobject + +class TestObject(dbus.service.Object): + def __init__(self, bus_name, object_path="/org/freedesktop/DBus/TestSuitePythonObject"): + dbus.service.Object.__init__(self, bus_name, object_path) + + """ Echo whatever is sent + """ + @dbus.service.method("org.freedesktop.DBus.TestSuiteInterface") + def Echo(self, arg): + return arg + +session_bus = dbus.SessionBus() +name = dbus.service.BusName("org.freedesktop.DBus.TestSuitePythonService", bus=session_bus) +object = TestObject(name) + +loop = gobject.MainLoop() +loop.run() -- cgit