9 let slash = fs::path_sep();
10 log(error, fs::connect("a", "b"));
11 assert (fs::connect("a", "b") == "a" + slash + "b");
12 assert (fs::connect("a" + slash, "b") == "a" + slash + "b");
17 fn test_list_dir_no_invalid_memory_access() { fs::list_dir("."); }
21 let dirs = fs::list_dir(".");
22 // Just assuming that we've got some contents in the current directory
23 assert (vec::len(dirs) > 0u);
25 for dir in dirs { log(debug, dir); }
30 assert (fs::path_is_dir("."));
31 assert (!fs::path_is_dir("test/stdtest/fs.rs"));
36 assert (fs::path_exists("."));
37 assert (!fs::path_exists("test/nonexistent-bogus-path"));
50 let actual = fs::split("a" + ps() + "b");
51 let expected = ["a", "b"];
52 assert actual == expected;
57 let actual = fs::split("a" + aps() + "b");
58 let expected = ["a", "b"];
59 assert actual == expected;
64 let actual = fs::split(ps() + "a" + ps() + "b");
65 let expected = ["a", "b"];
66 assert actual == expected;
71 let actual = fs::split("a" + ps() + "b" + aps() + "c");
72 let expected = ["a", "b", "c"];
73 assert actual == expected;
78 let actual = fs::normalize("a/b/..");
80 assert actual == expected;
85 let actual = fs::normalize("/a/b/..");
87 assert actual == expected;
92 let actual = fs::normalize("a/../b");
94 assert actual == expected;
99 let actual = fs::normalize("/a/../b");
101 assert actual == expected;
106 let actual = fs::normalize("a/.");
108 assert actual == expected;
113 let actual = fs::normalize("a/./b/");
114 let expected = "a/b/";
115 assert actual == expected;
120 let actual = fs::normalize("a/..");
122 assert actual == expected;
127 let actual = fs::normalize("../../..");
128 let expected = "../../..";
129 assert actual == expected;
134 let actual = fs::normalize("a/b/../../..");
136 assert actual == expected;
141 let actual = fs::normalize("/a/b/c/../d/./../../e/");
142 let expected = "/a/e/";
144 assert actual == expected;
149 let actual = fs::normalize("/a/..");
151 assert actual == expected;
155 #[cfg(target_os = "win32")]
157 let actual = fs::normalize("C:/whatever");
158 let expected = "C:/whatever";
160 assert actual == expected;
164 #[cfg(target_os = "win32")]
165 fn path_is_absolute_win32() {
166 assert fs::path_is_absolute("C:/whatever");
170 fn splitext_empty() {
171 let (base, ext) = fs::splitext("");
178 let (base, ext) = fs::splitext("grum.exe");
179 assert base == "grum";
180 assert ext == ".exe";
184 fn splitext_noext() {
185 let (base, ext) = fs::splitext("grum");
186 assert base == "grum";
191 fn splitext_dotfile() {
192 let (base, ext) = fs::splitext(".grum");
193 assert base == ".grum";
198 fn splitext_path_ext() {
199 let (base, ext) = fs::splitext("oh/grum.exe");
200 assert base == "oh/grum";
201 assert ext == ".exe";
205 fn splitext_path_noext() {
206 let (base, ext) = fs::splitext("oh/grum");
207 assert base == "oh/grum";
212 fn splitext_dot_in_path() {
213 let (base, ext) = fs::splitext("oh.my/grum");
214 assert base == "oh.my/grum";
219 fn splitext_nobasename() {
220 let (base, ext) = fs::splitext("oh.my/");
221 assert base == "oh.my/";
226 #[cfg(target_os = "linux")]
227 #[cfg(target_os = "macos")]
228 #[cfg(target_os = "freebsd")]
230 import getenv = std::generic_os::getenv;
231 import setenv = std::generic_os::setenv;
233 let oldhome = getenv("HOME");
235 setenv("HOME", "/home/MountainView");
236 assert fs::homedir() == some("/home/MountainView");
239 assert fs::homedir() == none;
241 option::may(oldhome, {|s| setenv("HOME", s)});
245 #[cfg(target_os = "win32")]
247 import getenv = std::generic_os::getenv;
248 import setenv = std::generic_os::setenv;
250 let oldhome = getenv("HOME");
251 let olduserprofile = getenv("USERPROFILE");
254 setenv("USERPROFILE", "");
256 assert fs::homedir() == none;
258 setenv("HOME", "/home/MountainView");
259 assert fs::homedir() == some("/home/MountainView");
263 setenv("USERPROFILE", "/home/MountainView");
264 assert fs::homedir() == some("/home/MountainView");
266 setenv("USERPROFILE", "/home/MountainView");
267 assert fs::homedir() == some("/home/MountainView");
269 setenv("HOME", "/home/MountainView");
270 setenv("USERPROFILE", "/home/PaloAlto");
271 assert fs::homedir() == some("/home/MountainView");
273 option::may(oldhome, {|s| setenv("HOME", s)});
274 option::may(olduserprofile, {|s| setenv("USERPROFILE", s)});