tests/dbusrunner: Use separate HOME, Temp and XDG Runtime dirs
We need to use a different $XDG_RUNTIME_DIR path to be able to start most tests in parallel, and we can use a temporary directory for that which python cleans up when done. Also, given that most of settings are stored in HOME use temporary one for that too, to prevent mutter to fail because it may load some local configuration (e.g. monitors.xml) that don't meet the expectations or that may change the test behavior in an unexpected way. As per this, CI needs to be adapted for new args handling Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3793>
This commit is contained in:
parent
adc43ba001
commit
fec38819ac
4 changed files with 36 additions and 2 deletions
|
@ -518,6 +518,7 @@ build-wayland-only@x86_64:
|
|||
./src/tests/meta-dbus-runner.py
|
||||
--launch=pipewire
|
||||
--launch=wireplumber
|
||||
--
|
||||
meson test
|
||||
-C build
|
||||
--setup plain
|
||||
|
@ -680,6 +681,7 @@ dist-mutter:
|
|||
./src/tests/meta-dbus-runner.py
|
||||
--launch=pipewire
|
||||
--launch=wireplumber
|
||||
--
|
||||
meson dist -C build
|
||||
artifacts:
|
||||
expire_in: 7 day
|
||||
|
|
|
@ -50,7 +50,7 @@ foreach test_case: privileged_tests
|
|||
args: [
|
||||
kernel_image_path,
|
||||
meta_dbus_runner.full_path(),
|
||||
'--kvm',
|
||||
'--kvm --',
|
||||
meson.current_build_dir(),
|
||||
vm_env,
|
||||
kvm_wrapper,
|
||||
|
|
|
@ -40,6 +40,10 @@ SCRIPT="\
|
|||
$(printf "\"%s\" " "${@:6}")\
|
||||
"
|
||||
|
||||
if [ -v "$MUTTER_TEST_ROOT" ]; then
|
||||
ISOLATE_DIRS_ARGS="--rwdir=$MUTTER_TEST_ROOT"
|
||||
fi
|
||||
|
||||
echo Running tests in virtual machine ...
|
||||
virtme-run \
|
||||
--memory=1024M \
|
||||
|
@ -47,6 +51,7 @@ virtme-run \
|
|||
--pwd \
|
||||
--kimg "$IMAGE" \
|
||||
--script-sh "sh -c \"$SCRIPT\"" \
|
||||
$ISOLATE_DIRS_ARGS \
|
||||
--qemu-opts -cpu host,pdcm=off -smp 2
|
||||
VM_RESULT=$?
|
||||
if [ $VM_RESULT != 0 ]; then
|
||||
|
|
|
@ -8,6 +8,7 @@ import subprocess
|
|||
import getpass
|
||||
import argparse
|
||||
import logind_helpers
|
||||
import tempfile
|
||||
from collections import OrderedDict
|
||||
from dbusmock import DBusTestCase
|
||||
from dbus.mainloop.glib import DBusGMainLoop
|
||||
|
@ -286,12 +287,38 @@ def meta_run(klass):
|
|||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--kvm', action='store_true', default=False)
|
||||
parser.add_argument('--launch', action='append', default=[])
|
||||
parser.add_argument('--no-isolate-dirs', action='store_true', default=False)
|
||||
(args, rest) = parser.parse_known_args(sys.argv)
|
||||
|
||||
rest.pop(0)
|
||||
if not rest:
|
||||
parser.error('Command or separator `--` not found')
|
||||
if rest[0] == '--':
|
||||
rest.pop(0)
|
||||
rest.pop(0)
|
||||
else:
|
||||
print('WARNING: Command or separator `--` not found', file=sys.stderr)
|
||||
|
||||
if args.no_isolate_dirs:
|
||||
return meta_run_klass(klass, args, rest)
|
||||
|
||||
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, args, rest)
|
||||
|
||||
with tempfile.TemporaryDirectory(prefix='mutter-testroot-',
|
||||
ignore_cleanup_errors=True) as test_root:
|
||||
env_dirs = ['HOME', 'TMPDIR', 'XDG_RUNTIME_DIR', 'XDG_CONFIG_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:
|
||||
directory = os.path.join(test_root, env_dir.lower())
|
||||
os.mkdir(directory, mode=0o700)
|
||||
os.environ[env_dir] = directory
|
||||
print('Setup', env_dir, 'as', directory, file=sys.stderr)
|
||||
return meta_run_klass(klass, args, rest)
|
||||
|
||||
def meta_run_klass(klass, args, rest):
|
||||
result = 1
|
||||
|
||||
if os.getenv('META_DBUS_RUNNER_ACTIVE') == None:
|
||||
|
|
Loading…
Reference in a new issue