diff options
| author | Andreas Rottmann <a.rottmann@gmx.at> | 2010-05-27 18:23:17 +0200 | 
|---|---|---|
| committer | Andreas Rottmann <a.rottmann@gmx.at> | 2010-05-27 18:23:17 +0200 | 
| commit | bd6adfa17d453e4c486e36fed4c5779db90a8a0e (patch) | |
| tree | 9798677560d5f99061afe9f0db105a8c97f2438a /tests/test-setenv.c | |
| parent | 79ca645d222db2e158784642c3b464a47bea26f3 (diff) | |
| parent | 3e0814cd9862b89c7a39672672937477bd87ddfb (diff) | |
Merge commit 'upstream/0.9.3'
Diffstat (limited to 'tests/test-setenv.c')
| -rw-r--r-- | tests/test-setenv.c | 56 | 
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/test-setenv.c b/tests/test-setenv.c new file mode 100644 index 00000000..de589c1b --- /dev/null +++ b/tests/test-setenv.c @@ -0,0 +1,56 @@ +/* Tests of setenv. +   Copyright (C) 2009, 2010 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 Eric Blake <ebb9@byu.net>, 2009.  */ + +#include <config.h> + +#include <stdlib.h> + +#include "signature.h" +SIGNATURE_CHECK (setenv, int, (char const *, char const *, int)); + +#include <errno.h> +#include <string.h> +#include <unistd.h> + +#include "macros.h" + +int +main (void) +{ +  /* Test overwriting.  */ +  ASSERT (setenv ("a", "==", -1) == 0); +  ASSERT (setenv ("a", "2", 0) == 0); +  ASSERT (strcmp (getenv ("a"), "==") == 0); + +  /* Required to fail with EINVAL.  */ +  errno = 0; +  ASSERT (setenv ("", "", 1) == -1); +  ASSERT (errno == EINVAL); +  errno = 0; +  ASSERT (setenv ("a=b", "", 0) == -1); +  ASSERT (errno == EINVAL); +#if 0 +  /* glibc and gnulib's implementation guarantee this, but POSIX no +     longer requires it: http://austingroupbugs.net/view.php?id=185  */ +  errno = 0; +  ASSERT (setenv (NULL, "", 0) == -1); +  ASSERT (errno == EINVAL); +#endif + +  return 0; +}  | 
