dbus/test .cvsignore, 1.4, 1.5 Makefile.am, 1.35, 1.36 shell-test.c,
NONE, 1.1 test-shell-service.c, NONE, 1.1
John Palmieri
johnp at freedesktop.org
Fri Jul 15 06:44:17 EST 2005
- Previous message: dbus/test/data/valid-service-files .cvsignore, 1.2,
1.3 debug-shell-echo-fail.service.in, NONE,
1.1 debug-shell-echo-success.service.in, NONE, 1.1
- Next message: dbus/dbus Makefile.am, 1.70, 1.71 dbus-shell.c, NONE,
1.1 dbus-shell.h, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvs/dbus/dbus/test
In directory gabe:/tmp/cvs-serv24314/test
Modified Files:
.cvsignore Makefile.am
Added Files:
shell-test.c test-shell-service.c
Log Message:
Checking in Rodrigo's patch along with my fixes to the patch
2005-07-14 John (J5) Palmieri <johnp at redhat.com>
* bus/activation.c: clean up all tabs to be 8 spaces
(bus_activation_activate_service): make sure we clean up
if activation fails
* bus/dispatch.c: clean up all tabs to be 8 spaces
(check_shell_fail_service_auto_start): New function
tests to make sure we get fail properly when trying to auto start a service
with a faulty command line
(check_shell_service_success_auto_start): New function tests to make sure
auto started services get the arguments on the command line
* test/test-shell-service.c: Added service for testing auto-starting with
command line arguments
* test/data/valid-service-files/debug-shell-echo-fail.service.in,
test/data/valid-service-files/debug-shell-echo-success.service.in:
Added service files for testing auto-starting with command line arguments
* */.cvsignore: added a bunch of generated files to various .cvsignore files
2005-07-14 Rodrigo Moya <rodrigo at novell.com>
* dbus/dbus-shell.[ch]: copy/pasted code from GLib.
* dbus/Makefile.am: added new files to build.
* bus/activation.c (bus_activation_activate_service): support
activation commands with parameters.
* test/shell-test.c: added test program for the shell parsing
code.
Index: .cvsignore
===================================================================
RCS file: /cvs/dbus/dbus/test/.cvsignore,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- .cvsignore 10 Apr 2003 12:09:00 -0000 1.4
+++ .cvsignore 14 Jul 2005 20:44:15 -0000 1.5
@@ -20,3 +20,5 @@
test-service
test-sleep-forever
decode-gcov
+shell-test
+test-shell-service
Index: Makefile.am
===================================================================
RCS file: /cvs/dbus/dbus/test/Makefile.am,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- Makefile.am 15 Jan 2005 07:15:38 -0000 1.35
+++ Makefile.am 14 Jul 2005 20:44:15 -0000 1.36
@@ -11,9 +11,13 @@
if DBUS_BUILD_TESTS
## break-loader removed for now
-TEST_BINARIES=test-service spawn-test test-segfault test-exit test-sleep-forever
+TEST_BINARIES=test-service test-shell-service shell-test spawn-test test-segfault test-exit test-sleep-forever
+
+#enable stand alone make check test
+TESTS=shell-test
else
TEST_BINARIES=
+TESTS=
endif
if DBUS_GCOV_ENABLED
@@ -32,6 +36,14 @@
##break_loader_SOURCES= \
## break-loader.c
+test_shell_service_SOURCES = \
+ test-shell-service.c \
+ test-utils.c \
+ test-utils.h
+
+shell_test_SOURCES= \
+ shell-test.c
+
spawn_test_SOURCES= \
spawn-test.c
@@ -51,6 +63,8 @@
test_service_LDADD=$(TEST_LIBS)
## break_loader_LDADD= $(TEST_LIBS)
+test_shell_service_LDADD=$(TEST_LIBS)
+shell_test_LDADD=$(TEST_LIBS)
spawn_test_LDADD=$(TEST_LIBS)
decode_gcov_LDADD=$(TEST_LIBS)
--- NEW FILE: shell-test.c ---
#include <stdio.h>
#include <stdlib.h>
#define DBUS_COMPILATION
#include <dbus/dbus-internals.h>
#include <dbus/dbus-list.h>
#include <dbus/dbus-memory.h>
#include <dbus/dbus-shell.h>
#include <dbus/dbus-string.h>
static dbus_bool_t
test_command_line (const char *arg1, ...)
{
int i, original_argc, shell_argc;
char **shell_argv;
char **original_argv;
char *command_line, *tmp;
DBusString str;
DBusList *list = NULL, *node;
va_list var_args;
DBusError error;
va_start (var_args, arg1);
_dbus_list_append (&list, arg1);
do
{
tmp = va_arg (var_args, char *);
if (!tmp)
break;
_dbus_list_append (&list, tmp);
} while (tmp);
va_end (var_args);
original_argc = _dbus_list_get_length (&list);
original_argv = dbus_new (char *, original_argc);
_dbus_string_init (&str);
for (i = 0, node = _dbus_list_get_first_link (&list); i < original_argc && node;
i++, node = _dbus_list_get_next_link (&list, node))
{
original_argv[i] = node->data;
if (i > 0)
_dbus_string_append_byte (&str, ' ');
_dbus_string_append (&str, original_argv[i]);
}
_dbus_list_clear (&list);
command_line = _dbus_string_get_data (&str);
printf ("\n\nTesting command line '%s'\n", command_line);
dbus_error_init (&error);
if (!_dbus_shell_parse_argv (command_line, &shell_argc, &shell_argv, &error))
{
fprintf (stderr, "Error parsing command line: %s\n", error.message ? error.message : "");
return FALSE;
}
else
{
if (shell_argc != original_argc)
{
printf ("Number of arguments returned (%d) don't match original (%d)\n",
shell_argc, original_argc);
return FALSE;
}
printf ("Number of arguments: %d\n", shell_argc);
for (i = 0; i < shell_argc; i++)
{
char *unquoted;
unquoted = _dbus_shell_unquote (original_argv[i]);
if (strcmp (unquoted ? unquoted : "",
shell_argv[i] ? shell_argv[i] : ""))
{
printf ("Position %d, returned argument (%s) does not match original (%s)\n",
i, shell_argv[i], unquoted);
dbus_free (unquoted);
return FALSE;
}
dbus_free (unquoted);
if (shell_argv[i])
printf ("Argument %d = %s\n", i, shell_argv[i]);
}
dbus_free_string_array (shell_argv);
}
_dbus_string_free (&str);
return TRUE;
}
int
main (int argc, char **argv)
{
if (!test_command_line ("command", "-s", "--force-shutdown", "\"a string\"", "123", NULL)
|| !test_command_line ("command", "-s", NULL)
|| !test_command_line ("/opt/gnome/bin/service-start", NULL)
|| !test_command_line ("grep", "-l", "-r", "-i", "'whatever'", "files*.c", NULL)
|| !test_command_line ("/home/boston/johnp/devel-local/dbus/test/test-segfault", NULL)
|| !test_command_line ("ls", "-l", "-a", "--colors", "/tmp", NULL)
|| !test_command_line ("rsync-to-server", NULL)
|| !test_command_line ("test-segfault", "--no-segfault", NULL)
|| !test_command_line ("evolution", "mailto:pepe at cuco.com", NULL)
|| !test_command_line ("run", "\"a \n multiline\"", NULL)
|| test_command_line ("ls", "\"a wrong string'", NULL) /* invalid command line */ )
return -1;
return 0;
}
--- NEW FILE: test-shell-service.c ---
#include "test-utils.h"
static DBusLoop *loop;
static dbus_bool_t already_quit = FALSE;
static const char* echo_path = "/org/freedesktop/TestSuite";
typedef struct
{
int argc;
char **argv;
} EchoData;
static void
quit (void)
{
if (!already_quit)
{
_dbus_loop_quit (loop);
already_quit = TRUE;
}
}
static void
die (const char *message)
{
fprintf (stderr, "*** test-service: %s", message);
exit (1);
}
static DBusHandlerResult
handle_echo (DBusConnection *connection,
DBusMessage *message)
{
DBusError error;
DBusMessage *reply;
DBusMessageIter iter;
int i;
char *s;
EchoData *d;
_dbus_verbose ("sending reply to Echo method\n");
if (!dbus_connection_get_object_path_data (connection, echo_path, &d))
die ("No memory");
dbus_error_init (&error);
reply = dbus_message_new_method_return (message);
if (reply == NULL)
die ("No memory\n");
dbus_message_iter_init_append (reply, &iter);
for (i = 0; i < d->argc; ++i)
if (!dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &(d->argv[i])))
die ("No memory\n");
if (!dbus_connection_send (connection, reply, NULL))
die ("No memory\n");
fprintf (stderr, "Shell echo service echoed the command line\n");
dbus_message_unref (reply);
return DBUS_HANDLER_RESULT_HANDLED;
}
static void
path_unregistered_func (DBusConnection *connection,
void *user_data)
{
/* connection was finalized */
}
static DBusHandlerResult
path_message_func (DBusConnection *connection,
DBusMessage *message,
void *user_data)
{
if (dbus_message_is_method_call (message,
"org.freedesktop.TestSuite",
"Echo"))
return handle_echo (connection, message);
else if (dbus_message_is_method_call (message,
"org.freedesktop.TestSuite",
"Exit"))
{
dbus_connection_close (connection);
quit ();
return DBUS_HANDLER_RESULT_HANDLED;
}
else
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
static DBusObjectPathVTable
echo_vtable = {
path_unregistered_func,
path_message_func,
NULL,
};
static DBusHandlerResult
filter_func (DBusConnection *connection,
DBusMessage *message,
void *user_data)
{
if (dbus_message_is_signal (message,
DBUS_INTERFACE_LOCAL,
"Disconnected"))
{
dbus_connection_close (connection);
quit ();
return DBUS_HANDLER_RESULT_HANDLED;
}
else
{
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
}
int
main (int argc,
char **argv)
{
DBusConnection *connection;
DBusError error;
EchoData echo_data;
int result;
echo_data.argc = argc;
echo_data.argv = argv;
dbus_error_init (&error);
connection = dbus_bus_get (DBUS_BUS_STARTER, &error);
if (connection == NULL)
{
fprintf (stderr, "*** Failed to open connection to activating message bus: %s\n",
error.message);
dbus_error_free (&error);
return 1;
}
loop = _dbus_loop_new ();
if (loop == NULL)
die ("No memory\n");
if (!test_connection_setup (loop, connection))
die ("No memory\n");
if (!dbus_connection_add_filter (connection,
filter_func, NULL, NULL))
die ("No memory");
if (!dbus_connection_register_object_path (connection,
echo_path,
&echo_vtable,
(void*) &echo_data))
die ("No memory");
{
void *d;
if (!dbus_connection_get_object_path_data (connection, echo_path, &d))
die ("No memory");
if (d != (void*) &echo_data)
die ("dbus_connection_get_object_path_data() doesn't seem to work right\n");
}
result = dbus_bus_request_name (connection, "org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess",
0, &error);
if (dbus_error_is_set (&error))
{
fprintf (stderr, "Error %s\n", error.message);
_dbus_verbose ("*** Failed to acquire service: %s\n",
error.message);
dbus_error_free (&error);
exit (1);
}
_dbus_verbose ("*** Test service entering main loop\n");
_dbus_loop_run (loop);
test_connection_shutdown (loop, connection);
dbus_connection_remove_filter (connection, filter_func, NULL);
dbus_connection_unref (connection);
_dbus_loop_unref (loop);
loop = NULL;
dbus_shutdown ();
_dbus_verbose ("*** Test service exiting\n");
return 0;
}
- Previous message: dbus/test/data/valid-service-files .cvsignore, 1.2,
1.3 debug-shell-echo-fail.service.in, NONE,
1.1 debug-shell-echo-success.service.in, NONE, 1.1
- Next message: dbus/dbus Makefile.am, 1.70, 1.71 dbus-shell.c, NONE,
1.1 dbus-shell.h, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dbus-commit
mailing list