e6fb1fb433
Previously the unit tests were using libdl without directly linking to it. It looks like this ends up working because one of Cogl's dependencies ends up pulling adding -ldl via libtool. However in some configurations it looks like this wasn't happening. To avoid this problem we can just use GModule to resolve the symbols. g_module_open is documented to return a handle to the ‘main program’ when NULL is passed as the filename and looking at the code it seems that this ends up using RTLD_DEFAULT so it will have the same effect. The in-tree copy of glib already has the code for gmodule so this shouldn't cause problems for --disable-glib. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit b14ece116ed3e4b18d59b645e77b3449fac51137)
45 lines
966 B
C
45 lines
966 B
C
#include <config.h>
|
|
|
|
#include <gmodule.h>
|
|
|
|
#include <test-fixtures/test-unit.h>
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
GModule *main_module;
|
|
const CoglUnitTest *unit_test;
|
|
int i;
|
|
|
|
if (argc != 2)
|
|
{
|
|
g_printerr ("usage %s UNIT_TEST\n", argv[0]);
|
|
exit (1);
|
|
}
|
|
|
|
/* Just for convenience in case people try passing the wrapper
|
|
* filenames for the UNIT_TEST argument we normalize '-' characters
|
|
* to '_' characters... */
|
|
for (i = 0; argv[1][i]; i++)
|
|
{
|
|
if (argv[1][i] == '-')
|
|
argv[1][i] = '_';
|
|
}
|
|
|
|
main_module = g_module_open (NULL, /* use main module */
|
|
0 /* flags */);
|
|
|
|
if (!g_module_symbol (main_module, argv[1], (void **) &unit_test))
|
|
{
|
|
g_printerr ("Unknown test name \"%s\"\n", argv[1]);
|
|
return 1;
|
|
}
|
|
|
|
test_utils_init (unit_test->requirement_flags,
|
|
unit_test->known_failure_flags);
|
|
unit_test->run ();
|
|
test_utils_fini ();
|
|
|
|
return 0;
|
|
}
|