Skip to content

Commit 4cc2ad4

Browse files
cpetersomarijnh
authored andcommitted
---
yaml --- r: 14335 b: refs/heads/try c: 94fe501 h: refs/heads/master i: 14333: f104c09 14331: a22f373 14327: 3b7ae02 14319: 9efc0d0 14303: 60226e7 14271: 8bd3683 14207: f09eb4b 14079: 959e38f 13823: 7e58533 13311: b93da12 12287: 99c7fa5 v: v3
1 parent 62bd055 commit 4cc2ad4

File tree

2 files changed

+47
-10
lines changed

2 files changed

+47
-10
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5-
refs/heads/try: aec76d25152035878cb0b502e2b4dc1d637cff5b
5+
refs/heads/try: 94fe5011e2a242a30b9f2a538bc64fbacd36f619
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/try/src/libstd/generic_os.rs

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,21 +99,31 @@ fn setenv(n: str, v: str) {
9999
#[cfg(test)]
100100
mod tests {
101101

102+
fn make_rand_name() -> str {
103+
import rand;
104+
let rng: rand::rng = rand::mk_rng();
105+
let n = "TEST" + rng.gen_str(10u);
106+
assert option::is_none(getenv(n));
107+
n
108+
}
109+
102110
#[test]
103111
#[ignore(reason = "fails periodically on mac")]
104112
fn test_setenv() {
105-
// NB: Each test of setenv needs to use different variable names or
106-
// the tests will not be threadsafe
107-
setenv("NAME1", "VALUE");
108-
assert (getenv("NAME1") == option::some("VALUE"));
113+
let n = make_rand_name();
114+
setenv(n, "VALUE");
115+
assert getenv(n) == option::some("VALUE");
109116
}
110117

111118
#[test]
112119
#[ignore(reason = "fails periodically on mac")]
113120
fn test_setenv_overwrite() {
114-
setenv("NAME2", "1");
115-
setenv("NAME2", "2");
116-
assert (getenv("NAME2") == option::some("2"));
121+
let n = make_rand_name();
122+
setenv(n, "1");
123+
setenv(n, "2");
124+
assert getenv(n) == option::some("2");
125+
setenv(n, "");
126+
assert getenv(n) == option::some("");
117127
}
118128

119129
// Windows GetEnvironmentVariable requires some extra work to make sure
@@ -124,9 +134,10 @@ mod tests {
124134
let s = "";
125135
let i = 0;
126136
while i < 100 { s += "aaaaaaaaaa"; i += 1; }
127-
setenv("test_getenv_big", s);
137+
let n = make_rand_name();
138+
setenv(n, s);
128139
log(debug, s);
129-
assert (getenv("test_getenv_big") == option::some(s));
140+
assert getenv(n) == option::some(s);
130141
}
131142

132143
#[test]
@@ -143,6 +154,32 @@ mod tests {
143154
assert path[1] == ':' as u8;
144155
}
145156
}
157+
158+
#[test]
159+
fn test_env_getenv() {
160+
let e = env();
161+
assert vec::len(e) > 0u;
162+
for (n, v) in e {
163+
log(debug, n);
164+
let v2 = getenv(n);
165+
// MingW seems to set some funky environment variables like
166+
// "=C:=C:\MinGW\msys\1.0\bin" and "!::=::\" that are returned
167+
// from env() but not visible from getenv().
168+
assert option::is_none(v2) || v2 == option::some(v);
169+
}
170+
}
171+
172+
#[test]
173+
fn test_env_setenv() {
174+
let n = make_rand_name();
175+
176+
let e = env();
177+
setenv(n, "VALUE");
178+
assert !vec::contains(e, (n, "VALUE"));
179+
180+
e = env();
181+
assert vec::contains(e, (n, "VALUE"));
182+
}
146183
}
147184

148185
// Local Variables:

0 commit comments

Comments
 (0)