diff options
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | doc/TODO | 3 | ||||
| -rw-r--r-- | glib/Makefile.am | 30 | ||||
| -rw-r--r-- | glib/dbus-glib-tool.c (renamed from glib/dbus-compiler-main.c) | 37 | ||||
| -rw-r--r-- | glib/dbus-gmain.c | 19 | ||||
| -rw-r--r-- | glib/dbus-gparser.c | 121 | ||||
| -rw-r--r-- | glib/dbus-gparser.h | 59 | 
7 files changed, 264 insertions, 10 deletions
@@ -1,3 +1,8 @@ +2003-09-01  Havoc Pennington  <hp@pobox.com> + +	* glib/Makefile.am: rearrange a bunch of files and get "make +	check" framework set up +  2003-08-31  Havoc Pennington  <hp@pobox.com>  	* fix build with --disable-tests @@ -79,3 +79,6 @@   - the invalid messages in the test suite are all useless because      they are invalid for the wrong reasons due to protocol changes + + - Nuke the org.freedesktop.Broadcast service; instead,  +   just broadcast messages of type signal diff --git a/glib/Makefile.am b/glib/Makefile.am index 8cc09eb7..3d67db2f 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -11,18 +11,24 @@ dbusinclude_HEADERS=				\  libdbus_glib_1_la_SOURCES = 			\  	dbus-gmain.c				\  	dbus-gproxy.c				\ +	dbus-gtest.c				\ +	dbus-gtest.h				\  	dbus-gthread.c  libdbus_glib_1_la_LIBADD= $(DBUS_GLIB_LIBS) $(top_builddir)/dbus/libdbus-1.la -bin_PROGRAMS=dbus-glib-compiler +bin_PROGRAMS=dbus-glib-tool -dbus_glib_compiler_SOURCES =			\ +dbus_glib_tool_SOURCES =			\  	dbus-gidl.c				\  	dbus-gidl.h				\ -	dbus-compiler-main.c +	dbus-glib-tool.c			\ +	dbus-gparser.c				\ +	dbus-gparser.h				\ +	dbus-gtool-test.h -dbus_glib_compiler_LDADD= libdbus-glib-1.la $(DBUS_GLIB_LIBS) $(top_builddir)/dbus/libdbus-1.la + +dbus_glib_tool_LDADD= libdbus-glib-1.la $(DBUS_GLIB_LIBS) $(top_builddir)/dbus/libdbus-1.la  if DBUS_BUILD_TESTS @@ -42,15 +48,29 @@ test_thread_client_SOURCES=				\  test_thread_client_LDADD= $(DBUS_GLIB_THREADS_LIBS) $(top_builddir)/glib/libdbus-glib-1.la   endif -noinst_PROGRAMS= test-dbus-glib $(THREAD_APPS) +## we use noinst_PROGRAMS not check_PROGRAMS for TESTS so that we +## build even when not doing "make check" +noinst_PROGRAMS= $(TESTS) test-dbus-glib $(THREAD_APPS)  test_dbus_glib_SOURCES=				\  	test-dbus-glib.c  test_dbus_glib_LDADD= $(top_builddir)/glib/libdbus-glib-1.la +## note that TESTS has special meaning (stuff to use in make check) +## so if adding tests not to be run in make check, don't add them to  +## TESTS +TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus +TESTS=dbus-glib-test + +dbus_glib_test_SOURCES=				\ +	dbus-gtest-main.c + +dbus_glib_test_LDADD= $(top_builddir)/glib/libdbus-glib-1.la +  else  ### not building tests +TESTS=  if HAVE_GLIB_THREADS  noinst_PROGRAMS=test-profile diff --git a/glib/dbus-compiler-main.c b/glib/dbus-glib-tool.c index d8bf7bde..aaf133d4 100644 --- a/glib/dbus-compiler-main.c +++ b/glib/dbus-glib-tool.c @@ -22,24 +22,53 @@   */  #include "dbus-gidl.h" +#include <locale.h> + +#ifdef DBUS_BUILD_TESTS +static void run_all_tests (const char *test_data_dir); +#endif  int  main (int argc, char **argv)  { - +  setlocale(LC_ALL, "");    return 0;  }  #ifdef DBUS_BUILD_TESTS +static void +test_die (const char *failure) +{ +  fprintf (stderr, "Unit test failed: %s\n", failure); +  exit (1); +} + +static void +run_all_tests (const char *test_data_dir) +{ +  if (test_data_dir == NULL) +    test_data_dir = _dbus_getenv ("DBUS_TEST_DATA"); + +  if (test_data_dir != NULL) +    printf ("Test data in %s\n", test_data_dir); +  else +    printf ("No test data!\n"); + +  printf ("%s: running gtool tests\n", "dbus-glib-tool"); +  if (!_dbus_gtool_test (test_data_dir)) +    test_die ("gtool"); + +  printf ("%s: completed successfully\n", "dbus-glib-test"); +}  /** - * @ingroup DBusGCompiler - * Unit test for GLib stubs/skels compiler + * @ingroup DBusGTool + * Unit test for GLib utility tool   * @returns #TRUE on success.   */  dbus_bool_t -_dbus_gcompiler_test (void) +_dbus_gtool_test (const char *test_data_dir)  {    return TRUE; diff --git a/glib/dbus-gmain.c b/glib/dbus-gmain.c index 9b14049d..36c6c6b4 100644 --- a/glib/dbus-gmain.c +++ b/glib/dbus-gmain.c @@ -21,8 +21,9 @@   *   */ +#include <config.h>  #include "dbus-glib.h" -#include <glib.h> +#include "dbus-gtest.h"  /**   * @defgroup DBusGLib GLib bindings @@ -491,3 +492,19 @@ dbus_server_setup_with_g_main (DBusServer   *server,  }  /** @} */ /* end of public API */ + +#ifdef DBUS_BUILD_TESTS + +/** + * @ingroup DBusGLibInternals + * Unit test for GLib main loop integration + * @returns #TRUE on success. + */ +dbus_bool_t +_dbus_gmain_test (const char *test_data_dir) +{ +   +  return TRUE; +} + +#endif /* DBUS_BUILD_TESTS */ diff --git a/glib/dbus-gparser.c b/glib/dbus-gparser.c new file mode 100644 index 00000000..6fea4abc --- /dev/null +++ b/glib/dbus-gparser.c @@ -0,0 +1,121 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-gparser.c parse DBus description files + * + * Copyright (C) 2003  Red Hat, Inc. + * + * Licensed under the Academic Free License version 1.2 + *  + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA + * + */ +#include "dbus-gparser.h" +#include "dbus-gidl.h" + +struct Parser +{ +  int refcount; + +}; + +Parser* +parser_new (void) +{ +  Parser *parser; + +  parser = g_new0 (Parser, 1); + +  parser->refcount = 1; + +  return parser; +} + +void +parser_ref (Parser *parser) +{ +  parser->refcount += 1; +} + +void +parser_unref (Parser *parser) +{ +  parser->refcount -= 1; +  if (parser->refcount == 0) +    { +       + +      g_free (parser); +    } +} + +gboolean +parser_check_doctype (Parser      *parser, +                      const char  *doctype, +                      GError     **error) +{ +  g_return_val_if_fail (error == NULL || *error == NULL); +   +  if (strcmp (doctype, "dbus_description") != 0) +    { +      g_set_error (error, +                   G_MARKUP_ERROR_PARSE, +                   "D-BUS description file has the wrong document type %s, use dbus_description", +                   doctype); +      return FALSE; +    } +  else +    return TRUE; +} + +gboolean +parser_start_element (Parser      *parser, +                      const char  *element_name, +                      const char **attribute_names, +                      const char **attribute_values, +                      GError     **error) +{ +  g_return_val_if_fail (error == NULL || *error == NULL); + +  return TRUE; +} + +gboolean +parser_end_element (Parser      *parser, +                    const char  *element_name, +                    GError     **error) +{ +  g_return_val_if_fail (error == NULL || *error == NULL); + +  return TRUE; +} + +gboolean +parser_content (Parser      *parser, +                const char  *content, +                int          len, +                GError     **error) +{ +  g_return_val_if_fail (error == NULL || *error == NULL); + +  return TRUE; +} + +gboolean +parser_finished (Parser      *parser, +                 GError     **error) +{ +  g_return_val_if_fail (error == NULL || *error == NULL); + +  return TRUE; +} diff --git a/glib/dbus-gparser.h b/glib/dbus-gparser.h new file mode 100644 index 00000000..01339fbf --- /dev/null +++ b/glib/dbus-gparser.h @@ -0,0 +1,59 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* dbus-gparser.h parse DBus description files + * + * Copyright (C) 2003  Red Hat, Inc. + * + * Licensed under the Academic Free License version 1.2 + *  + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA + * + */ +#ifndef DBUS_GLIB_PARSER_H +#define DBUS_GLIB_PARSER_H + +#include <dbus/dbus.h> +#include <glib.h> + +G_BEGIN_DECLS + + +typedef struct Parser Parser; + +Parser*  parser_new           (void); +void     parser_ref           (Parser      *parser); +void     parser_unref         (Parser      *parser); +gboolean parser_check_doctype (Parser      *parser, +                               const char  *doctype, +                               GError     **error); +gboolean parser_start_element (Parser      *parser, +                               const char  *element_name, +                               const char **attribute_names, +                               const char **attribute_values, +                               GError     **error); +gboolean parser_end_element   (Parser      *parser, +                               const char  *element_name, +                               GError     **error); +gboolean parser_content       (Parser      *parser, +                               const char  *content, +                               int          len, +                               GError     **error); +gboolean parser_finished      (Parser      *parser, +                               GError     **error); + + + +G_END_DECLS + +#endif /* DBUS_GLIB_GPARSER_H */  | 
