summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eval.c2
-rwxr-xr-xtests.sh10
-rw-r--r--tests/test_L_unique_depth.out3
-rw-r--r--tests/test_unique_depth.out19
4 files changed, 33 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index bb89401..341b289 100644
--- a/eval.c
+++ b/eval.c
@@ -1256,7 +1256,7 @@ static enum bftw_action cmdline_callback(struct BFTW *ftwbuf, void *ptr) {
goto done;
}
- if (cmdline->unique) {
+ if (cmdline->unique && ftwbuf->visit == BFTW_PRE) {
if (!eval_file_unique(&state, args->seen)) {
goto done;
}
diff --git a/tests.sh b/tests.sh
index f26e888..f7aaa8c 100755
--- a/tests.sh
+++ b/tests.sh
@@ -649,8 +649,10 @@ bfs_tests=(
test_type_multi
test_unique
+ test_unique_depth
test_L_unique
test_L_unique_loops
+ test_L_unique_depth
test_xtype_multi
test_xtype_reorder
@@ -1987,6 +1989,10 @@ function test_unique() {
bfs_diff links/{file,symlink,hardlink} -unique
}
+function test_unique_depth() {
+ bfs_diff basic -unique -depth
+}
+
function test_L_unique() {
bfs_diff -L links/{file,symlink,hardlink} -unique
}
@@ -1995,6 +2001,10 @@ function test_L_unique_loops() {
bfs_diff -L loops/deeply/nested -unique
}
+function test_L_unique_depth() {
+ bfs_diff -L loops/deeply/nested -unique -depth
+}
+
if [ -t 1 -a ! "$VERBOSE" ]; then
in_place=yes
fi
diff --git a/tests/test_L_unique_depth.out b/tests/test_L_unique_depth.out
new file mode 100644
index 0000000..dad0a98
--- /dev/null
+++ b/tests/test_L_unique_depth.out
@@ -0,0 +1,3 @@
+loops/deeply/nested
+loops/deeply/nested/dir
+loops/deeply/nested/loop
diff --git a/tests/test_unique_depth.out b/tests/test_unique_depth.out
new file mode 100644
index 0000000..bb3cd8d
--- /dev/null
+++ b/tests/test_unique_depth.out
@@ -0,0 +1,19 @@
+basic
+basic/a
+basic/b
+basic/c
+basic/e
+basic/g
+basic/i
+basic/j
+basic/k
+basic/l
+basic/c/d
+basic/e/f
+basic/g/h
+basic/j/foo
+basic/k/foo
+basic/l/foo
+basic/k/foo/bar
+basic/l/foo/bar
+basic/l/foo/bar/baz