diff options
author | Mattias Andrée <maandree@kth.se> | 2018-08-26 19:09:45 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2018-08-26 19:09:45 +0200 |
commit | 2994cd6c2cb1103613f3116ef7c371a64ae5221f (patch) | |
tree | a816a9f72c971827bfae8ad70c52cc6b2db4f01d /vputenvf.c | |
parent | Remove checks impossible situations (diff) | |
download | libsimple-2994cd6c2cb1103613f3116ef7c371a64ae5221f.tar.gz libsimple-2994cd6c2cb1103613f3116ef7c371a64ae5221f.tar.bz2 libsimple-2994cd6c2cb1103613f3116ef7c371a64ae5221f.tar.xz |
Add test for putenvf
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'vputenvf.c')
-rw-r--r-- | vputenvf.c | 39 |
1 files changed, 34 insertions, 5 deletions
@@ -1,9 +1,10 @@ /* See LICENSE file for copyright and license details. */ #include "libsimple.h" +#ifndef TEST int -libsimple_vputenvf(const char *fmt, va_list ap) /* TODO test */ +libsimple_vputenvf(const char *fmt, va_list ap) { va_list ap2; int n; @@ -13,11 +14,39 @@ libsimple_vputenvf(const char *fmt, va_list ap) /* TODO test */ va_end(ap2); if (n < 0) return -1; - if ((size_t)n == SIZE_MAX) { - errno = ENOMEM; - return -1; - } s = alloca((size_t)n + 1); vsprintf(s, fmt, ap); return putenv(s); } + + +#else +#include "test.h" + +int +main(void) +{ + unsetenv("X"); + assert(!getenv("X")); + unsetenv("Y"); + assert(!getenv("Y")); + + putenvf("X=xyz"); + assert(!strcmpnul(getenv("X"), "xyz")); + putenvf("Y=xyz"); + assert(!strcmpnul(getenv("Y"), "xyz")); + + putenvf("X=x%sz", "abc"); + assert(!strcmpnul(getenv("X"), "xabcz")); + putenvf("Y=x%sz", "abc"); + assert(!strcmpnul(getenv("Y"), "xabcz")); + + putenvf("X=%ix%sz%i", 10, "abc", -11); + assert(!strcmpnul(getenv("X"), "10xabcz-11")); + putenvf("Y=%ix%sz%i", 10, "abc", -11); + assert(!strcmpnul(getenv("Y"), "10xabcz-11")); + + return 0; +} + +#endif |