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 "core/meta-session-state.h"
|
||||
#include "core/util-private.h"
|
||||
#include "meta/window.h"
|
||||
|
||||
#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,
|
||||
GError **error);
|
||||
|
||||
META_EXPORT_TEST
|
||||
MetaSessionManager * meta_session_manager_new_for_fd (const gchar *name,
|
||||
int fd,
|
||||
GError **error);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <gio/gio.h>
|
||||
#define G_SETTINGS_ENABLE_BACKEND
|
||||
#include <gio/gsettingsbackend.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "core/meta-context-private.h"
|
||||
#include "meta/meta-x11-display.h"
|
||||
|
@ -51,6 +52,7 @@ typedef struct _MetaContextTestPrivate
|
|||
{
|
||||
MetaContextTestType type;
|
||||
MetaContextTestFlag flags;
|
||||
MetaSessionManager *session_manager;
|
||||
} MetaContextTestPrivate;
|
||||
|
||||
struct _MetaContextTestClass
|
||||
|
@ -76,6 +78,18 @@ ensure_gsettings_memory_backend (void)
|
|||
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
|
||||
meta_context_test_configure (MetaContext *context,
|
||||
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
|
||||
static gboolean
|
||||
meta_context_test_is_x11_sync (MetaContext *context)
|
||||
|
@ -343,8 +384,11 @@ meta_create_test_context (MetaContextTestType type,
|
|||
static void
|
||||
meta_context_test_class_init (MetaContextTestClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_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->get_compositor_type = meta_context_test_get_compositor_type;
|
||||
context_class->get_x11_display_policy =
|
||||
|
@ -356,6 +400,7 @@ meta_context_test_class_init (MetaContextTestClass *klass)
|
|||
#ifdef HAVE_X11
|
||||
context_class->is_x11_sync = meta_context_test_is_x11_sync;
|
||||
#endif
|
||||
context_class->get_session_manager = meta_context_test_get_session_manager;
|
||||
|
||||
signals[BEFORE_TESTS] =
|
||||
g_signal_new ("before-tests",
|
||||
|
|
Loading…
Reference in a new issue