2008-11-07 14:32:28 -05:00
|
|
|
#include <glib.h>
|
|
|
|
#include <gmodule.h>
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
main (int argc, char **argv)
|
|
|
|
{
|
|
|
|
GModule *module;
|
|
|
|
char *unit_test;
|
|
|
|
char *main_symbol_name;
|
2008-11-10 07:28:42 -05:00
|
|
|
gpointer func;
|
2008-11-07 14:32:28 -05:00
|
|
|
int (*unit_test_main) (int argc, char **argv);
|
|
|
|
int ret;
|
|
|
|
|
|
|
|
if (argc != 2)
|
2008-11-10 07:28:42 -05:00
|
|
|
g_error ("Usage: %s unit_test", argv[0]);
|
2008-11-07 14:32:28 -05:00
|
|
|
|
|
|
|
module = g_module_open (NULL, 0);
|
|
|
|
if (!module)
|
|
|
|
g_error ("Failed to open self for symbol lookup");
|
|
|
|
|
|
|
|
unit_test = g_path_get_basename (argv[1]);
|
|
|
|
|
|
|
|
main_symbol_name = g_strdup_printf ("%s_main", unit_test);
|
|
|
|
main_symbol_name = g_strdelimit (main_symbol_name, "-", '_');
|
|
|
|
|
2008-11-10 07:28:42 -05:00
|
|
|
if (!g_module_symbol (module, main_symbol_name, &func))
|
2008-11-07 14:32:28 -05:00
|
|
|
g_error ("Failed to look up main symbol for the test: %s", unit_test);
|
|
|
|
|
2008-11-10 07:28:42 -05:00
|
|
|
unit_test_main = func;
|
2008-11-07 14:32:28 -05:00
|
|
|
ret = unit_test_main (argc - 1, argv + 1);
|
|
|
|
|
|
|
|
g_free (unit_test);
|
|
|
|
g_free (main_symbol_name);
|
|
|
|
g_module_close (module);
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|