From 0757a50c31eb5e01db2bf80c9f56d07d9e2e7177 Mon Sep 17 00:00:00 2001 From: sharkdp Date: Wed, 24 May 2017 22:16:55 +0200 Subject: [PATCH] Add more unit tests, search directories and symlinks too --- src/main.rs | 4 +- tests/test.sh | 149 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 96 insertions(+), 57 deletions(-) diff --git a/src/main.rs b/src/main.rs index 28bc685..e989f81 100644 --- a/src/main.rs +++ b/src/main.rs @@ -116,8 +116,6 @@ fn scan(root: &Path, pattern: &Regex, config: &FdOptions) { if config.search_full_path { path_rel.to_str() } else { - if !path_rel.is_file() { continue } - path_rel.file_name() .and_then(OsStr::to_str) }; @@ -198,7 +196,7 @@ fn main() { opts.optflag("s", "sensitive", "case-sensitive search (default: smart case)"); opts.optflag("p", "full-path", - "search full path (default: filename only)"); + "search full path (default: file-/dirname only)"); opts.optflag("H", "hidden", "search hidden files/directories"); opts.optflag("I", "no-ignore", diff --git a/tests/test.sh b/tests/test.sh index fc6d564..e57ed8e 100644 --- a/tests/test.sh +++ b/tests/test.sh @@ -40,7 +40,7 @@ expect() { diff -C3 --label expected --label actual --color \ "$tmp_expected" "$tmp_output" || true - # exit 1 + exit 1 fi } @@ -52,84 +52,125 @@ cd "$root" mkdir -p one/two/three -touch a.cpp -touch one/b.cpp -touch one/two/c.cpp -touch one/two/C.cpp -touch one/two/three/d.cpp -touch ignored.cpp - -touch .hidden.cpp - -echo "ignored.cpp" > .gitignore - +touch a.foo +touch one/b.foo +touch one/two/c.foo +touch one/two/C.Foo +touch one/two/three/d.foo +mkdir one/two/three/directory_foo +touch ignored.foo +touch .hidden.foo ln -s one/two symlink +echo "ignored.foo" > .gitignore + # Run the tests suite "Simple tests" -expect "a.cpp" a.cpp -expect "one/b.cpp" b.cpp -expect "one/two/three/d.cpp" d.cpp -expect "a.cpp -one/b.cpp -one/two/c.cpp -one/two/C.cpp -one/two/three/d.cpp" cpp +expect "a.foo" a.foo +expect "one/b.foo" b.foo +expect "one/two/three/d.foo" d.foo +expect "a.foo +one/b.foo +one/two/c.foo +one/two/C.Foo +one/two/three/d.foo +one/two/three/directory_foo" foo +expect "a.foo +one +one/b.foo +one/two +one/two/c.foo +one/two/C.Foo +one/two/three +one/two/three/d.foo +one/two/three/directory_foo +symlink" # run 'fd' without arguments + + +suite "Regex searches" +expect "a.foo +one/b.foo +one/two/c.foo +one/two/C.Foo" '[a-c].foo' +expect "a.foo +one/b.foo +one/two/c.foo" --sensitive '[a-c].foo' + suite "Smart case" -expect "one/two/c.cpp -one/two/C.cpp" c.cpp -expect "one/two/C.cpp" C.cpp +expect "one/two/c.foo +one/two/C.Foo" c.foo +expect "one/two/C.Foo" C.Foo +expect "one/two/C.Foo" Foo suite "Case-sensitivity (--sensitive)" -expect "one/two/C.cpp" --sensitive C.cpp +expect "one/two/c.foo" --sensitive c.foo +expect "one/two/C.Foo" --sensitive C.Foo + + +suite "Full path search (--full-path)" +expect "one/two/three/d.foo +one/two/three/directory_foo" --full-path 'three.*foo' +expect "a.foo" --full-path '^a\.foo$' suite "Hidden files (--hidden)" -expect "a.cpp -.hidden.cpp -one/b.cpp -one/two/c.cpp -one/two/C.cpp -one/two/three/d.cpp" --hidden cpp +expect "a.foo +.hidden.foo +one/b.foo +one/two/c.foo +one/two/C.Foo +one/two/three/d.foo +one/two/three/directory_foo" --hidden foo suite "Ignored files (--no-ignore)" -expect "a.cpp -ignored.cpp -one/b.cpp -one/two/c.cpp -one/two/C.cpp -one/two/three/d.cpp" --no-ignore cpp +expect "a.foo +ignored.foo +one/b.foo +one/two/c.foo +one/two/C.Foo +one/two/three/d.foo +one/two/three/directory_foo" --no-ignore foo -expect "a.cpp -.hidden.cpp -ignored.cpp -one/b.cpp -one/two/c.cpp -one/two/C.cpp -one/two/three/d.cpp" --hidden --no-ignore cpp +expect "a.foo +.hidden.foo +ignored.foo +one/b.foo +one/two/c.foo +one/two/C.Foo +one/two/three/d.foo +one/two/three/directory_foo" --hidden --no-ignore foo suite "Symlinks (--follow)" -expect "one/two/c.cpp -one/two/C.cpp -symlink/c.cpp -symlink/C.cpp" --follow c.cpp +expect "one/two/c.foo +one/two/C.Foo +symlink/c.foo +symlink/C.Foo" --follow c.foo suite "Maximum depth (--max-depth)" -expect "a.cpp -one/b.cpp -one/two/c.cpp -one/two/C.cpp" --max-depth 3 -expect "a.cpp -one/b.cpp" --max-depth 2 -expect "a.cpp" --max-depth 1 +expect "a.foo +one +one/b.foo +one/two +one/two/c.foo +one/two/C.Foo +one/two/three +symlink" --max-depth 3 +expect "a.foo +one +one/b.foo +one/two +symlink" --max-depth 2 +expect "a.foo +one +symlink" --max-depth 1 # All done echo