Mercurial > gnulib
changeset 18605:33b898f9e587
Split tests for getopt-posix and getopt-gnu.
* tests/test-getopt-posix.c: New file.
* tests/test-getopt-gnu.c: New file, with code from test-getopt.c.
* tests/test-getopt-main.h: Renamed from tests/test-getopt.c. Remove
stuff moved to test-getopt-gnu.c. Test TEST_GETOPT_GNU instead of
GNULIB_TEST_GETOPT_GNU.
* modules/getopt-posix-tests (Files): Add test-getopt-posix.c,
test-getopt-main.h. Remove test-getopt.c, test-getopt_long.h.
(Makefile.am): Test test-getopt-posix instead of test-getopt.
* modules/getopt-gnu-tests: New file.
* modules/getopt-gnu (configure.ac): Don't define GNULIB_TEST_GETOPT_GNU.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 18 Dec 2016 14:03:37 +0100 |
parents | 1bfb1ca01cac |
children | d421bd610f90 |
files | ChangeLog modules/getopt-gnu modules/getopt-gnu-tests modules/getopt-posix-tests tests/test-getopt-gnu.c tests/test-getopt-main.h tests/test-getopt-posix.c tests/test-getopt.c |
diffstat | 8 files changed, 193 insertions(+), 115 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Dec 17 11:50:06 2016 +0100 +++ b/ChangeLog Sun Dec 18 14:03:37 2016 +0100 @@ -1,3 +1,17 @@ +2016-12-18 Bruno Haible <bruno@clisp.org> + + Split tests for getopt-posix and getopt-gnu. + * tests/test-getopt-posix.c: New file. + * tests/test-getopt-gnu.c: New file, with code from test-getopt.c. + * tests/test-getopt-main.h: Renamed from tests/test-getopt.c. Remove + stuff moved to test-getopt-gnu.c. Test TEST_GETOPT_GNU instead of + GNULIB_TEST_GETOPT_GNU. + * modules/getopt-posix-tests (Files): Add test-getopt-posix.c, + test-getopt-main.h. Remove test-getopt.c, test-getopt_long.h. + (Makefile.am): Test test-getopt-posix instead of test-getopt. + * modules/getopt-gnu-tests: New file. + * modules/getopt-gnu (configure.ac): Don't define GNULIB_TEST_GETOPT_GNU. + 2016-12-18 Bruno Haible <bruno@clisp.org> posix-modules: Add options for specific platforms.
--- a/modules/getopt-gnu Sat Dec 17 11:50:06 2016 +0100 +++ b/modules/getopt-gnu Sun Dec 18 14:03:37 2016 +0100 @@ -18,7 +18,6 @@ GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT]) -gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu]) Makefile.am:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/getopt-gnu-tests Sun Dec 18 14:03:37 2016 +0100 @@ -0,0 +1,21 @@ +Files: +tests/macros.h +tests/signature.h +tests/test-getopt-gnu.c +tests/test-getopt-main.h +tests/test-getopt.h +tests/test-getopt_long.h + +Depends-on: +dup2 +setenv +stdbool +unistd +unsetenv + +configure.ac: + +Makefile.am: +TESTS += test-getopt-gnu +check_PROGRAMS += test-getopt-gnu +test_getopt_gnu_LDADD = $(LDADD) $(LIBINTL)
--- a/modules/getopt-posix-tests Sat Dec 17 11:50:06 2016 +0100 +++ b/modules/getopt-posix-tests Sun Dec 18 14:03:37 2016 +0100 @@ -1,9 +1,9 @@ Files: tests/macros.h tests/signature.h -tests/test-getopt.c +tests/test-getopt-posix.c +tests/test-getopt-main.h tests/test-getopt.h -tests/test-getopt_long.h Depends-on: dup2 @@ -15,6 +15,6 @@ configure.ac: Makefile.am: -TESTS += test-getopt -check_PROGRAMS += test-getopt -test_getopt_LDADD = $(LDADD) $(LIBINTL) +TESTS += test-getopt-posix +check_PROGRAMS += test-getopt-posix +test_getopt_posixLDADD = $(LDADD) $(LIBINTL)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-getopt-gnu.c Sun Dec 18 14:03:37 2016 +0100 @@ -0,0 +1,44 @@ +/* Test of command line argument processing. + Copyright (C) 2009-2016 Free Software Foundation, Inc. + + 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 3 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 <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ + +#include <config.h> + +/* None of the files accessed by this test are large, so disable the + ftell link warning if we are not using the gnulib ftell module. */ +#define _GL_NO_LARGE_FILES + +/* POSIX and glibc provide the getopt() function in <unistd.h>, see + http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html + https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html + But gnulib provides the getopt() function in <getopt.h>, not in <unistd.h>. + This is what we are testing here. */ +#include <getopt.h> + +#ifndef __getopt_argv_const +# define __getopt_argv_const const +#endif +#include "signature.h" +SIGNATURE_CHECK (getopt_long, int, (int, char *__getopt_argv_const *, + char const *, struct option const *, + int *)); +SIGNATURE_CHECK (getopt_long_only, int, (int, char *__getopt_argv_const *, + char const *, struct option const *, + int *)); + +#define TEST_GETOPT_GNU 1 +#include "test-getopt-main.h"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-getopt-main.h Sun Dec 18 14:03:37 2016 +0100 @@ -0,0 +1,76 @@ +/* Test of command line argument processing. + Copyright (C) 2009-2016 Free Software Foundation, Inc. + + 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 3 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 <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ + +#include "signature.h" +SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *)); + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +/* This test intentionally remaps stderr. So, we arrange to have fd 10 + (outside the range of interesting fd's during the test) set up to + duplicate the original stderr. */ + +#define BACKUP_STDERR_FILENO 10 +#define ASSERT_STREAM myerr +#include "macros.h" + +static FILE *myerr; + +#include "test-getopt.h" +#if TEST_GETOPT_GNU +# include "test-getopt_long.h" +#endif + +int +main (void) +{ + /* This test validates that stderr is used correctly, so move the + original into fd 10. */ + if (dup2 (STDERR_FILENO, BACKUP_STDERR_FILENO) != BACKUP_STDERR_FILENO + || (myerr = fdopen (BACKUP_STDERR_FILENO, "w")) == NULL) + return 2; + + ASSERT (freopen ("test-getopt.tmp", "w", stderr) == stderr); + + /* These default values are required by POSIX. */ + ASSERT (optind == 1); + ASSERT (opterr != 0); + + setenv ("POSIXLY_CORRECT", "1", 1); + test_getopt (); + +#if TEST_GETOPT_GNU + test_getopt_long_posix (); +#endif + + unsetenv ("POSIXLY_CORRECT"); + test_getopt (); + +#if TEST_GETOPT_GNU + test_getopt_long (); + test_getopt_long_only (); +#endif + + ASSERT (fclose (stderr) == 0); + ASSERT (remove ("test-getopt.tmp") == 0); + + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-getopt-posix.c Sun Dec 18 14:03:37 2016 +0100 @@ -0,0 +1,33 @@ +/* Test of command line argument processing. + Copyright (C) 2009-2016 Free Software Foundation, Inc. + + 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 3 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 <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ + +#include <config.h> + +/* None of the files accessed by this test are large, so disable the + ftell link warning if we are not using the gnulib ftell module. */ +#define _GL_NO_LARGE_FILES + +/* POSIX and glibc provide the getopt() function in <unistd.h>, see + http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html + https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html + But gnulib provides the getopt() function in <getopt.h>, not in <unistd.h>. + Nevertheless the getopt() function should also be found in <unistd.h>. */ +#include <unistd.h> + +#define TEST_GETOPT_GNU 0 +#include "test-getopt-main.h"
--- a/tests/test-getopt.c Sat Dec 17 11:50:06 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -/* Test of command line argument processing. - Copyright (C) 2009-2016 Free Software Foundation, Inc. - - 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 3 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 <http://www.gnu.org/licenses/>. */ - -/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ - -#include <config.h> - -/* None of the files accessed by this test are large, so disable the - ftell link warning if we are not using the gnulib ftell module. */ -#define _GL_NO_LARGE_FILES - -#if GNULIB_TEST_GETOPT_GNU -# include <getopt.h> - -# ifndef __getopt_argv_const -# define __getopt_argv_const const -# endif -# include "signature.h" -SIGNATURE_CHECK (getopt_long, int, (int, char *__getopt_argv_const *, - char const *, struct option const *, - int *)); -SIGNATURE_CHECK (getopt_long_only, int, (int, char *__getopt_argv_const *, - char const *, struct option const *, - int *)); - -#endif - -/* POSIX and glibc provide the getopt() function in <unistd.h>, see - http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html - https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html - But gnulib provides the getopt() function in <getopt.h>, not in <unistd.h>. - Nevertheless the getopt() function should also be found in <unistd.h>. - We can test it either way. */ -#if 0 -# include <getopt.h> -#else -# include <unistd.h> -#endif - -#include "signature.h" -SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *)); - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -/* This test intentionally remaps stderr. So, we arrange to have fd 10 - (outside the range of interesting fd's during the test) set up to - duplicate the original stderr. */ - -#define BACKUP_STDERR_FILENO 10 -#define ASSERT_STREAM myerr -#include "macros.h" - -static FILE *myerr; - -#include "test-getopt.h" -#if GNULIB_TEST_GETOPT_GNU -# include "test-getopt_long.h" -#endif - -int -main (void) -{ - /* This test validates that stderr is used correctly, so move the - original into fd 10. */ - if (dup2 (STDERR_FILENO, BACKUP_STDERR_FILENO) != BACKUP_STDERR_FILENO - || (myerr = fdopen (BACKUP_STDERR_FILENO, "w")) == NULL) - return 2; - - ASSERT (freopen ("test-getopt.tmp", "w", stderr) == stderr); - - /* These default values are required by POSIX. */ - ASSERT (optind == 1); - ASSERT (opterr != 0); - - setenv ("POSIXLY_CORRECT", "1", 1); - test_getopt (); - -#if GNULIB_TEST_GETOPT_GNU - test_getopt_long_posix (); -#endif - - unsetenv ("POSIXLY_CORRECT"); - test_getopt (); - -#if GNULIB_TEST_GETOPT_GNU - test_getopt_long (); - test_getopt_long_only (); -#endif - - ASSERT (fclose (stderr) == 0); - ASSERT (remove ("test-getopt.tmp") == 0); - - return 0; -}