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>
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
fi
AC_SUBST([GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT])
gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
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:
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)

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. */
#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>
#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
@@ -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

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"