* tests/test-putenv.c: New file. * modules/putenv-tests: New file. --- ChangeLog | 6 +++++ modules/putenv-tests | 13 ++++++++++ tests/test-putenv.c | 61 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 modules/putenv-tests create mode 100644 tests/test-putenv.c
diff --git a/ChangeLog b/ChangeLog index 7690099cde..8bccdfd2e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2024-05-16 Collin Funk <collin.fu...@gmail.com> + + putenv: Add tests. + * tests/test-putenv.c: New file. + * modules/putenv-tests: New file. + 2024-05-15 Collin Funk <collin.fu...@gmail.com> gnulib-tool.py: Don't print tracebacks when Ctrl-C is pressed. diff --git a/modules/putenv-tests b/modules/putenv-tests new file mode 100644 index 0000000000..43abb8e6c4 --- /dev/null +++ b/modules/putenv-tests @@ -0,0 +1,13 @@ +Files: +tests/test-putenv.c +tests/macros.h +tests/signature.h + +Depends-on: +unsetenv + +configure.ac: + +Makefile.am: +TESTS += test-putenv +check_PROGRAMS += test-putenv diff --git a/tests/test-putenv.c b/tests/test-putenv.c new file mode 100644 index 0000000000..1768e7563a --- /dev/null +++ b/tests/test-putenv.c @@ -0,0 +1,61 @@ +/* Test the putenv function. + Copyright (C) 2024 Free Software Foundation, Inc. + + This file 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 file 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 <https://www.gnu.org/licenses/>. */ + +/* Written by Collin Funk <collin.fu...@gmail.com>, 2024. */ + +#include <config.h> + +/* Specification. */ +#include <stdlib.h> + +#include "signature.h" +SIGNATURE_CHECK (putenv, int, (char *)); + +#include <string.h> + +#include "macros.h" + +int +main (void) +{ + char *ptr; + + /* Verify the environment is clean. */ + unsetenv ("TEST_VAR"); + ASSERT (getenv ("TEST_VAR") == NULL); + + /* Verify adding an environment variable. */ + { + ASSERT (putenv ("TEST_VAR=abc") == 0); + ptr = getenv ("TEST_VAR"); + ASSERT (ptr != NULL); + ASSERT (STREQ (ptr, "abc")); + } + + /* Verify removing an environment variable. */ + { + ASSERT (putenv ("TEST_VAR") == 0); + ASSERT (getenv ("TEST_VAR") == NULL); + } + + /* Verify the behavior when removing a variable not in the environment. */ + { + ASSERT (putenv ("TEST_VAR") == 0); + ASSERT (getenv ("TEST_VAR") == NULL); + } + + return 0; +} -- 2.45.0