From bd70cf691d1f9a1a514b37b5dcd675bea3b013bd Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 18 Dec 2016 14:03:37 +0100 Subject: [PATCH] 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. --- ChangeLog | 14 +++++++ modules/getopt-gnu | 1 - modules/getopt-gnu-tests | 21 ++++++++++ modules/getopt-posix-tests | 10 ++--- tests/test-getopt-gnu.c | 44 +++++++++++++++++++++ tests/{test-getopt.c => test-getopt-main.h} | 41 ++----------------- tests/test-getopt-posix.c | 33 ++++++++++++++++ 7 files changed, 121 insertions(+), 43 deletions(-) create mode 100644 modules/getopt-gnu-tests create mode 100644 tests/test-getopt-gnu.c rename tests/{test-getopt.c => test-getopt-main.h} (61%) create mode 100644 tests/test-getopt-posix.c diff --git a/ChangeLog b/ChangeLog index 9dd66eabdc..b5e5201933 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2016-12-18 Bruno Haible + + 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 posix-modules: Add options for specific platforms. diff --git a/modules/getopt-gnu b/modules/getopt-gnu index 69fc7de1a7..606013bdad 100644 --- a/modules/getopt-gnu +++ b/modules/getopt-gnu @@ -18,7 +18,6 @@ if test $REPLACE_GETOPT = 1; then 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: diff --git a/modules/getopt-gnu-tests b/modules/getopt-gnu-tests new file mode 100644 index 0000000000..688b5ded87 --- /dev/null +++ b/modules/getopt-gnu-tests @@ -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) diff --git a/modules/getopt-posix-tests b/modules/getopt-posix-tests index 9c73d08b7b..067e38fabb 100644 --- a/modules/getopt-posix-tests +++ b/modules/getopt-posix-tests @@ -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 @@ unsetenv 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) diff --git a/tests/test-getopt-gnu.c b/tests/test-getopt-gnu.c new file mode 100644 index 0000000000..eb0a166429 --- /dev/null +++ b/tests/test-getopt-gnu.c @@ -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 . */ + +/* Written by Bruno Haible , 2009. */ + +#include + +/* 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 , 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 , not in . + This is what we are testing here. */ +#include + +#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" diff --git a/tests/test-getopt.c b/tests/test-getopt-main.h similarity index 61% rename from tests/test-getopt.c rename to tests/test-getopt-main.h index 04e1ae674b..2c9fa49a97 100644 --- a/tests/test-getopt.c +++ b/tests/test-getopt-main.h @@ -16,46 +16,13 @@ /* Written by Bruno Haible , 2009. */ -#include - -/* 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 - -# 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 , 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 , not in . - Nevertheless the getopt() function should also be found in . - We can test it either way. */ -#if 0 -# include -#else -# include -#endif - #include "signature.h" SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *)); #include #include #include +#include /* 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 @@ -68,7 +35,7 @@ SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *)); static FILE *myerr; #include "test-getopt.h" -#if GNULIB_TEST_GETOPT_GNU +#if TEST_GETOPT_GNU # include "test-getopt_long.h" #endif @@ -90,14 +57,14 @@ main (void) setenv ("POSIXLY_CORRECT", "1", 1); test_getopt (); -#if GNULIB_TEST_GETOPT_GNU +#if TEST_GETOPT_GNU test_getopt_long_posix (); #endif unsetenv ("POSIXLY_CORRECT"); test_getopt (); -#if GNULIB_TEST_GETOPT_GNU +#if TEST_GETOPT_GNU test_getopt_long (); test_getopt_long_only (); #endif diff --git a/tests/test-getopt-posix.c b/tests/test-getopt-posix.c new file mode 100644 index 0000000000..c89981fd1a --- /dev/null +++ b/tests/test-getopt-posix.c @@ -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 . */ + +/* Written by Bruno Haible , 2009. */ + +#include + +/* 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 , 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 , not in . + Nevertheless the getopt() function should also be found in . */ +#include + +#define TEST_GETOPT_GNU 0 +#include "test-getopt-main.h" -- 2.39.5