[gimp] app: Allow tests to override the menus directory



commit e87c77bcfc96adfc0bb1eebfe4f0b3acbce9cd67
Author: Martin Nordholts <martinn src gnome org>
Date:   Fri Jan 8 15:04:35 2010 +0100

    app: Allow tests to override the menus directory
    
    In order to let tests run against the source dir, allow them to
    override the menus directory. Add utility functions for this and
    adjust gimpuimanager.c accordingly.

 app/tests/gimp-app-test-utils.c     |   34 ++++++++++++++++++++++++++++++++++
 app/tests/gimp-app-test-utils.h     |    4 +++-
 app/tests/test-session-management.c |    1 +
 app/tests/test-ui.c                 |    1 +
 app/widgets/gimpuimanager.c         |   16 ++++++++++++----
 5 files changed, 51 insertions(+), 5 deletions(-)
---
diff --git a/app/tests/gimp-app-test-utils.c b/app/tests/gimp-app-test-utils.c
index 203f1ab..baae49b 100644
--- a/app/tests/gimp-app-test-utils.c
+++ b/app/tests/gimp-app-test-utils.c
@@ -43,3 +43,37 @@ gimp_test_utils_set_gimp2_directory (const gchar *subdir)
 
   g_free (gimpdir);
 }
+
+/**
+ * gimp_test_utils_setup_menus_dir:
+ *
+ * Sets GIMP_TESTING_MENUS_DIR to "$top_srcdir/menus".
+ **/
+void
+gimp_test_utils_setup_menus_dir (void)
+{
+  gchar *menus_dir = NULL;
+
+  menus_dir = gimp_test_utils_get_source_subdir ("menus");
+
+  g_setenv ("GIMP_TESTING_MENUS_DIR", menus_dir, TRUE);
+
+  g_free (menus_dir);
+}
+
+/**
+ * gimp_test_utils_get_source_subdir:
+ * @subdir:
+ *
+ * Returns: The source directory $top_srcdir/@subdir.
+ **/
+gchar *
+gimp_test_utils_get_source_subdir (const gchar *subdir)
+{
+  /* GIMP_TESTING_ABS_TOP_SRCDIR is set by the automake test runner,
+   * see Makefile.am
+   */
+  return g_build_filename (g_getenv ("GIMP_TESTING_ABS_TOP_SRCDIR"),
+                           subdir,
+                           NULL);
+}
diff --git a/app/tests/gimp-app-test-utils.h b/app/tests/gimp-app-test-utils.h
index 75a6b15..0fa33f9 100644
--- a/app/tests/gimp-app-test-utils.h
+++ b/app/tests/gimp-app-test-utils.h
@@ -19,7 +19,9 @@
 #define  __GIMP_RECTANGLE_SELECT_TOOL_H__
 
 
-void   gimp_test_utils_set_gimp2_directory (const gchar *subdir);
+void    gimp_test_utils_set_gimp2_directory (const gchar *subdir);
+void    gimp_test_utils_setup_menus_dir     (void);
+gchar * gimp_test_utils_get_source_subdir   (const gchar *subdir);
 
 
 #endif /* __GIMP_RECTANGLE_SELECT_TOOL_H__ */
\ No newline at end of file
diff --git a/app/tests/test-session-management.c b/app/tests/test-session-management.c
index 03fefc6..05e5ee9 100644
--- a/app/tests/test-session-management.c
+++ b/app/tests/test-session-management.c
@@ -74,6 +74,7 @@ int main(int argc, char **argv)
 
   /* Make sure to run this before we use any GIMP functions */
   gimp_test_utils_set_gimp2_directory ("gimpdir");
+  gimp_test_utils_setup_menus_dir ();
 
   sessionrc_filename = gimp_personal_rc_file ("sessionrc");
   dockrc_filename    = gimp_personal_rc_file ("dockrc");
diff --git a/app/tests/test-ui.c b/app/tests/test-ui.c
index 8737db2..d008214 100644
--- a/app/tests/test-ui.c
+++ b/app/tests/test-ui.c
@@ -62,6 +62,7 @@ int main(int argc, char **argv)
   g_test_init (&argc, &argv, NULL);
 
   gimp_test_utils_set_gimp2_directory ("gimpdir");
+  gimp_test_utils_setup_menus_dir ();
 
   /* Start up GIMP */
   gimp = gimp_init_for_gui_testing (FALSE, TRUE);
diff --git a/app/widgets/gimpuimanager.c b/app/widgets/gimpuimanager.c
index aca8e36..ecfda9e 100644
--- a/app/widgets/gimpuimanager.c
+++ b/app/widgets/gimpuimanager.c
@@ -694,10 +694,18 @@ gimp_ui_manager_entry_load (GimpUIManager         *manager,
                             GimpUIManagerUIEntry  *entry,
                             GError               **error)
 {
-  gchar *filename;
+  gchar       *filename           = NULL;
+  const gchar *menus_dir_override = g_getenv ("GIMP_TESTING_MENUS_DIR");
 
-  filename = g_build_filename (gimp_data_directory (), "menus",
-                               entry->basename, NULL);
+  /* In order for test cases to be able to run without GIMP being
+   * installed yet, allow them to override the menus directory to the
+   * menus dir in the source root
+   */
+  if (menus_dir_override)
+    filename = g_build_filename (menus_dir_override, entry->basename, NULL);
+  else
+    filename = g_build_filename (gimp_data_directory (), "menus",
+                                 entry->basename, NULL);
 
   if (manager->gimp->be_verbose)
     g_print ("loading menu '%s' for %s\n",



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