blob: f7eb42862a7567c21302505908c8b3f6e2466304 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#!/bin/bash
# Like a mythical touch -p
function touchp() {
install -Dm644 /dev/null "$1"
}
# Creates a simple file+directory structure for tests
function basic_structure() {
touchp "$1/a"
touchp "$1/b"
touchp "$1/c/d"
touchp "$1/e/f"
mkdir -p "$1/g/h"
mkdir -p "$1/i"
}
# Checks for any (order-independent) differences between bfs and find
function find_diff() {
diff -u <(./bfs "$@" | sort) <(find "$@" | sort)
}
# Test cases
function test_0001() {
basic_structure "$1"
find_diff "$1"
}
function test_0002() {
basic_structure "$1"
find_diff "$1" -type d
}
function test_0003() {
basic_structure "$1"
find_diff "$1" -type f
}
function test_0004() {
basic_structure "$1"
find_diff "$1" -mindepth 1
}
function test_0005() {
basic_structure "$1"
find_diff "$1" -maxdepth 1
}
function test_0006() {
basic_structure "$1"
find_diff "$1" -mindepth 1 -depth
}
function test_0007() {
basic_structure "$1"
find_diff "$1" -maxdepth 1 -depth
}
for i in {1..7}; do
dir="$(mktemp -d "${TMPDIR:-/tmp}"/bfs.XXXXXXXXXX)"
test="test_$(printf '%04d' $i)"
"$test" "$dir"
status=$?
rm -rf "$dir"
if [ $status -ne 0 ]; then
echo "$test failed!" >&2
exit $status
fi
done
|