LCOV - code coverage report
Current view: top level - gltests - test-getopt.c (source / functions) Hit Total Coverage
Test: GNU Libidn Lines: 16 17 94.1 %
Date: 2016-07-20 19:34:35 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* Test of command line argument processing.
       2             :    Copyright (C) 2009-2016 Free Software Foundation, Inc.
       3             : 
       4             :    This program is free software: you can redistribute it and/or modify
       5             :    it under the terms of the GNU General Public License as published by
       6             :    the Free Software Foundation; either version 3 of the License, or
       7             :    (at your option) any later version.
       8             : 
       9             :    This program is distributed in the hope that it will be useful,
      10             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      11             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12             :    GNU General Public License for more details.
      13             : 
      14             :    You should have received a copy of the GNU General Public License
      15             :    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
      16             : 
      17             : /* Written by Bruno Haible <bruno@clisp.org>, 2009.  */
      18             : 
      19             : #include <config.h>
      20             : 
      21             : /* None of the files accessed by this test are large, so disable the
      22             :    ftell link warning if we are not using the gnulib ftell module.  */
      23             : #define _GL_NO_LARGE_FILES
      24             : 
      25             : #if GNULIB_TEST_GETOPT_GNU
      26             : # include <getopt.h>
      27             : 
      28             : # ifndef __getopt_argv_const
      29             : #  define __getopt_argv_const const
      30             : # endif
      31             : # include "signature.h"
      32             : SIGNATURE_CHECK (getopt_long, int, (int, char *__getopt_argv_const *,
      33             :                                     char const *, struct option const *,
      34             :                                     int *));
      35             : SIGNATURE_CHECK (getopt_long_only, int, (int, char *__getopt_argv_const *,
      36             :                                          char const *, struct option const *,
      37             :                                          int *));
      38             : 
      39             : #endif
      40             : 
      41             : #include <unistd.h>
      42             : 
      43             : #include "signature.h"
      44             : SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *));
      45             : 
      46             : #include <stdio.h>
      47             : #include <stdlib.h>
      48             : #include <string.h>
      49             : 
      50             : /* This test intentionally remaps stderr.  So, we arrange to have fd 10
      51             :    (outside the range of interesting fd's during the test) set up to
      52             :    duplicate the original stderr.  */
      53             : 
      54             : #define BACKUP_STDERR_FILENO 10
      55             : #define ASSERT_STREAM myerr
      56             : #include "macros.h"
      57             : 
      58             : static FILE *myerr;
      59             : 
      60             : #include "test-getopt.h"
      61             : #if GNULIB_TEST_GETOPT_GNU
      62             : # include "test-getopt_long.h"
      63             : #endif
      64             : 
      65             : int
      66           1 : main (void)
      67             : {
      68             :    /* This test validates that stderr is used correctly, so move the
      69             :       original into fd 10.  */
      70           1 :   if (dup2 (STDERR_FILENO, BACKUP_STDERR_FILENO) != BACKUP_STDERR_FILENO
      71           1 :       || (myerr = fdopen (BACKUP_STDERR_FILENO, "w")) == NULL)
      72           0 :     return 2;
      73             : 
      74           1 :   ASSERT (freopen ("test-getopt.tmp", "w", stderr) == stderr);
      75             : 
      76             :   /* These default values are required by POSIX.  */
      77           1 :   ASSERT (optind == 1);
      78           1 :   ASSERT (opterr != 0);
      79             : 
      80           1 :   setenv ("POSIXLY_CORRECT", "1", 1);
      81           1 :   test_getopt ();
      82             : 
      83             : #if GNULIB_TEST_GETOPT_GNU
      84           1 :   test_getopt_long_posix ();
      85             : #endif
      86             : 
      87           1 :   unsetenv ("POSIXLY_CORRECT");
      88           1 :   test_getopt ();
      89             : 
      90             : #if GNULIB_TEST_GETOPT_GNU
      91           1 :   test_getopt_long ();
      92           1 :   test_getopt_long_only ();
      93             : #endif
      94             : 
      95           1 :   ASSERT (fclose (stderr) == 0);
      96           1 :   ASSERT (remove ("test-getopt.tmp") == 0);
      97             : 
      98           1 :   return 0;
      99             : }

Generated by: LCOV version 1.11