Hash :
f7bf2e44
Author :
Date :
2016-08-18T15:18:24
Port tests away from progname Modules that need the program name already depend on getprogname. * modules/acl-tests (Depends-on): Remove progname. * modules/argmatch (Depends-on): Likewise. * modules/argmatch-tests (Depends-on): Likewise. * modules/argp-tests (Depends-on): Likewise. * modules/argp-version-etc-tests (Depends-on): Likewise. * modules/array-list-tests (Depends-on): Likewise. * modules/array-oset-tests (Depends-on): Likewise. * modules/avltree-list-tests (Depends-on): Likewise. * modules/avltree-oset-tests (Depends-on): Likewise. * modules/avltreehash-list-tests (Depends-on): Likewise. * modules/carray-list-tests (Depends-on): Likewise. * modules/copy-file-tests (Depends-on): Likewise. * modules/exclude-tests (Depends-on): Likewise. * modules/fchownat-tests (Depends-on): Likewise. * modules/fdopendir-tests (Depends-on): Likewise. * modules/filenamecat-tests (Depends-on): Likewise. * modules/fstatat-tests (Depends-on): Likewise. * modules/fstrcmp-tests (Depends-on): Likewise. * modules/linked-list-tests (Depends-on): Likewise. * modules/linkedhash-list-tests (Depends-on): Likewise. * modules/mkdirat-tests (Depends-on): Likewise. * modules/nonblocking-pipe-tests (Depends-on): Likewise. * modules/nonblocking-socket-tests (Depends-on): Likewise. * modules/obstack-printf-tests (Depends-on): Likewise. * modules/openat-tests (Depends-on): Likewise. * modules/parse-datetime-tests (Depends-on): Likewise. * modules/pipe-filter-gi-tests (Depends-on): Likewise. * modules/pipe-filter-ii-tests (Depends-on): Likewise. * modules/quotearg-simple-tests (Depends-on): Likewise. * modules/quotearg-tests (Depends-on): Likewise. * modules/rbtree-list-tests (Depends-on): Likewise. * modules/rbtree-oset-tests (Depends-on): Likewise. * modules/rbtreehash-list-tests (Depends-on): Likewise. * modules/spawn-pipe-tests (Depends-on): Likewise. * modules/system-quote-tests (Depends-on): Likewise. * modules/uniname/uniname-tests (Depends-on): Likewise. * modules/uninorm/nfc-tests (Depends-on): Likewise. * modules/uninorm/nfd-tests (Depends-on): Likewise. * modules/uninorm/nfkc-tests (Depends-on): Likewise. * modules/uninorm/nfkd-tests (Depends-on): Likewise. * modules/unistdio/u16-vsnprintf-tests (Depends-on): Likewise. * modules/unistdio/u16-vsprintf-tests (Depends-on): Likewise. * modules/unistdio/u32-vsnprintf-tests (Depends-on): Likewise. * modules/unistdio/u32-vsprintf-tests (Depends-on): Likewise. * modules/unistdio/u8-vsnprintf-tests (Depends-on): Likewise. * modules/unistdio/u8-vsprintf-tests (Depends-on): Likewise. * modules/unistdio/ulc-vsnprintf-tests (Depends-on): Likewise. * modules/unistdio/ulc-vsprintf-tests (Depends-on): Likewise. * modules/unlinkat-tests (Depends-on): Likewise. * modules/version-etc-tests (Depends-on): Likewise. * modules/xalloc-die-tests (Depends-on): Likewise. * modules/xmemdup0-tests (Depends-on): Likewise. * modules/xprintf-posix-tests (Depends-on): Likewise. * modules/xvasprintf-tests (Depends-on): Likewise. * tests/test-argmatch.c: Do not include progname.h. (main) Stop calling set_program_name. * tests/test-argp-version-etc.c: Likewise. * tests/test-argp.c: Likewise. * tests/test-argv-iter.c: Likewise. * tests/test-array_list.c: Likewise. * tests/test-array_oset.c: Likewise. * tests/test-avltree_list.c: Likewise. * tests/test-avltree_oset.c: Likewise. * tests/test-avltreehash_list.c: Likewise. * tests/test-carray_list.c: Likewise. * tests/test-copy-acl.c: Likewise. * tests/test-copy-file.c: Likewise. * tests/test-exclude.c: Likewise. * tests/test-fchownat.c: Likewise. * tests/test-fdopendir.c: Likewise. * tests/test-filenamecat.c: Likewise. * tests/test-fstatat.c: Likewise. * tests/test-fstrcmp.c: Likewise. * tests/test-linked_list.c: Likewise. * tests/test-linkedhash_list.c: Likewise. * tests/test-mkdirat.c: Likewise. * tests/test-nonblocking-pipe-main.c: Likewise. * tests/test-nonblocking-socket-main.c: Likewise. * tests/test-obstack-printf.c: Likewise. * tests/test-openat.c: Likewise. * tests/test-parse-datetime.c: Likewise. * tests/test-pipe-filter-gi1.c: Likewise. * tests/test-pipe-filter-gi2-main.c: Likewise. * tests/test-pipe-filter-ii1.c: Likewise. * tests/test-pipe-filter-ii2-main.c: Likewise. * tests/test-quotearg-simple.c: Likewise. * tests/test-quotearg.c: Likewise. * tests/test-rbtree_list.c: Likewise. * tests/test-rbtree_oset.c: Likewise. * tests/test-rbtreehash_list.c: Likewise. * tests/test-sameacls.c: Likewise. * tests/test-set-mode-acl.c: Likewise. * tests/test-spawn-pipe-main.c: Likewise. * tests/test-system-quote-main.c: Likewise. * tests/test-unlinkat.c: Likewise. * tests/test-version-etc.c: Likewise. * tests/test-xalloc-die.c: Likewise. * tests/test-xfprintf-posix.c: Likewise. * tests/test-xmemdup0.c: Likewise. * tests/test-xprintf-posix.c: Likewise. * tests/test-xvasprintf.c: Likewise. * tests/uniname/test-uninames.c: Likewise. * tests/uninorm/test-u32-nfc-big.c: Likewise. * tests/uninorm/test-u32-nfd-big.c: Likewise. * tests/uninorm/test-u32-nfkc-big.c: Likewise. * tests/uninorm/test-u32-nfkd-big.c: Likewise. * tests/unistdio/test-u16-vsnprintf1.c: Likewise. * tests/unistdio/test-u16-vsprintf1.c: Likewise. * tests/unistdio/test-u32-vsnprintf1.c: Likewise. * tests/unistdio/test-u32-vsprintf1.c: Likewise. * tests/unistdio/test-u8-vsnprintf1.c: Likewise. * tests/unistdio/test-u8-vsprintf1.c: Likewise. * tests/unistdio/test-ulc-vsnprintf1.c: Likewise. * tests/unistdio/test-ulc-vsprintf1.c: Likewise. * tests/test-c-stack.c: (program_name): Do not define. (main): Do not set program_name. * tests/test-closein.c: Likewise. * tests/test-xstrtol.c: Likewise. * tests/test-yesno.c: Likewise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
/* Test argv iterator
Copyright (C) 2008-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 Jim Meyering. */
#include <config.h>
#include "argv-iter.h"
#include <stdio.h>
#include <string.h>
#include "macros.h"
#define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
#define STREQ(a, b) (strcmp (a, b) == 0)
static FILE *
write_nul_delimited_argv (char **argv)
{
FILE *fp = tmpfile ();
ASSERT (fp);
while (*argv)
{
size_t len = strlen (*argv) + 1;
ASSERT (fwrite (*argv, len, 1, fp) == 1);
argv++;
}
ASSERT (fflush (fp) == 0);
rewind (fp);
return fp;
}
int
main (void)
{
static char one[] = "1";
static char two[] = "2";
static char three[] = "3";
static char *av[][4] = {
{NULL},
{one, NULL},
{one, two, NULL},
{one, two, three, NULL}
};
int use_stream;
for (use_stream = 0; use_stream < 2; use_stream++)
{
size_t i;
for (i = 0; i < ARRAY_CARDINALITY (av); i++)
{
FILE *fp;
struct argv_iterator *ai;
size_t n_found = 0;
if (use_stream)
{
/* Generate an identical list to be read via FP. */
ASSERT ((fp = write_nul_delimited_argv (av[i])) != NULL);
ai = argv_iter_init_stream (fp);
}
else
{
fp = NULL;
ai = argv_iter_init_argv (av[i]);
}
ASSERT (ai);
while (1)
{
enum argv_iter_err ai_err;
char *s = argv_iter (ai, &ai_err);
ASSERT ((i == n_found) == (ai_err == AI_ERR_EOF));
ASSERT ((s == NULL) ^ (ai_err == AI_ERR_OK));
ASSERT (ai_err == AI_ERR_OK || ai_err == AI_ERR_EOF);
if (ai_err == AI_ERR_OK)
++n_found;
if (ai_err == AI_ERR_EOF)
break;
/* In stream mode, the strings are equal, but
in argv mode the actual pointers are equal. */
ASSERT (use_stream
? STREQ (s, av[i][n_found - 1])
: s == av[i][n_found - 1]);
}
ASSERT (argv_iter_n_args (ai) == i);
argv_iter_free (ai);
if (fp)
ASSERT (fclose (fp) == 0);
}
}
return 0;
}