summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSebastian Thiel <sthiel@thoughtworks.com>2019-06-02 18:05:13 +0530
committerSebastian Thiel <sthiel@thoughtworks.com>2019-06-02 18:05:13 +0530
commit00952c6aa7b585cd27712ab75fd854d8cec11fc4 (patch)
tree47876e59ea1a5819ac2b3e219eb061c9ef9afd20 /tests
parent16833be086fe7c15b10e902ae309533dba5382d9 (diff)
Add another failing test
Diffstat (limited to 'tests')
-rw-r--r--tests/fixtures/sample-02/a1
-rw-r--r--tests/fixtures/sample-02/b1
-rw-r--r--tests/fixtures/sample-02/dir/c1
-rw-r--r--tests/fixtures/sample-02/dir/d1
-rw-r--r--tests/fixtures/sample-02/dir/empty-dir/.gitkeep0
-rw-r--r--tests/fixtures/sample-02/dir/sub/e1
-rw-r--r--tests/interactive.rs108
7 files changed, 85 insertions, 28 deletions
diff --git a/tests/fixtures/sample-02/a b/tests/fixtures/sample-02/a
new file mode 100644
index 0000000..6385b6e
--- /dev/null
+++ b/tests/fixtures/sample-02/a
@@ -0,0 +1 @@
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file
diff --git a/tests/fixtures/sample-02/b b/tests/fixtures/sample-02/b
new file mode 100644
index 0000000..2e65efe
--- /dev/null
+++ b/tests/fixtures/sample-02/b
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/tests/fixtures/sample-02/dir/c b/tests/fixtures/sample-02/dir/c
new file mode 100644
index 0000000..a6c4069
--- /dev/null
+++ b/tests/fixtures/sample-02/dir/c
@@ -0,0 +1 @@
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file
diff --git a/tests/fixtures/sample-02/dir/d b/tests/fixtures/sample-02/dir/d
new file mode 100644
index 0000000..7ec9a4b
--- /dev/null
+++ b/tests/fixtures/sample-02/dir/d
@@ -0,0 +1 @@
+aa \ No newline at end of file
diff --git a/tests/fixtures/sample-02/dir/empty-dir/.gitkeep b/tests/fixtures/sample-02/dir/empty-dir/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/fixtures/sample-02/dir/empty-dir/.gitkeep
diff --git a/tests/fixtures/sample-02/dir/sub/e b/tests/fixtures/sample-02/dir/sub/e
new file mode 100644
index 0000000..15e3a1f
--- /dev/null
+++ b/tests/fixtures/sample-02/dir/sub/e
@@ -0,0 +1 @@
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file
diff --git a/tests/interactive.rs b/tests/interactive.rs
index 38c5952..62f3aef 100644
--- a/tests/interactive.rs
+++ b/tests/interactive.rs
@@ -13,7 +13,7 @@ mod app {
}
#[test]
- fn journey_with_single_path() -> Result<(), Error> {
+ fn it_can_handle_ending_traversal_reaching_top_but_skipping_levels() -> Result<(), Error> {
let (_, app) = initialized_app_and_terminal("sample-01")?;
let expected_tree = sample_01_tree();
@@ -25,6 +25,19 @@ mod app {
Ok(())
}
+ #[test]
+ fn it_can_handle_ending_traversal_without_reaching_the_top() -> Result<(), Error> {
+ let (_, app) = initialized_app_and_terminal("sample-02")?;
+ let expected_tree = sample_02_tree();
+
+ assert_eq!(
+ debug(app.tree),
+ debug(expected_tree),
+ "filesystem graph is stable and matches the directory structure"
+ );
+ Ok(())
+ }
+
fn initialized_app_and_terminal(
fixture_path: &str,
) -> Result<(Terminal<TestBackend>, TerminalApp), Error> {
@@ -47,43 +60,82 @@ mod app {
fn sample_01_tree() -> Tree {
let mut t = Tree::new();
- let mut add_node = |name, size, maybe_from_idx: Option<NodeIndex<GraphIndexType>>| {
- let n = t.add_node(EntryData {
- name: OsString::from(name),
- size,
- metadata_io_error: false,
- });
- if let Some(from) = maybe_from_idx {
- t.add_edge(from, n, ());
- }
- n
- };
- let root_size = 1259070;
- let r = add_node("", root_size, None);
{
- let s = add_node("sample-01", root_size, Some(r));
+ let mut add_node = make_add_node(&mut t);
+ let root_size = 1259070;
+ let r = add_node("", root_size, None);
{
- add_node(".hidden.666", 666, Some(s));
- add_node("a", 256, Some(s));
- add_node("b.empty", 0, Some(s));
- add_node("c.lnk", 1, Some(s));
- let d = add_node("dir", 1258024, Some(s));
+ let s = add_node("sample-01", root_size, Some(r));
{
- add_node("1000bytes", 1000, Some(d));
- add_node("dir-a.1mb", 1_000_000, Some(d));
- add_node("dir-a.kb", 1024, Some(d));
- let e = add_node("empty-dir", 0, Some(d));
+ add_node(".hidden.666", 666, Some(s));
+ add_node("a", 256, Some(s));
+ add_node("b.empty", 0, Some(s));
+ add_node("c.lnk", 1, Some(s));
+ let d = add_node("dir", 1258024, Some(s));
{
- add_node(".gitkeep", 0, Some(e));
+ add_node("1000bytes", 1000, Some(d));
+ add_node("dir-a.1mb", 1_000_000, Some(d));
+ add_node("dir-a.kb", 1024, Some(d));
+ let e = add_node("empty-dir", 0, Some(d));
+ {
+ add_node(".gitkeep", 0, Some(e));
+ }
+ let sub = add_node("sub", 256_000, Some(d));
+ {
+ add_node("dir-sub-a.256kb", 256_000, Some(sub));
+ }
}
- let sub = add_node("sub", 256_000, Some(d));
+ add_node("z123.b", 123, Some(s));
+ }
+ }
+ }
+ t
+ }
+ fn sample_02_tree() -> Tree {
+ let mut t = Tree::new();
+ {
+ let mut add_node = make_add_node(&mut t);
+ let root_size = 1540;
+ let r = add_node("", root_size, None);
+ {
+ let s = add_node("sample-02", root_size, Some(r));
+ {
+ add_node("a", 256, Some(s));
+ add_node("b", 1, Some(s));
+ let d = add_node("dir", 1283, Some(s));
{
- add_node("dir-sub-a.256kb", 256_000, Some(sub));
+ add_node("c", 257, Some(d));
+ add_node("d", 2, Some(d));
+ let e = add_node("empty-dir", 0, Some(d));
+ {
+ add_node(".gitkeep", 0, Some(e));
+ }
+ let sub = add_node("sub", 1024, Some(d));
+ {
+ add_node("e", 1024, Some(sub));
+ }
}
}
- add_node("z123.b", 123, Some(s));
}
}
t
}
+
+ fn make_add_node<'a>(
+ t: &'a mut Tree,
+ ) -> impl FnMut(&str, u64, Option<NodeIndex<GraphIndexType>>) -> NodeIndex<GraphIndexType> + 'a
+ {
+ move |name, size, maybe_from_idx| {
+ let n = t.add_node(EntryData {
+ name: OsString::from(name),
+ size,
+ metadata_io_error: false,
+ });
+ if let Some(from) = maybe_from_idx {
+ t.add_edge(from, n, ());
+ }
+ n
+ }
+ }
+
}