tests/monitor-unit-tests: Set initial state during backend construction

This way we can construct CRTCs and Outputs and associated them with the
fake GPUs at construction.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1287
This commit is contained in:
Jonas Ådahl 2020-02-25 10:18:22 +01:00 committed by Georges Basile Stavracas Neto
parent 569a183828
commit 2724f36527
7 changed files with 45 additions and 25 deletions

View File

@ -184,10 +184,7 @@ create_headless_test_setup (void)
static void static void
init_tests (int argc, char **argv) init_tests (int argc, char **argv)
{ {
MetaMonitorTestSetup *initial_test_setup; meta_monitor_manager_test_init_test_setup (create_headless_test_setup);
initial_test_setup = create_headless_test_setup ();
meta_monitor_manager_test_init_test_setup (initial_test_setup);
g_test_add_func ("/headless-start/start", meta_test_headless_start); g_test_add_func ("/headless-start/start", meta_test_headless_start);
g_test_add_func ("/headless-start/monitor-getters", g_test_add_func ("/headless-start/monitor-getters",

View File

@ -42,12 +42,12 @@ struct _MetaMonitorManagerTest
G_DEFINE_TYPE (MetaMonitorManagerTest, meta_monitor_manager_test, G_DEFINE_TYPE (MetaMonitorManagerTest, meta_monitor_manager_test,
META_TYPE_MONITOR_MANAGER) META_TYPE_MONITOR_MANAGER)
static MetaMonitorTestSetup *_initial_test_setup = NULL; static CreateTestSetupFunc initial_setup_func;
void void
meta_monitor_manager_test_init_test_setup (MetaMonitorTestSetup *test_setup) meta_monitor_manager_test_init_test_setup (CreateTestSetupFunc func)
{ {
_initial_test_setup = test_setup; initial_setup_func = func;
} }
void void
@ -409,16 +409,24 @@ meta_monitor_manager_test_dispose (GObject *object)
MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (object); MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (object);
g_clear_pointer (&manager_test->test_setup, g_free); g_clear_pointer (&manager_test->test_setup, g_free);
G_OBJECT_CLASS (meta_monitor_manager_test_parent_class)->dispose (object);
}
static void
meta_monitor_manager_test_constructed (GObject *object)
{
MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (object);
manager_test->test_setup = initial_setup_func ();
G_OBJECT_CLASS (meta_monitor_manager_test_parent_class)->constructed (object);
} }
static void static void
meta_monitor_manager_test_init (MetaMonitorManagerTest *manager_test) meta_monitor_manager_test_init (MetaMonitorManagerTest *manager_test)
{ {
g_assert (_initial_test_setup);
manager_test->handles_transforms = TRUE; manager_test->handles_transforms = TRUE;
manager_test->test_setup = _initial_test_setup;
} }
static void static void
@ -428,6 +436,7 @@ meta_monitor_manager_test_class_init (MetaMonitorManagerTestClass *klass)
MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_CLASS (klass); MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_CLASS (klass);
object_class->dispose = meta_monitor_manager_test_dispose; object_class->dispose = meta_monitor_manager_test_dispose;
object_class->constructed = meta_monitor_manager_test_constructed;
manager_class->ensure_initial_config = meta_monitor_manager_test_ensure_initial_config; manager_class->ensure_initial_config = meta_monitor_manager_test_ensure_initial_config;
manager_class->apply_monitors_config = meta_monitor_manager_test_apply_monitors_config; manager_class->apply_monitors_config = meta_monitor_manager_test_apply_monitors_config;

View File

@ -34,11 +34,13 @@ typedef struct _MetaOutputTest
float scale; float scale;
} MetaOutputTest; } MetaOutputTest;
typedef MetaMonitorTestSetup * (* CreateTestSetupFunc) (void);
#define META_TYPE_MONITOR_MANAGER_TEST (meta_monitor_manager_test_get_type ()) #define META_TYPE_MONITOR_MANAGER_TEST (meta_monitor_manager_test_get_type ())
G_DECLARE_FINAL_TYPE (MetaMonitorManagerTest, meta_monitor_manager_test, G_DECLARE_FINAL_TYPE (MetaMonitorManagerTest, meta_monitor_manager_test,
META, MONITOR_MANAGER_TEST, MetaMonitorManager) META, MONITOR_MANAGER_TEST, MetaMonitorManager)
void meta_monitor_manager_test_init_test_setup (MetaMonitorTestSetup *test_setup); void meta_monitor_manager_test_init_test_setup (CreateTestSetupFunc func);
void meta_monitor_manager_test_read_current (MetaMonitorManager *manager); void meta_monitor_manager_test_read_current (MetaMonitorManager *manager);

View File

@ -185,11 +185,11 @@ typedef struct _MonitorTestCaseExpect
int screen_height; int screen_height;
} MonitorTestCaseExpect; } MonitorTestCaseExpect;
typedef struct _MonitorTestCase struct _MonitorTestCase
{ {
MonitorTestCaseSetup setup; MonitorTestCaseSetup setup;
MonitorTestCaseExpect expect; MonitorTestCaseExpect expect;
} MonitorTestCase; };
void set_custom_monitor_config (const char *filename); void set_custom_monitor_config (const char *filename);

View File

@ -5614,14 +5614,17 @@ add_monitor_test (const char *test_path,
NULL); NULL);
} }
static MetaMonitorTestSetup *
create_initial_test_setup (void)
{
return create_monitor_test_setup (&initial_test_case.setup,
MONITOR_TEST_FLAG_NO_STORED);
}
void void
init_monitor_tests (void) init_monitor_tests (void)
{ {
MetaMonitorTestSetup *initial_test_setup; meta_monitor_manager_test_init_test_setup (create_initial_test_setup);
initial_test_setup = create_monitor_test_setup (&initial_test_case.setup,
MONITOR_TEST_FLAG_NO_STORED);
meta_monitor_manager_test_init_test_setup (initial_test_setup);
add_monitor_test ("/backends/monitor/initial-linear-config", add_monitor_test ("/backends/monitor/initial-linear-config",
meta_test_monitor_initial_linear_config); meta_test_monitor_initial_linear_config);

View File

@ -20,10 +20,17 @@
#ifndef MONITOR_UNIT_TESTS_H #ifndef MONITOR_UNIT_TESTS_H
#define MONITOR_UNIT_TESTS_H #define MONITOR_UNIT_TESTS_H
#include "core/util-private.h"
#include "tests/monitor-test-utils.h"
typedef struct _MonitorTestCase MonitorTestCase;
void init_monitor_tests (void); void init_monitor_tests (void);
void pre_run_monitor_tests (void); void pre_run_monitor_tests (void);
void finish_monitor_tests (void); void finish_monitor_tests (void);
MonitorTestCase * test_get_initial_monitor_test_case (void);
#endif /* MONITOR_UNIT_TESTS_H */ #endif /* MONITOR_UNIT_TESTS_H */

View File

@ -462,15 +462,17 @@ meta_test_actor_stage_views_hide_parent (void)
clutter_actor_destroy (outer_container); clutter_actor_destroy (outer_container);
} }
static MetaMonitorTestSetup *
create_stage_view_test_setup (void)
{
return create_monitor_test_setup (&initial_test_case_setup,
MONITOR_TEST_FLAG_NO_STORED);
}
static void static void
init_tests (int argc, char **argv) init_tests (int argc, char **argv)
{ {
MetaMonitorTestSetup *test_setup; meta_monitor_manager_test_init_test_setup (create_stage_view_test_setup);
test_setup = create_monitor_test_setup (&initial_test_case_setup,
MONITOR_TEST_FLAG_NO_STORED);
meta_monitor_manager_test_init_test_setup (test_setup);
g_test_add_func ("/stage-view/stage-views-exist", g_test_add_func ("/stage-view/stage-views-exist",
meta_test_stage_views_exist); meta_test_stage_views_exist);