2010-05-06 14:13:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* GLib testing framework examples and tests
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-10 08:07:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Copyright  ( C )  2008 - 2010  Red  Hat ,  Inc . 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-06 14:13:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  library  is  free  software ;  you  can  redistribute  it  and / or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  modify  it  under  the  terms  of  the  GNU  Lesser  General  Public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  License  as  published  by  the  Free  Software  Foundation ;  either 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  version  2  of  the  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  library  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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Lesser  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  Lesser  General 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Public  License  along  with  this  library ;  if  not ,  write  to  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Free  Software  Foundation ,  Inc . ,  59  Temple  Place ,  Suite  330 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Boston ,  MA  02111 - 1307 ,  USA . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Author :  David  Zeuthen  < davidz @ redhat . com > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <gio/gio.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <unistd.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "gdbus-tests.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* all tests rely on a shared mainloop */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  GMainLoop  * loop  =  NULL ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ---------------------------------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  gboolean  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								nuke_session_bus_cb  ( gpointer  data )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  g_main_loop_quit  ( loop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test_exit_on_close  ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( g_test_trap_fork  ( 0 ,  G_TEST_TRAP_SILENCE_STDOUT  |  G_TEST_TRAP_SILENCE_STDERR ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      GDBusConnection  * c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      session_bus_up  ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      c  =  g_bus_get_sync  ( G_BUS_TYPE_SESSION ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      g_assert  ( c  ! =  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      g_assert  ( ! g_dbus_connection_is_closed  ( c ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      g_timeout_add  ( 50 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     nuke_session_bus_cb , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      g_main_loop_run  ( loop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      session_bus_down  ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      g_main_loop_run  ( loop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-03 12:47:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  g_test_trap_assert_stdout  ( " *Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting.* " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-06 14:13:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  g_test_trap_assert_failed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ---------------------------------------------------------------------------------------------------- */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								main  ( int    argc ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      char  * argv [ ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  g_type_init  ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  g_test_init  ( & argc ,  & argv ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* all the tests rely on a shared main loop */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  loop  =  g_main_loop_new  ( NULL ,  FALSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* all the tests use a session bus with a well-known address that we can bring up and down
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  using  session_bus_up ( )  and  session_bus_down ( ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  g_unsetenv  ( " DISPLAY " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  g_setenv  ( " DBUS_SESSION_BUS_ADDRESS " ,  session_bus_get_temporary_address  ( ) ,  TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  g_test_add_func  ( " /gdbus/exit-on-close " ,  test_exit_on_close ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  g_test_run ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}