/* * Lasso library C unit tests * * Copyright (C) 2004-2007 Entr'ouvert * http://lasso.entrouvert.org * * Authors: See AUTHORS file in top-level directory. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ #include #include #include #include #include #include #include #include "../lasso/lasso.h" #include "../lasso/lasso_config.h" extern Suite* basic_suite(); extern Suite* login_suite(); extern Suite* login_saml2_suite(); extern Suite* random_suite(); extern Suite* metadata_suite(); extern Suite* assertion_query_suite(); extern Suite* non_regression_suite(); #ifdef LASSO_WSF_ENABLED extern Suite* idwsf2_suite(); #endif typedef Suite* (*SuiteFunction) (); SuiteFunction suites[] = { basic_suite, login_suite, login_saml2_suite, random_suite, metadata_suite, assertion_query_suite, non_regression_suite, #ifdef LASSO_WSF_ENABLED idwsf2_suite, #endif NULL }; void mute_logger(G_GNUC_UNUSED const gchar *domain, G_GNUC_UNUSED GLogLevelFlags log_level, G_GNUC_UNUSED const gchar *message, G_GNUC_UNUSED gpointer user_data) { } int dontfork = 0; int log_failed = 0; void set_mute_logger() { g_log_set_default_handler(mute_logger, NULL); if (log_failed) { log_failed = 0; fail("There were logs, there should not"); } } void fail_logger(const gchar *log_domain G_GNUC_UNUSED, GLogLevelFlags log_level, const gchar *message G_GNUC_UNUSED, G_GNUC_UNUSED gpointer user_data) { const char *level_name G_GNUC_UNUSED = NULL; if (strncmp(message, "libxmlsec", 9) == 0) { return; } switch (log_level) { case G_LOG_LEVEL_ERROR: level_name = "ERROR"; break; case G_LOG_LEVEL_CRITICAL: level_name = "CRITICAL"; break; case G_LOG_LEVEL_WARNING: level_name = "WARNING"; break; case G_LOG_LEVEL_INFO: level_name = "INFO"; break; case G_LOG_LEVEL_MESSAGE: level_name = "MESSAGE"; break; case G_LOG_LEVEL_DEBUG: level_name = "DEBUG"; break; default: g_assert_not_reached(); } if (! dontfork) { fail("No logging output expected: message «%s» was emitted for domain «%s» at the level «%s»", message, log_domain, level_name); } printf("No logging output expected: message «%s» was emitted for domain «%s» at the level «%s»", message, log_domain, level_name); log_failed = 1; G_BREAKPOINT(); } static xmlFreeFunc free_func; static xmlMallocFunc malloc_func; static xmlReallocFunc realloc_func; static xmlStrdupFunc strdup_func; void * my_malloc(size_t size) { void *ptr = malloc_func(size); if (! ptr) { fail("xmlMalloc failed"); } return ptr; } void * my_realloc(void *mem, size_t size) { void *ptr = realloc_func(mem, size); if (! ptr) { fail("xmlRealloc failed"); } return ptr; } void setup_xml_mem_allocation() { xmlMemGet(&free_func, &malloc_func, &realloc_func, &strdup_func); xmlMemSetup(free_func, my_malloc, my_realloc, strdup_func); } int main(int argc, char *argv[]) { int rc = 0; SRunner *sr; int i; int dont_fork = 0; setup_xml_mem_allocation(); for (i=1; i