|
27 | 27 |
|
28 | 28 | TEST_IMPL(env_vars) {
|
29 | 29 | const char* name = "UV_TEST_FOO";
|
| 30 | + const char* name2 = "UV_TEST_FOO2"; |
30 | 31 | char buf[BUF_SIZE];
|
31 | 32 | size_t size;
|
32 |
| - int r; |
| 33 | + int i, r, envcount, found; |
| 34 | + uv_env_item_t* envitems; |
33 | 35 |
|
34 | 36 | /* Reject invalid inputs when setting an environment variable */
|
35 | 37 | r = uv_os_setenv(NULL, "foo");
|
@@ -86,5 +88,38 @@ TEST_IMPL(env_vars) {
|
86 | 88 | r = uv_os_unsetenv(name);
|
87 | 89 | ASSERT(r == 0);
|
88 | 90 |
|
| 91 | + /* Check getting all env variables. */ |
| 92 | + r = uv_os_setenv(name, "123456789"); |
| 93 | + ASSERT(r == 0); |
| 94 | + r = uv_os_setenv(name2, ""); |
| 95 | + ASSERT(r == 0); |
| 96 | + |
| 97 | + r = uv_os_environ(&envitems, &envcount); |
| 98 | + ASSERT(r == 0); |
| 99 | + ASSERT(envcount > 0); |
| 100 | + |
| 101 | + found = 0; |
| 102 | + |
| 103 | + for (i = 0; i < envcount; i++) { |
| 104 | + /* printf("Env: %s = %s\n", envitems[i].name, envitems[i].value); */ |
| 105 | + if (strcmp(envitems[i].name, name) == 0) { |
| 106 | + found++; |
| 107 | + ASSERT(strcmp(envitems[i].value, "123456789") == 0); |
| 108 | + } else if (strcmp(envitems[i].name, name2) == 0) { |
| 109 | + found++; |
| 110 | + ASSERT(strlen(envitems[i].value) == 0); |
| 111 | + } |
| 112 | + } |
| 113 | + |
| 114 | + ASSERT(found == 2); |
| 115 | + |
| 116 | + uv_os_free_environ(envitems, envcount); |
| 117 | + |
| 118 | + r = uv_os_unsetenv(name); |
| 119 | + ASSERT(r == 0); |
| 120 | + |
| 121 | + r = uv_os_unsetenv(name2); |
| 122 | + ASSERT(r == 0); |
| 123 | + |
89 | 124 | return 0;
|
90 | 125 | }
|
0 commit comments