From bcc4d15fdf7edf3e0b1b5108a35ef60f99a11f11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 17 Aug 2022 16:43:13 +0200 Subject: [PATCH] tests: Add test running basic perf test This test runs all of GNOME Shell using the headless backend inside a mocked D-Bus environment. The basic test tests, well, basic things, like the panel menu, the overview, showing the app grid view, as well as going back to the session view. Part-of: --- .gitlab-ci.yml | 1 + data/meson.build | 4 +++- js/ui/scripting.js | 2 +- src/meson.build | 19 +++++++++++-------- tests/meson.build | 26 ++++++++++++++++++++++++++ 5 files changed, 42 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c712bc586..346558233 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -209,6 +209,7 @@ test: NO_AT_BRIDGE: "1" before_script: - meson install -C mutter/build + - mkdir -m 700 $XDG_RUNTIME_DIR script: - dbus-run-session -- xvfb-run meson test -C build --no-rebuild artifacts: diff --git a/data/meson.build b/data/meson.build index 30d4917d8..7fa7f15ff 100644 --- a/data/meson.build +++ b/data/meson.build @@ -1,3 +1,5 @@ +data_builddir = meson.current_build_dir() + desktop_files = [ 'org.gnome.Shell.desktop', 'org.gnome.Shell.Extensions.desktop', @@ -134,5 +136,5 @@ endif custom_target('compile-schemas', input: schema, output: 'gschemas.compiled', - command: [find_program('glib-compile-schemas'), meson.current_build_dir()], + command: [find_program('glib-compile-schemas'), data_builddir], build_by_default: true) diff --git a/js/ui/scripting.js b/js/ui/scripting.js index cbd6ecd6b..4034d2105 100644 --- a/js/ui/scripting.js +++ b/js/ui/scripting.js @@ -77,7 +77,7 @@ function _getPerfHelper() { } function _spawnPerfHelper() { - let path = Config.LIBEXECDIR; + let path = GLib.getenv('GNOME_SHELL_BUILDDIR') || Config.LIBEXECDIR; let command = `${path}/gnome-shell-perf-helper`; Util.trySpawnCommandLine(command); } diff --git a/src/meson.build b/src/meson.build index fc7f8bfcc..de88a45d9 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,3 +1,5 @@ +src_builddir = meson.current_build_dir() + service_data = configuration_data() service_data.set('libexecdir', libexecdir) @@ -16,20 +18,21 @@ script_data.set('pkglibdir', pkglibdir) script_data.set('PYTHON', python.full_path()) script_data.set('VERSION', meson.project_version()) -script_tools = ['gnome-shell-perf-tool'] +perf_tool = configure_file( + input: 'gnome-shell-perf-tool.in', + output: 'gnome-shell-perf-tool', + configuration: script_data, + install_dir: bindir +) if get_option('extensions_tool') - script_tools += 'gnome-shell-extension-tool' -endif - -foreach tool : script_tools configure_file( - input: tool + '.in', - output: tool, + input: 'gnome-shell-extension-tool.in', + output: 'gnome-shell-extension-tool', configuration: script_data, install_dir: bindir ) -endforeach +endif install_data('gnome-shell-extension-prefs', install_dir: bindir diff --git a/tests/meson.build b/tests/meson.build index 72ac6170c..8c0202861 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -38,3 +38,29 @@ foreach test : tests env: testenv, workdir: meson.current_source_dir()) endforeach + +perf_tests = [ + 'basic', +] + +gvc_typelib_path = fs.parent(libgvc.get_variable('libgvc_gir')[1].full_path()) +libgvc_path = fs.parent(libgvc.get_variable('libgvc').full_path()) + +perf_testenv = testenv +perf_testenv.set('G_DEBUG', 'fatal-criticals') +perf_testenv.set('G_MESSAGES_DEBUG', 'GNOME Shell') +perf_testenv.set('GNOME_SHELL_DATADIR', data_builddir) +perf_testenv.set('GNOME_SHELL_BUILDDIR', src_builddir) +perf_testenv.append('GI_TYPELIB_PATH', gvc_typelib_path, separator: ':') +perf_testenv.append('LD_LIBRARY_PATH', libgvc_path, separator: ':') + +foreach perf_test : perf_tests + test('perf-' + perf_test, dbus_runner, + args: [ + perf_tool, + '--headless', + '--perf=@0@'.format(perf_test), + ], + env: perf_testenv, + ) +endforeach