tests/dbus-runner: Clean up launching the tests
Move the wrapper functionality where it is actually used, use a single mechanism to determine if we're already in a dbus-runner environment and make the mocked launching simpler. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4022>
This commit is contained in:
parent
35c45c24ce
commit
a085281138
@ -231,7 +231,9 @@ class MutterDBusRunner(DBusTestCase):
|
|||||||
klass.poll_thread.join()
|
klass.poll_thread.join()
|
||||||
|
|
||||||
|
|
||||||
def wrap_call(args, wrapper, extra_env):
|
def run_test(args, extra_env):
|
||||||
|
print('Running test case...', file=sys.stderr)
|
||||||
|
|
||||||
env = {}
|
env = {}
|
||||||
env.update(os.environ)
|
env.update(os.environ)
|
||||||
env['NO_AT_BRIDGE'] = '1'
|
env['NO_AT_BRIDGE'] = '1'
|
||||||
@ -244,6 +246,8 @@ def wrap_call(args, wrapper, extra_env):
|
|||||||
if extra_env:
|
if extra_env:
|
||||||
env |= extra_env
|
env |= extra_env
|
||||||
|
|
||||||
|
wrapper = os.getenv('META_DBUS_RUNNER_WRAPPER')
|
||||||
|
|
||||||
if wrapper == 'gdb':
|
if wrapper == 'gdb':
|
||||||
args = ['gdb', '-ex', 'r', '-ex', 'bt full', '--args'] + args
|
args = ['gdb', '-ex', 'r', '-ex', 'bt full', '--args'] + args
|
||||||
elif wrapper == 'rr':
|
elif wrapper == 'rr':
|
||||||
@ -256,6 +260,22 @@ def wrap_call(args, wrapper, extra_env):
|
|||||||
return p.wait()
|
return p.wait()
|
||||||
|
|
||||||
|
|
||||||
|
def run_test_mocked(klass, rest, launch=[], bind_sockets=False, extra_env=None):
|
||||||
|
result = 1
|
||||||
|
|
||||||
|
klass.setUpClass(launch=launch,
|
||||||
|
bind_sockets=bind_sockets)
|
||||||
|
runner = klass()
|
||||||
|
runner.assertGreater(len(rest), 0)
|
||||||
|
|
||||||
|
try:
|
||||||
|
result = run_test(rest, extra_env)
|
||||||
|
finally:
|
||||||
|
MutterDBusRunner.tearDownClass()
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def meta_run(klass, extra_env=None, setup_argparse=None, handle_argparse=None):
|
def meta_run(klass, extra_env=None, setup_argparse=None, handle_argparse=None):
|
||||||
DBusGMainLoop(set_as_default=True)
|
DBusGMainLoop(set_as_default=True)
|
||||||
|
|
||||||
@ -277,19 +297,13 @@ def meta_run(klass, extra_env=None, setup_argparse=None, handle_argparse=None):
|
|||||||
else:
|
else:
|
||||||
print('WARNING: Command or separator `--` not found', file=sys.stderr)
|
print('WARNING: Command or separator `--` not found', file=sys.stderr)
|
||||||
|
|
||||||
if args.no_isolate_dirs:
|
if os.getenv('META_DBUS_RUNNER_ACTIVE') != None:
|
||||||
return meta_run_klass(klass, rest,
|
print('Not re-creating mocked environment...', file=sys.stderr)
|
||||||
extra_env=extra_env)
|
return run_test(rest, extra_env)
|
||||||
|
|
||||||
test_root = os.getenv('MUTTER_DBUS_RUNNER_TEST_ROOT')
|
|
||||||
if test_root:
|
|
||||||
print('Reusing MUTTER_DBUS_RUNNER_TEST_ROOT', test_root, file=sys.stderr)
|
|
||||||
return meta_run_klass(klass, rest,
|
|
||||||
extra_env=extra_env)
|
|
||||||
|
|
||||||
with tempfile.TemporaryDirectory(prefix='mutter-testroot-',
|
with tempfile.TemporaryDirectory(prefix='mutter-testroot-',
|
||||||
ignore_cleanup_errors=True) as test_root:
|
ignore_cleanup_errors=True) as test_root:
|
||||||
env_dirs = [
|
env_dirs = [] if args.no_isolate_dirs else [
|
||||||
'HOME',
|
'HOME',
|
||||||
'TMPDIR',
|
'TMPDIR',
|
||||||
'XDG_CACHE_HOME',
|
'XDG_CACHE_HOME',
|
||||||
@ -297,42 +311,13 @@ def meta_run(klass, extra_env=None, setup_argparse=None, handle_argparse=None):
|
|||||||
'XDG_DATA_HOME',
|
'XDG_DATA_HOME',
|
||||||
'XDG_RUNTIME_DIR',
|
'XDG_RUNTIME_DIR',
|
||||||
]
|
]
|
||||||
os.environ['MUTTER_DBUS_RUNNER_TEST_ROOT'] = test_root
|
|
||||||
print('Setup MUTTER_DBUS_RUNNER_TEST_ROOT as', test_root, file=sys.stderr)
|
|
||||||
for env_dir in env_dirs:
|
for env_dir in env_dirs:
|
||||||
directory = os.path.join(test_root, env_dir.lower())
|
directory = os.path.join(test_root, env_dir.lower())
|
||||||
os.mkdir(directory, mode=0o700)
|
os.mkdir(directory, mode=0o700)
|
||||||
os.environ[env_dir] = directory
|
os.environ[env_dir] = directory
|
||||||
print('Setup', env_dir, 'as', directory, file=sys.stderr)
|
print('Setup', env_dir, 'as', directory, file=sys.stderr)
|
||||||
|
|
||||||
return meta_run_klass(klass, rest,
|
return run_test_mocked(klass, rest,
|
||||||
launch=args.launch,
|
launch=args.launch,
|
||||||
bind_sockets=True,
|
bind_sockets=True,
|
||||||
extra_env=extra_env)
|
extra_env=extra_env)
|
||||||
|
|
||||||
def meta_run_klass(klass, rest, launch=[], bind_sockets=False, extra_env=None):
|
|
||||||
result = 1
|
|
||||||
|
|
||||||
if os.getenv('META_DBUS_RUNNER_ACTIVE') == None:
|
|
||||||
klass.setUpClass(launch=launch,
|
|
||||||
bind_sockets=bind_sockets)
|
|
||||||
runner = klass()
|
|
||||||
runner.assertGreater(len(rest), 0)
|
|
||||||
wrapper = os.getenv('META_DBUS_RUNNER_WRAPPER')
|
|
||||||
|
|
||||||
try:
|
|
||||||
print('Running test case...', file=sys.stderr)
|
|
||||||
result = wrap_call(rest, wrapper, extra_env)
|
|
||||||
finally:
|
|
||||||
MutterDBusRunner.tearDownClass()
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
print(('Inside a nested meta-dbus-runner: '
|
|
||||||
'Not re-creating mocked environment.'),
|
|
||||||
file=sys.stderr)
|
|
||||||
print('Running test case...', file=sys.stderr)
|
|
||||||
result = wrap_call(rest, None, extra_env)
|
|
||||||
finally:
|
|
||||||
pass
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user