diff options
author | Martin Pitt <martinpitt@gnome.org> | 2013-02-20 14:59:56 +0100 |
---|---|---|
committer | Martin Pitt <martinpitt@gnome.org> | 2013-02-20 14:59:56 +0100 |
commit | da066045e4e3ffde26e63285a818880be6ff3316 (patch) | |
tree | 844f60e5fbb82bab2149ddb8cceb4cd5c00002a3 | |
parent | 7105ed8a04647f446438bc44d20b8fa5c2b484be (diff) | |
download | upower-da066045e4e3ffde26e63285a818880be6ff3316.tar.gz |
integration-test: Always run on a fake system bus
Drop the two modes depending on whether or not the test gets run as root or
not. Set up a fake system bus and always use that. This also eliminates the
need for upowerd's --test option.
Drop usage of dbus-launch, as this leaves dbus-daemon running after the tests.
Use GioTestDBus instead, which cleans up properly.
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rwxr-xr-x | src/linux/integration-test | 33 |
2 files changed, 15 insertions, 22 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index f19ed24..4ee3daa 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -131,10 +131,8 @@ systemsleep_SCRIPTS = notify-upower.sh endif if UP_BUILD_TESTS -DBUS_LAUNCH=$(shell which dbus-launch) - check-local: upowerd - env top_builddir=$(top_builddir) $(DBUS_LAUNCH) $(srcdir)/linux/integration-test -v + env top_builddir=$(top_builddir) $(srcdir)/linux/integration-test -v endif endif diff --git a/src/linux/integration-test b/src/linux/integration-test index d53778d..b80dd70 100755 --- a/src/linux/integration-test +++ b/src/linux/integration-test @@ -52,39 +52,34 @@ class Tests(unittest.TestCase): # run from local build tree if we are in one, otherwise use system instance builddir = os.getenv('top_builddir', '.') if os.access (os.path.join(builddir, 'src', 'upowerd'), os.X_OK): - daemon_path = os.path.join(builddir, 'src', 'upowerd') + cls.daemon_path = os.path.join(builddir, 'src', 'upowerd') print('Testing binaries from local build tree') else: print('Testing installed system binaries') - daemon_path = None + cls.daemon_path = None with open('/usr/share/dbus-1/system-services/org.freedesktop.UPower.service') as f: for line in f: if line.startswith('Exec='): - daemon_path = line.split('=', 1)[1].strip() + cls.daemon_path = line.split('=', 1)[1].strip() break - assert daemon_path, 'could not determine daemon path from D-BUS .service file' + assert cls.daemon_path, 'could not determine daemon path from D-BUS .service file' # fail on CRITICALs on client side GLib.log_set_always_fatal(GLib.LogLevelFlags.LEVEL_WARNING| GLib.LogLevelFlags.LEVEL_ERROR| GLib.LogLevelFlags.LEVEL_CRITICAL) - # if we are root, test the real thing on the system bus, otherwise - # start on the session bus - if os.geteuid() == 0: - # kill running daemons - subprocess.call(['killall', 'upowerd']) + # set up a fake system D-BUS + cls.test_bus = Gio.TestDBus.new(Gio.TestDBusFlags.NONE) + cls.test_bus.up() + del os.environ['DBUS_SESSION_BUS_ADDRESS'] + os.environ['DBUS_SYSTEM_BUS_ADDRESS'] = cls.test_bus.get_bus_address() - cls.dbus = Gio.bus_get_sync(Gio.BusType.SYSTEM, None) - cls.daemon_argv = ['umockdev-wrapper', daemon_path] - print('Testing as root on the system bus') - else: - cls.dbus = Gio.bus_get_sync(Gio.BusType.SESSION, None) - cls.daemon_argv = ['umockdev-wrapper', daemon_path, '--test'] - - # use dbus-lauch if possible - print('Testing as user on the session bus') + cls.dbus = Gio.bus_get_sync(Gio.BusType.SYSTEM, None) + @classmethod + def tearDownClass(cls): + cls.test_bus.down() def setUp(self): '''Set up a local umockdev testbed. @@ -127,7 +122,7 @@ class Tests(unittest.TestCase): # have to do that ourselves env['UMOCKDEV_DIR'] = self.testbed.get_root_dir() self.log = tempfile.NamedTemporaryFile() - self.daemon = subprocess.Popen(self.daemon_argv, + self.daemon = subprocess.Popen(['umockdev-wrapper', self.daemon_path, '-v'], env=env, stdout=self.log, stderr=subprocess.STDOUT) # wait until the daemon gets online |