LCOV - code coverage report
Current view: top level - test - check_libdebug.c (source / functions) Hit Total Coverage
Test: mkernel.info Lines: 42 42 100.0 %
Date: 2024-07-31 19:18:37 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /**   \file  check_libdebug.c
       2             :  *   \brief  Check unit testing framework main function for libdebug
       3             :  *  \author  François Cerbelle (Fanfan), francois@cerbelle.net
       4             :  *
       5             :  *  \internal
       6             :  *       Created:  19/03/2022
       7             :  *      Revision:  none
       8             :  * Last modified:  2024-07-21 13:12
       9             :  *      Compiler:  gcc
      10             :  *  Organization:  Cerbelle.net
      11             :  *     Copyright:  Copyright (c) 2024, François Cerbelle
      12             :  *
      13             :  *  This source code is released for free distribution under the terms of the
      14             :  *  GNU General Public License as published by the Free Software Foundation.
      15             :  */
      16             : 
      17             : #ifdef HAVE_CONFIG_H
      18             : #include "config.h"
      19             : #endif
      20             : 
      21             : #include "oom.h"                                /* oomtest_setup */
      22             : #include <check.h>
      23             : #include <stdlib.h>                             /* EXIT_SUCCESS */
      24             : #include <stdio.h>                              /* printf */
      25             : #include <stdlib.h>                             /* abort() */
      26             : #include "debug/memory.h"                       /* memreport */
      27             : 
      28             : Suite* sample_suite();
      29             : Suite* libdebug_memtrack_suite();
      30             : Suite* libdebug_memdbg_suite();
      31             : Suite* libdebug_memory_suite();
      32             : Suite* libdebug_assert_suite();
      33             : 
      34        3909 : int main(int argc, char* argv[], char* env[])
      35             : {
      36             :     SRunner *sr;
      37             :     int number_failed;
      38             :     enum print_output ck_verbosity;
      39             : 
      40             :     (void) env; /* Avoids "unused" warning */
      41             : 
      42             :     /*
      43             :      * CK_SILENT
      44             :      * CK_MINIMAL
      45             :      * CK_NORMAL
      46             :      * CK_VERBOSE
      47             :      * CK_ENV
      48             :      */
      49        3909 :     ck_verbosity = CK_ENV;
      50        3909 :     printf("Verbosity: ");
      51        3909 :     if ((argc==2)&&(0==strcmp(argv[1],"-v"))) {
      52           2 :         printf("yes-CK_VERBOSE\n");
      53           2 :         ck_verbosity = CK_VERBOSE;
      54             :     } else
      55        3907 :         printf("default-CK_ENV (look for CK_VERBOSITY env)\n");
      56             : 
      57             :     /* Limit available RAM to really available RAM for all
      58             :      * suites/testcase/process/fork to test OOM without exhausting the system's
      59             :      * resources, hitting the swap or consumming too much time to fill the RAM
      60             :      * */
      61        3909 :     oomtest_config(RAMLIMIT_HARD);
      62             : 
      63             :     /* Empty suite, to initialize the framework with the specific
      64             :      * function and to display a CRLF in the output */
      65        3909 :     sr = srunner_create(suite_create(""));
      66             : 
      67             :     /*  CK_FORK
      68             :      *  CK_NOFORK
      69             :      *  CK_FORK_GETENV (default)
      70             :      */
      71        3909 :     printf ("Fork mode (with signal catch): ");
      72        3909 :     if ((getenv("CK_FORK")) && (strlen(getenv("CK_FORK"))>0)) {
      73           3 :         printf("%s if possible (CK_FORK defined)",getenv("CK_FORK"));
      74             :     } else {
      75        3906 :         printf("yes if possible (default)");
      76             :     }
      77        3909 :     printf("\n");
      78        3909 :     srunner_set_fork_status (sr, CK_FORK_GETENV);
      79             : 
      80             :     /* Print what will be run, in case of environment variable override */
      81        3909 :     printf("CK_RUN_SUITE=");
      82        3909 :     if ((getenv("CK_RUN_SUITE")) && (strlen(getenv("CK_RUN_SUITE"))>0))
      83           2 :         printf("%s\n",getenv("CK_RUN_SUITE"));
      84             :     else
      85        3907 :         printf("all\n");
      86        3909 :     printf("CK_RUN_CASE=");
      87        3909 :     if ((getenv("CK_RUN_CASE")) && (strlen(getenv("CK_RUN_CASE"))>0))
      88           2 :         printf("%s\n",getenv("CK_RUN_CASE"));
      89             :     else
      90        3907 :         printf("all\n");
      91        3909 :     printf("CK_INCLUDE_TAGS=");
      92        3909 :     if ((getenv("CK_INCLUDE_TAGS")) && (strlen(getenv("CK_INCLUDE_TAGS"))>0))
      93           2 :         printf("%s\n",getenv("CK_INCLUDE_TAGS"));
      94             :     else
      95        3907 :         printf("all\n");
      96        3909 :     printf("CK_EXCLUDE_TAGS=");
      97        3909 :     if ((getenv("CK_EXCLUDE_TAGS")) && (strlen(getenv("CK_EXCLUDE_TAGS"))>0))
      98           2 :         printf("%s\n",getenv("CK_EXCLUDE_TAGS"));
      99             :     else
     100        3907 :         printf("all\n");
     101             : 
     102        3909 :     srunner_add_suite (sr, sample_suite());
     103        3909 :     srunner_add_suite (sr, libdebug_memtrack_suite());
     104        3909 :     srunner_add_suite (sr, libdebug_memdbg_suite());
     105        3909 :     srunner_add_suite (sr, libdebug_memory_suite());
     106        3909 :     srunner_add_suite (sr, libdebug_assert_suite());
     107             : 
     108        3909 :     srunner_run_all(sr, ck_verbosity);
     109             : 
     110           3 :     number_failed = srunner_ntests_failed(sr);
     111           3 :     srunner_free(sr);
     112             : 
     113             :     /* Output memory usage and leaks report */
     114           3 :     memreport();
     115             : 
     116           3 :     printf("\n");
     117             : 
     118             :     /*
     119             :      * Return error code 1 if the one of test failed.
     120             :      * Return 77 if test skipped
     121             :      */
     122           3 :     return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
     123             : }

Generated by: LCOV version 1.16