21#include "gdbsupport/selftest.h"
22#include "gdbsupport/environ.h"
23#include "diagnostics.h"
30 return set.find (key) != set.end ();
34namespace gdb_environ_tests {
45 SELF_CHECK (env.envp ()[0] == NULL);
46 SELF_CHECK (env.user_set_env ().size () == 0);
47 SELF_CHECK (env.user_unset_env ().size () == 0);
50 SELF_CHECK (env.get (
"PWD") == NULL);
59 gdb_environ env = gdb_environ::from_host_environ ();
62 SELF_CHECK (env.user_set_env ().size () == 0);
63 SELF_CHECK (env.user_unset_env ().size () == 0);
78 gdb_environ env = gdb_environ::from_host_environ ();
79 env = gdb_environ::from_host_environ ();
80 char **envp = env.envp ();
83 for (
size_t i = 0; envp[i] != NULL; ++i)
84 if (strcmp (envp[i],
"GDB_SELFTEST_ENVIRON=1") == 0)
86 SELF_CHECK (num_found == 1);
98 env.set (
"GDB_SELFTEST_ENVIRON_1",
"aaa");
99 SELF_CHECK (strcmp (env.get (
"GDB_SELFTEST_ENVIRON_1"),
"aaa") == 0);
101 SELF_CHECK (env.user_set_env ().size () == 1);
103 std::string (
"GDB_SELFTEST_ENVIRON_1=aaa")));
105 env.set (
"GDB_SELFTEST_ENVIRON_2",
"bbb");
106 SELF_CHECK (strcmp (env.get (
"GDB_SELFTEST_ENVIRON_2"),
"bbb") == 0);
108 env.unset (
"GDB_SELFTEST_ENVIRON_1");
109 SELF_CHECK (env.get (
"GDB_SELFTEST_ENVIRON_1") == NULL);
110 SELF_CHECK (strcmp (env.get (
"GDB_SELFTEST_ENVIRON_2"),
"bbb") == 0);
115 std::string (
"GDB_SELFTEST_ENVIRON_2=bbb")));
116 SELF_CHECK (env.user_set_env ().size () == 1);
126 env.set (
"PWD",
"test");
127 SELF_CHECK (strcmp (env.get (
"PWD"),
"test") == 0);
128 SELF_CHECK (
set_contains (env.user_set_env (), std::string (
"PWD=test")));
129 SELF_CHECK (env.user_unset_env ().size () == 0);
131 SELF_CHECK (env.envp ()[1] == NULL);
132 SELF_CHECK (env.user_set_env ().size () == 1);
134 SELF_CHECK (env.envp ()[0] == NULL);
135 SELF_CHECK (env.user_set_env ().size () == 0);
136 SELF_CHECK (env.user_unset_env ().size () == 1);
137 SELF_CHECK (
set_contains (env.user_unset_env (), std::string (
"PWD")));
152 SELF_CHECK (env.envp ()[0] == NULL);
153 SELF_CHECK (env.user_set_env ().size () == 0);
154 SELF_CHECK (env.user_unset_env ().size () == 0);
168 SELF_CHECK (strcmp (env.get (
"A"),
"1") == 0);
169 SELF_CHECK (
set_contains (env.user_set_env (), std::string (
"A=1")));
170 SELF_CHECK (env.user_set_env ().size () == 1);
172 env2 = std::move (env);
173 SELF_CHECK (env.envp ()[0] == NULL);
174 SELF_CHECK (strcmp (env2.get (
"A"),
"1") == 0);
175 SELF_CHECK (env2.envp ()[1] == NULL);
176 SELF_CHECK (env.user_set_env ().size () == 0);
177 SELF_CHECK (
set_contains (env2.user_set_env (), std::string (
"A=1")));
178 SELF_CHECK (env2.user_set_env ().size () == 1);
180 SELF_CHECK (strcmp (env.get (
"B"),
"2") == 0);
181 SELF_CHECK (env.envp ()[1] == NULL);
193 SELF_CHECK (strcmp (env.get (
"A"),
"1") == 0);
194 SELF_CHECK (
set_contains (env.user_set_env (), std::string (
"A=1")));
196 gdb_environ env2 = std::move (env);
197 SELF_CHECK (env.envp ()[0] == NULL);
198 SELF_CHECK (env.user_set_env ().size () == 0);
199 SELF_CHECK (strcmp (env2.get (
"A"),
"1") == 0);
200 SELF_CHECK (env2.envp ()[1] == NULL);
201 SELF_CHECK (
set_contains (env2.user_set_env (), std::string (
"A=1")));
202 SELF_CHECK (env2.user_set_env ().size () == 1);
205 SELF_CHECK (strcmp (env.get (
"B"),
"2") == 0);
206 SELF_CHECK (env.envp ()[1] == NULL);
207 SELF_CHECK (
set_contains (env.user_set_env (), std::string (
"B=2")));
208 SELF_CHECK (env.user_set_env ().size () == 1);
220 SELF_CHECK (strcmp (env.get (
"A"),
"1") == 0);
221 SELF_CHECK (
set_contains (env.user_set_env (), std::string (
"A=1")));
222 SELF_CHECK (env.user_set_env ().size () == 1);
227 DIAGNOSTIC_IGNORE_SELF_MOVE
228 env = std::move (env);
231 SELF_CHECK (strcmp (env.get (
"A"),
"1") == 0);
232 SELF_CHECK (strcmp (env.envp ()[0],
"A=1") == 0);
233 SELF_CHECK (env.envp ()[1] == NULL);
234 SELF_CHECK (
set_contains (env.user_set_env (), std::string (
"A=1")));
235 SELF_CHECK (env.user_set_env ().size () == 1);
243 gdb_environ env = gdb_environ::from_host_environ ();
246 SELF_CHECK (env.get (
"GDB_SELFTEST_ENVIRON") != NULL);
249 env.set (
"GDB_SELFTEST_ENVIRON",
"test");
250 SELF_CHECK (strcmp (env.get (
"GDB_SELFTEST_ENVIRON"),
"test") == 0);
251 SELF_CHECK (env.user_set_env ().size () == 1);
252 SELF_CHECK (env.user_unset_env ().size () == 0);
256 env.unset (
"GDB_SELFTEST_ENVIRON");
257 SELF_CHECK (env.get (
"GDB_SELFTEST_ENVIRON") == NULL);
258 SELF_CHECK (env.user_set_env ().size () == 0);
259 SELF_CHECK (env.user_unset_env ().size () == 1);
261 std::string (
"GDB_SELFTEST_ENVIRON")));
264 env.set (
"GDB_SELFTEST_ENVIRON",
"1");
265 SELF_CHECK (strcmp (env.get (
"GDB_SELFTEST_ENVIRON"),
"1") == 0);
272 if (setenv (
"GDB_SELFTEST_ENVIRON",
"1", 1) != 0)
273 error (_(
"Could not set environment variable for testing."));
288 unsetenv (
"GDB_SELFTEST_ENVIRON");
305 selftests::register_test (
"gdb_environ",
static const char gdb_selftest_env_var[]
void _initialize_environ_selftests()
static bool set_contains(const std::set< std::string > &set, std::string key)
static void test_self_move()
static void test_init_from_host_environ()
static void test_std_move()
static void test_set_unset_reset()
static void test_vector_initialization()
static void test_reinit_from_host_environ()
static void test_unset_set_empty_vector()
static void test_move_constructor()
static void test_vector_clear()
static void test_set_A_unset_B_unset_A_cannot_find_A_can_find_B()