Skip to content

Commit 51ae302

Browse files
committed
Add std::fs::split
1 parent 0e5ea4d commit 51ae302

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

src/lib/fs.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,15 @@ fn make_absolute(p: path) -> path {
7676
if path_is_absolute(p) { ret p; } else { ret connect(getcwd(), p); }
7777
}
7878

79+
fn split(p: path) -> [path] {
80+
let split1 = str::split(p, os_fs::path_sep as u8);
81+
let split2 = [];
82+
for s in split1 {
83+
split2 += str::split(s, os_fs::alt_path_sep as u8);
84+
}
85+
ret split2;
86+
}
87+
7988
// Local Variables:
8089
// mode: rust;
8190
// fill-column: 78;

src/test/stdtest/fs.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,39 @@ fn file_is_dir() {
2828
assert (fs::file_is_dir("."));
2929
assert (!fs::file_is_dir("test/stdtest/fs.rs"));
3030
}
31+
32+
fn ps() -> str {
33+
fs::path_sep()
34+
}
35+
36+
fn aps() -> str {
37+
"/"
38+
}
39+
40+
#[test]
41+
fn split1() {
42+
let actual = fs::split("a" + ps() + "b");
43+
let expected = ["a", "b"];
44+
assert actual == expected;
45+
}
46+
47+
#[test]
48+
fn split2() {
49+
let actual = fs::split("a" + aps() + "b");
50+
let expected = ["a", "b"];
51+
assert actual == expected;
52+
}
53+
54+
#[test]
55+
fn split3() {
56+
let actual = fs::split(ps() + "a" + ps() + "b");
57+
let expected = ["a", "b"];
58+
assert actual == expected;
59+
}
60+
61+
#[test]
62+
fn split4() {
63+
let actual = fs::split("a" + ps() + "b" + aps() + "c");
64+
let expected = ["a", "b", "c"];
65+
assert actual == expected;
66+
}

0 commit comments

Comments
 (0)