Merge remote-tracking branch 'origin/pull/58/head' into core3-devel
This commit is contained in:
commit
c6c0a545e6
@ -33,7 +33,7 @@ import qubes.vm.adminvm
|
|||||||
import qubes.ext.r3compatibility
|
import qubes.ext.r3compatibility
|
||||||
|
|
||||||
|
|
||||||
class AppVM(qubes.vm.appvm.AppVM):
|
class AppVM(qubes.vm.appvm.AppVM): # pylint: disable=too-many-ancestors
|
||||||
"""core2 compatibility AppVM class, with variable dir_path"""
|
"""core2 compatibility AppVM class, with variable dir_path"""
|
||||||
dir_path = qubes.property('dir_path',
|
dir_path = qubes.property('dir_path',
|
||||||
# pylint: disable=undefined-variable
|
# pylint: disable=undefined-variable
|
||||||
@ -46,7 +46,8 @@ class AppVM(qubes.vm.appvm.AppVM):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
class StandaloneVM(qubes.vm.standalonevm.StandaloneVM):
|
class StandaloneVM(qubes.vm.standalonevm.StandaloneVM):
|
||||||
"""core2 compatibility StandaloneVM class, with variable dir_path"""
|
"""core2 compatibility StandaloneVM class, with variable dir_path
|
||||||
|
""" # pylint: disable=too-many-ancestors
|
||||||
dir_path = qubes.property('dir_path',
|
dir_path = qubes.property('dir_path',
|
||||||
# pylint: disable=undefined-variable
|
# pylint: disable=undefined-variable
|
||||||
default=(lambda self: super(StandaloneVM, self).dir_path),
|
default=(lambda self: super(StandaloneVM, self).dir_path),
|
||||||
|
@ -135,7 +135,10 @@ class Emitter(object):
|
|||||||
for cls in order:
|
for cls in order:
|
||||||
if not hasattr(cls, '__handlers__'):
|
if not hasattr(cls, '__handlers__'):
|
||||||
continue
|
continue
|
||||||
for func in sorted(cls.__handlers__[event],
|
handlers = cls.__handlers__[event]
|
||||||
|
if '*' in cls.__handlers__:
|
||||||
|
handlers = cls.__handlers__['*'] | handlers
|
||||||
|
for func in sorted(handlers,
|
||||||
key=(lambda handler: hasattr(handler, 'ha_bound')),
|
key=(lambda handler: hasattr(handler, 'ha_bound')),
|
||||||
reverse=True):
|
reverse=True):
|
||||||
effect = func(self, event, *args, **kwargs)
|
effect = func(self, event, *args, **kwargs)
|
||||||
|
@ -82,3 +82,27 @@ class TC_00_Emitter(qubes.tests.QubesTestCase):
|
|||||||
|
|
||||||
self.assertItemsEqual(effect,
|
self.assertItemsEqual(effect,
|
||||||
('testvalue1', 'testvalue2', 'testvalue3', 'testvalue4'))
|
('testvalue1', 'testvalue2', 'testvalue3', 'testvalue4'))
|
||||||
|
|
||||||
|
def test_004_catch_all(self):
|
||||||
|
# need something mutable
|
||||||
|
testevent_fired = [0]
|
||||||
|
|
||||||
|
def on_all(subject, event, *args, **kwargs):
|
||||||
|
# pylint: disable=unused-argument
|
||||||
|
testevent_fired[0] += 1
|
||||||
|
|
||||||
|
def on_foo(subject, event, *args, **kwargs):
|
||||||
|
# pylint: disable=unused-argument
|
||||||
|
testevent_fired[0] += 1
|
||||||
|
|
||||||
|
emitter = qubes.events.Emitter()
|
||||||
|
emitter.add_handler('*', on_all)
|
||||||
|
emitter.add_handler('foo', on_foo)
|
||||||
|
emitter.events_enabled = True
|
||||||
|
emitter.fire_event('testevent')
|
||||||
|
self.assertEqual(testevent_fired[0], 1)
|
||||||
|
emitter.fire_event('foo')
|
||||||
|
# now catch-all and foo should be executed
|
||||||
|
self.assertEqual(testevent_fired[0], 3)
|
||||||
|
emitter.fire_event('bar')
|
||||||
|
self.assertEqual(testevent_fired[0], 4)
|
||||||
|
Loading…
Reference in New Issue
Block a user