aboutsummaryrefslogtreecommitdiffstats
path: root/tests/check.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/check.c')
-rw-r--r--tests/check.c61
1 files changed, 58 insertions, 3 deletions
diff --git a/tests/check.c b/tests/check.c
index 5cfb7dfd..42ff067f 100644
--- a/tests/check.c
+++ b/tests/check.c
@@ -3,9 +3,23 @@
#include <gmodule.h>
#include <check.h>
#include "bitlbee.h"
+#include "testsuite.h"
global_t global; /* Against global namespace pollution */
+gboolean g_io_channel_pair(GIOChannel **ch1, GIOChannel **ch2)
+{
+ int sock[2];
+ if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNIX, sock) < 0) {
+ perror("socketpair");
+ return FALSE;
+ }
+
+ *ch1 = g_io_channel_unix_new(sock[0]);
+ *ch2 = g_io_channel_unix_new(sock[1]);
+ return TRUE;
+}
+
double gettime()
{
struct timeval time[1];
@@ -20,12 +34,53 @@ Suite *util_suite(void);
/* From check_nick.c */
Suite *nick_suite(void);
-int main (void)
+/* From check_md5.c */
+Suite *md5_suite(void);
+
+/* From check_irc.c */
+Suite *irc_suite(void);
+
+int main (int argc, char **argv)
{
int nf;
- SRunner *sr = srunner_create(util_suite());
+ SRunner *sr;
+ GOptionContext *pc;
+ gboolean no_fork = FALSE;
+ gboolean verbose = FALSE;
+ GOptionEntry options[] = {
+ {"no-fork", 'n', 0, G_OPTION_ARG_NONE, &no_fork, "Don't fork" },
+ {"verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "Be verbose", NULL },
+ { NULL }
+ };
+ int i;
+
+ pc = g_option_context_new("");
+ g_option_context_add_main_entries(pc, options, NULL);
+
+ if(!g_option_context_parse(pc, &argc, &argv, NULL))
+ return 1;
+
+ g_option_context_free(pc);
+
+ log_init();
+
+ if (verbose) {
+ log_link( LOGLVL_ERROR, LOGOUTPUT_CONSOLE );
+ log_link( LOGLVL_DEBUG, LOGOUTPUT_CONSOLE );
+ log_link( LOGLVL_INFO, LOGOUTPUT_CONSOLE );
+ log_link( LOGLVL_WARNING, LOGOUTPUT_CONSOLE );
+ }
+
+ global.conf = conf_load( 0, NULL);
+ global.conf->runmode = RUNMODE_DAEMON;
+
+ sr = srunner_create(util_suite());
srunner_add_suite(sr, nick_suite());
- srunner_run_all (sr, CK_NORMAL);
+ srunner_add_suite(sr, md5_suite());
+ srunner_add_suite(sr, irc_suite());
+ if (no_fork)
+ srunner_set_fork_status(sr, CK_NOFORK);
+ srunner_run_all (sr, verbose?CK_VERBOSE:CK_NORMAL);
nf = srunner_ntests_failed(sr);
srunner_free(sr);
return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;