tests: Make test context able to create a session manager
And create an empty one when asked for it. This session data is not saved on disk, except for the purpose of creating an empty file FD. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3825>
This commit is contained in:
parent
74ce36f323
commit
6c3c17daa6
2 changed files with 47 additions and 0 deletions
|
@ -22,6 +22,7 @@
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
#include "core/meta-session-state.h"
|
#include "core/meta-session-state.h"
|
||||||
|
#include "core/util-private.h"
|
||||||
#include "meta/window.h"
|
#include "meta/window.h"
|
||||||
|
|
||||||
#define META_TYPE_SESSION_MANAGER (meta_session_manager_get_type ())
|
#define META_TYPE_SESSION_MANAGER (meta_session_manager_get_type ())
|
||||||
|
@ -33,6 +34,7 @@ G_DECLARE_FINAL_TYPE (MetaSessionManager,
|
||||||
MetaSessionManager * meta_session_manager_new (const gchar *name,
|
MetaSessionManager * meta_session_manager_new (const gchar *name,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
META_EXPORT_TEST
|
||||||
MetaSessionManager * meta_session_manager_new_for_fd (const gchar *name,
|
MetaSessionManager * meta_session_manager_new_for_fd (const gchar *name,
|
||||||
int fd,
|
int fd,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <gio/gio.h>
|
#include <gio/gio.h>
|
||||||
#define G_SETTINGS_ENABLE_BACKEND
|
#define G_SETTINGS_ENABLE_BACKEND
|
||||||
#include <gio/gsettingsbackend.h>
|
#include <gio/gsettingsbackend.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include "core/meta-context-private.h"
|
#include "core/meta-context-private.h"
|
||||||
#include "meta/meta-x11-display.h"
|
#include "meta/meta-x11-display.h"
|
||||||
|
@ -51,6 +52,7 @@ typedef struct _MetaContextTestPrivate
|
||||||
{
|
{
|
||||||
MetaContextTestType type;
|
MetaContextTestType type;
|
||||||
MetaContextTestFlag flags;
|
MetaContextTestFlag flags;
|
||||||
|
MetaSessionManager *session_manager;
|
||||||
} MetaContextTestPrivate;
|
} MetaContextTestPrivate;
|
||||||
|
|
||||||
struct _MetaContextTestClass
|
struct _MetaContextTestClass
|
||||||
|
@ -76,6 +78,18 @@ ensure_gsettings_memory_backend (void)
|
||||||
G_TYPE_FROM_INSTANCE (default_backend));
|
G_TYPE_FROM_INSTANCE (default_backend));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_context_test_finalize (GObject *object)
|
||||||
|
{
|
||||||
|
MetaContextTest *context_test = META_CONTEXT_TEST (object);
|
||||||
|
MetaContextTestPrivate *priv =
|
||||||
|
meta_context_test_get_instance_private (context_test);
|
||||||
|
|
||||||
|
g_clear_object (&priv->session_manager);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (meta_context_test_parent_class)->finalize (object);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_context_test_configure (MetaContext *context,
|
meta_context_test_configure (MetaContext *context,
|
||||||
int *argc,
|
int *argc,
|
||||||
|
@ -219,6 +233,33 @@ meta_context_test_notify_ready (MetaContext *context)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MetaSessionManager *
|
||||||
|
meta_context_test_get_session_manager (MetaContext *context)
|
||||||
|
{
|
||||||
|
MetaContextTest *context_test = META_CONTEXT_TEST (context);
|
||||||
|
MetaContextTestPrivate *priv =
|
||||||
|
meta_context_test_get_instance_private (context_test);
|
||||||
|
|
||||||
|
if (!priv->session_manager)
|
||||||
|
{
|
||||||
|
g_autoptr (GError) error = NULL;
|
||||||
|
g_autofree char *template = NULL;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
template = g_build_filename (g_get_tmp_dir (),
|
||||||
|
"session.gvdb.XXXXXX",
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
fd = g_mkstemp (template);
|
||||||
|
unlink (template);
|
||||||
|
priv->session_manager =
|
||||||
|
meta_session_manager_new_for_fd (NULL, fd, &error);
|
||||||
|
g_assert_no_error (error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return priv->session_manager;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_X11
|
#ifdef HAVE_X11
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_context_test_is_x11_sync (MetaContext *context)
|
meta_context_test_is_x11_sync (MetaContext *context)
|
||||||
|
@ -343,8 +384,11 @@ meta_create_test_context (MetaContextTestType type,
|
||||||
static void
|
static void
|
||||||
meta_context_test_class_init (MetaContextTestClass *klass)
|
meta_context_test_class_init (MetaContextTestClass *klass)
|
||||||
{
|
{
|
||||||
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
MetaContextClass *context_class = META_CONTEXT_CLASS (klass);
|
MetaContextClass *context_class = META_CONTEXT_CLASS (klass);
|
||||||
|
|
||||||
|
object_class->finalize = meta_context_test_finalize;
|
||||||
|
|
||||||
context_class->configure = meta_context_test_configure;
|
context_class->configure = meta_context_test_configure;
|
||||||
context_class->get_compositor_type = meta_context_test_get_compositor_type;
|
context_class->get_compositor_type = meta_context_test_get_compositor_type;
|
||||||
context_class->get_x11_display_policy =
|
context_class->get_x11_display_policy =
|
||||||
|
@ -356,6 +400,7 @@ meta_context_test_class_init (MetaContextTestClass *klass)
|
||||||
#ifdef HAVE_X11
|
#ifdef HAVE_X11
|
||||||
context_class->is_x11_sync = meta_context_test_is_x11_sync;
|
context_class->is_x11_sync = meta_context_test_is_x11_sync;
|
||||||
#endif
|
#endif
|
||||||
|
context_class->get_session_manager = meta_context_test_get_session_manager;
|
||||||
|
|
||||||
signals[BEFORE_TESTS] =
|
signals[BEFORE_TESTS] =
|
||||||
g_signal_new ("before-tests",
|
g_signal_new ("before-tests",
|
||||||
|
|
Loading…
Reference in a new issue