mutter/src/tests/monitor-test-utils.c
Jonas Ådahl 61950755ec tests: Add monitor config migration tests
So far some basic testing, including:

 * Test that the migrated configuration is applicable
 * Test that a monitors.xml with multiple configurations are translated
 * Test rotation
 * Test tiled monitor discovery (well, test a made up tiled monitor
   configuration since I don't have a real one)

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00

82 lines
2.8 KiB
C

/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2017 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "tests/monitor-test-utils.h"
#include "backends/meta-backend-private.h"
#include "backends/meta-monitor-config-manager.h"
#include "backends/meta-monitor-config-store.h"
void
set_custom_monitor_config (const char *filename)
{
MetaBackend *backend = meta_get_backend ();
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
MetaMonitorConfigManager *config_manager = monitor_manager->config_manager;
MetaMonitorConfigStore *config_store;
GError *error = NULL;
const char *path;
g_assert_nonnull (config_manager);
config_store = meta_monitor_config_manager_get_store (config_manager);
path = g_test_get_filename (G_TEST_DIST, "tests", "monitor-configs",
filename, NULL);
if (!meta_monitor_config_store_set_custom (config_store, path, NULL,
&error))
g_error ("Failed to set custom config: %s", error->message);
}
char *
read_file (const char *file_path)
{
g_autoptr (GFile) file = NULL;
g_autoptr (GFileInputStream) input_stream = NULL;
g_autoptr (GFileInfo) file_info = NULL;
goffset file_size;
gsize bytes_read;
g_autofree char *buffer = NULL;
GError *error = NULL;
file = g_file_new_for_path (file_path);
input_stream = g_file_read (file, NULL, &error);
if (!input_stream)
g_error ("Failed to read migrated config file: %s", error->message);
file_info = g_file_input_stream_query_info (input_stream,
G_FILE_ATTRIBUTE_STANDARD_SIZE,
NULL, &error);
if (!file_info)
g_error ("Failed to read file info: %s", error->message);
file_size = g_file_info_get_size (file_info);
buffer = g_malloc0 (file_size + 1);
if (!g_input_stream_read_all (G_INPUT_STREAM (input_stream),
buffer, file_size, &bytes_read, NULL, &error))
g_error ("Failed to read file content: %s", error->message);
g_assert_cmpint ((goffset) bytes_read, ==, file_size);
return g_steal_pointer (&buffer);
}