Home | History | Annotate | Download | only in bus
      1 /* -*- mode: C; c-file-style: "gnu" -*- */
      2 /* test-main.c  main() for make check
      3  *
      4  * Copyright (C) 2003 Red Hat, Inc.
      5  *
      6  * Licensed under the Academic Free License version 2.1
      7  *
      8  * This program is free software; you can redistribute it and/or modify
      9  * it under the terms of the GNU General Public License as published by
     10  * the Free Software Foundation; either version 2 of the License, or
     11  * (at your option) any later version.
     12  *
     13  * This program is distributed in the hope that it will be useful,
     14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16  * GNU General Public License for more details.
     17  *
     18  * You should have received a copy of the GNU General Public License
     19  * along with this program; if not, write to the Free Software
     20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     21  *
     22  */
     23 
     24 #include <config.h>
     25 #include "test.h"
     26 #include <stdio.h>
     27 #include <stdlib.h>
     28 #include <dbus/dbus-string.h>
     29 #include <dbus/dbus-sysdeps.h>
     30 #include <dbus/dbus-internals.h>
     31 
     32 #ifdef DBUS_BUILD_TESTS
     33 static void
     34 die (const char *failure)
     35 {
     36   fprintf (stderr, "Unit test failed: %s\n", failure);
     37   exit (1);
     38 }
     39 
     40 static void
     41 check_memleaks (const char *name)
     42 {
     43   dbus_shutdown ();
     44 
     45   printf ("%s: checking for memleaks\n", name);
     46   if (_dbus_get_malloc_blocks_outstanding () != 0)
     47     {
     48       _dbus_warn ("%d dbus_malloc blocks were not freed\n",
     49                   _dbus_get_malloc_blocks_outstanding ());
     50       die ("memleaks");
     51     }
     52 }
     53 #endif /* DBUS_BUILD_TESTS */
     54 
     55 static void
     56 test_pre_hook (void)
     57 {
     58 }
     59 
     60 static char *progname = "";
     61 static void
     62 test_post_hook (void)
     63 {
     64   check_memleaks (progname);
     65 }
     66 
     67 int
     68 main (int argc, char **argv)
     69 {
     70 #ifdef DBUS_BUILD_TESTS
     71   const char *dir;
     72   DBusString test_data_dir;
     73 
     74   progname = argv[0];
     75 
     76   if (argc > 1)
     77     dir = argv[1];
     78   else
     79     dir = _dbus_getenv ("DBUS_TEST_DATA");
     80 
     81   if (dir == NULL)
     82     {
     83       fprintf (stderr, "Must specify test data directory as argv[1] or in DBUS_TEST_DATA env variable\n");
     84       return 1;
     85     }
     86 
     87   _dbus_string_init_const (&test_data_dir, dir);
     88 
     89   if (!_dbus_threads_init_debug ())
     90     die ("initializing debug threads");
     91 
     92   test_pre_hook ();
     93   printf ("%s: Running config file parser (trivial) test\n", argv[0]);
     94   if (!bus_config_parser_trivial_test (&test_data_dir))
     95     die ("parser");
     96   test_post_hook ();
     97 
     98   printf ("%s: Success\n", argv[0]);
     99 
    100   return 0;
    101 #else /* DBUS_BUILD_TESTS */
    102 
    103   printf ("Not compiled with test support\n");
    104 
    105   return 0;
    106 #endif
    107 }
    108