1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-08 17:22:05 +03:00

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.
This commit is contained in:
Bruno Haible
2016-12-18 14:03:37 +01:00
parent 3e89666037
commit bd70cf691d
7 changed files with 121 additions and 43 deletions

View File

@@ -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> 2016-12-18 Bruno Haible <bruno@clisp.org>
posix-modules: Add options for specific platforms. posix-modules: Add options for specific platforms.

View File

@@ -18,7 +18,6 @@ if test $REPLACE_GETOPT = 1; then
GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT=1 GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT=1
fi fi
AC_SUBST([GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT]) AC_SUBST([GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT])
gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
Makefile.am: Makefile.am:

21
modules/getopt-gnu-tests Normal file
View File

@@ -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)

View File

@@ -1,9 +1,9 @@
Files: Files:
tests/macros.h tests/macros.h
tests/signature.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.h
tests/test-getopt_long.h
Depends-on: Depends-on:
dup2 dup2
@@ -15,6 +15,6 @@ unsetenv
configure.ac: configure.ac:
Makefile.am: Makefile.am:
TESTS += test-getopt TESTS += test-getopt-posix
check_PROGRAMS += test-getopt check_PROGRAMS += test-getopt-posix
test_getopt_LDADD = $(LDADD) $(LIBINTL) test_getopt_posixLDADD = $(LDADD) $(LIBINTL)

44
tests/test-getopt-gnu.c Normal file
View File

@@ -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"

View File

@@ -16,46 +16,13 @@
/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ /* 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" #include "signature.h"
SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *)); SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *));
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h>
/* This test intentionally remaps stderr. So, we arrange to have fd 10 /* 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 (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; static FILE *myerr;
#include "test-getopt.h" #include "test-getopt.h"
#if GNULIB_TEST_GETOPT_GNU #if TEST_GETOPT_GNU
# include "test-getopt_long.h" # include "test-getopt_long.h"
#endif #endif
@@ -90,14 +57,14 @@ main (void)
setenv ("POSIXLY_CORRECT", "1", 1); setenv ("POSIXLY_CORRECT", "1", 1);
test_getopt (); test_getopt ();
#if GNULIB_TEST_GETOPT_GNU #if TEST_GETOPT_GNU
test_getopt_long_posix (); test_getopt_long_posix ();
#endif #endif
unsetenv ("POSIXLY_CORRECT"); unsetenv ("POSIXLY_CORRECT");
test_getopt (); test_getopt ();
#if GNULIB_TEST_GETOPT_GNU #if TEST_GETOPT_GNU
test_getopt_long (); test_getopt_long ();
test_getopt_long_only (); test_getopt_long_only ();
#endif #endif

33
tests/test-getopt-posix.c Normal file
View File

@@ -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"