[gnome-builder/wip/gtk4-port] tests: test environment API



commit c3a66895687a5f7a8e68d0aec49031934ebaa643
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jun 17 01:33:18 2022 -0700

    tests: test environment API

 src/tests/test-run-context.c | 75 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)
---
diff --git a/src/tests/test-run-context.c b/src/tests/test-run-context.c
index d0d6b3d39..ae2f6ba66 100644
--- a/src/tests/test-run-context.c
+++ b/src/tests/test-run-context.c
@@ -24,6 +24,80 @@
 
 #include <libide-foundry.h>
 
+static int
+sort_strv_strcmpptr (gconstpointer a,
+                     gconstpointer b,
+                     gpointer      user_data)
+{
+  const char *stra = *(const char **)a;
+  const char *strb = *(const char **)b;
+
+  return g_strcmp0 (stra, strb);
+}
+
+static char **
+sort_strv (const char * const *strv)
+{
+  char **copy = g_strdupv ((char **)strv);
+  gsize n_elements = g_strv_length (copy);
+  g_qsort_with_data (copy, n_elements, sizeof (char *), sort_strv_strcmpptr, NULL);
+  return copy;
+}
+
+static void
+compare_strv_unordered (const gchar * const *strv,
+                        const gchar * const *expected_strv)
+{
+  char **strv_sorted;
+  char **expected_strv_sorted;
+
+  if (expected_strv == NULL)
+    {
+      g_assert_true (strv == NULL || strv[0] == NULL);
+      return;
+    }
+
+  g_assert_nonnull (strv);
+
+  g_assert_cmpint (g_strv_length ((char **)strv), ==, g_strv_length ((char **)expected_strv));
+
+  strv_sorted = sort_strv (strv);
+  expected_strv_sorted = sort_strv (strv);
+
+  for (guint i = 0; strv_sorted[i]; i++)
+    g_assert_cmpstr (strv_sorted[i], ==, expected_strv_sorted[i]);
+
+  g_strfreev (strv_sorted);
+  g_strfreev (expected_strv_sorted);
+}
+
+static void
+test_run_context_environ (void)
+{
+  IdeRunContext *run_context;
+
+  run_context = ide_run_context_new ();
+
+  ide_run_context_setenv (run_context, "FOO", "BAR");
+  compare_strv_unordered (ide_run_context_get_environ (run_context),
+                          IDE_STRV_INIT ("FOO=BAR"));
+  g_assert_cmpstr (ide_run_context_getenv (run_context, "FOO"), ==, "BAR");
+
+  ide_run_context_setenv (run_context, "FOO", "123");
+  compare_strv_unordered (ide_run_context_get_environ (run_context),
+                          IDE_STRV_INIT ("FOO=123"));
+
+  ide_run_context_setenv (run_context, "ABC", "DEF");
+  compare_strv_unordered (ide_run_context_get_environ (run_context),
+                          IDE_STRV_INIT ("FOO=123", "ABC=DEF"));
+
+  ide_run_context_unsetenv (run_context, "FOO");
+  compare_strv_unordered (ide_run_context_get_environ (run_context),
+                          IDE_STRV_INIT ("ABC=DEF"));
+
+  g_assert_finalize_object (run_context);
+}
+
 static void
 test_run_context_default_handler (void)
 {
@@ -61,6 +135,7 @@ main (int   argc,
       char *argv[])
 {
   g_test_init (&argc, &argv, NULL);
+  g_test_add_func ("/Ide/Foundry/RunContext/environ", test_run_context_environ);
   g_test_add_func ("/Ide/Foundry/RunContext/default_handler", test_run_context_default_handler);
   return g_test_run ();
 }


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