Module Name: src Committed By: tron Date: Sun Nov 14 18:15:08 UTC 2010
Modified Files: src/tests/lib/libc/stdlib: t_environment.c Log Message: Update tests for *env(3): - Introduce randomness into "t_setenv" to avoid freeing environment variables exactly in the order they have been allocated. Also call unsetenv(3) twice to make sure it behaves well if the environment variable doesn't exist. - "t_getenv" is no longer a known failure after getenv(3) and getenv_r(3) have been fixed. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/tests/lib/libc/stdlib/t_environment.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/lib/libc/stdlib/t_environment.c diff -u src/tests/lib/libc/stdlib/t_environment.c:1.9 src/tests/lib/libc/stdlib/t_environment.c:1.10 --- src/tests/lib/libc/stdlib/t_environment.c:1.9 Sat Nov 13 21:08:36 2010 +++ src/tests/lib/libc/stdlib/t_environment.c Sun Nov 14 18:15:08 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: t_environment.c,v 1.9 2010/11/13 21:08:36 tron Exp $ */ +/* $NetBSD: t_environment.c,v 1.10 2010/11/14 18:15:08 tron Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. * All rights reserved. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_environment.c,v 1.9 2010/11/13 21:08:36 tron Exp $"); +__RCSID("$NetBSD: t_environment.c,v 1.10 2010/11/14 18:15:08 tron Exp $"); #include <atf-c.h> #include <errno.h> @@ -79,21 +79,28 @@ ATF_TC_BODY(t_setenv, tc) { - size_t i; + const size_t numvars = 8192; + size_t i, offset; char name[1024]; char value[1024]; - for (i = 0; i < 10240; i++) { - snprintf(name, sizeof(name), "var%zu", i); - snprintf(value, sizeof(value), "value%ld", lrand48()); + + offset = lrand48(); + for (i = 0; i < numvars; i++) { + (void)snprintf(name, sizeof(name), "var%zu", + (i * 7 + offset) % numvars); + (void)snprintf(value, sizeof(value), "value%ld", lrand48()); ATF_CHECK(setenv(name, value, 1) != -1); ATF_CHECK(setenv(name, "foo", 0) != -1); ATF_CHECK_STREQ(getenv(name), value); } - for (i = 0; i < 10240; i++) { - snprintf(name, sizeof(name), "var%zu", i); + offset = lrand48(); + for (i = 0; i < numvars; i++) { + (void)snprintf(name, sizeof(name), "var%zu", + (i * 11 + offset) % numvars); ATF_CHECK(unsetenv(name) != -1); ATF_CHECK(getenv(name) == NULL); + ATF_CHECK(unsetenv(name) != -1); } ATF_CHECK_ERRNO(EINVAL, setenv(NULL, "val", 1) == -1); @@ -174,11 +181,7 @@ { ATF_CHECK(setenv("EVIL", "very=bad", 1) != -1); ATF_CHECK_STREQ(getenv("EVIL"), "very=bad"); - - atf_tc_expect_fail("getenv(3) doesn't check variable names properly"); ATF_CHECK(getenv("EVIL=very") == NULL); - - atf_tc_expect_pass(); ATF_CHECK(unsetenv("EVIL") != -1); }