[gnome-builder] libide/foundry: add signal for begin/end run-all



commit 8a42aa83561086763fced233c7e8fe18637b93ae
Author: Christian Hergert <chergert redhat com>
Date:   Tue Jul 19 15:28:59 2022 -0700

    libide/foundry: add signal for begin/end run-all
    
    This is useful for testui to be able to insert messages into the output
    terminal about running tests.

 src/libide/foundry/ide-test-manager.c | 39 +++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
---
diff --git a/src/libide/foundry/ide-test-manager.c b/src/libide/foundry/ide-test-manager.c
index a9501c27b..bcc11a91f 100644
--- a/src/libide/foundry/ide-test-manager.c
+++ b/src/libide/foundry/ide-test-manager.c
@@ -91,7 +91,14 @@ enum {
   N_PROPS
 };
 
+enum {
+  BEGIN_TEST_ALL,
+  END_TEST_ALL,
+  N_SIGNALS
+};
+
 static GParamSpec *properties[N_PROPS];
+static guint signals [N_SIGNALS];
 
 static gboolean
 filter_tests_func (gpointer item,
@@ -238,6 +245,24 @@ ide_test_manager_class_init (IdeTestManagerClass *klass)
                          G_TYPE_LIST_MODEL,
                          (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
+  signals [BEGIN_TEST_ALL] =
+    g_signal_new ("begin-test-all",
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_LAST,
+                  0,
+                  NULL, NULL,
+                  NULL,
+                  G_TYPE_NONE, 0);
+
+  signals [END_TEST_ALL] =
+    g_signal_new ("end-test-all",
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_LAST,
+                  0,
+                  NULL, NULL,
+                  NULL,
+                  G_TYPE_NONE, 0);
+
   g_object_class_install_properties (object_class, N_PROPS, properties);
 }
 
@@ -315,6 +340,12 @@ ide_test_manager_run_all_cb (GObject      *object,
   IDE_EXIT;
 }
 
+static void
+ide_test_manager_emit_end_test_all (IdeTestManager *self)
+{
+  g_signal_emit (self, signals [END_TEST_ALL], 0);
+}
+
 /**
  * ide_test_manager_run_all_async:
  * @self: An #IdeTestManager
@@ -353,6 +384,12 @@ ide_test_manager_run_all_async (IdeTestManager      *self,
   task = ide_task_new (self, cancellable, callback, user_data);
   ide_task_set_source_tag (task, ide_test_manager_run_all_async);
 
+  g_signal_connect_object (task,
+                           "notify::completed",
+                           G_CALLBACK (ide_test_manager_emit_end_test_all),
+                           self,
+                           G_CONNECT_SWAPPED);
+
   context = ide_object_get_context (IDE_OBJECT (self));
   build_manager = ide_build_manager_from_context (context);
   pipeline = ide_build_manager_get_pipeline (build_manager);
@@ -395,6 +432,8 @@ ide_test_manager_run_all_async (IdeTestManager      *self,
   if (state->n_active == 0)
     ide_task_return_boolean (task, TRUE);
 
+  g_signal_emit (self, signals[BEGIN_TEST_ALL], 0);
+
   IDE_EXIT;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]