1 | #!/bin/sh
|
2 |
|
3 | set -e
|
4 |
|
5 | cd "$(realpath "$(dirname "$0")")"
|
6 | BASE="$PWD/../.."
|
7 | export PYTHONPATH="$BASE:$BASE/vendor"
|
8 |
|
9 | lorem_ipsum() {
|
10 | echo "Lorem ipsum dolor sit amet, consectetur adipisici elit"
|
11 | }
|
12 | setup_testdir() (
|
13 | mkdir -p "$1"
|
14 | cd "$1"
|
15 |
|
16 | touch emptyfile.txt
|
17 | ln -s emptyfile.txt softlink.ln
|
18 | ln emptyfile.txt hardlink.ln
|
19 |
|
20 | mkdir dir_a dir_b dir_c
|
21 |
|
22 | for d in ./dir_*
|
23 | do
|
24 | for i in $(seq 4)
|
25 | do lorem_ipsum >"${d}/plainfile_${i}.txt"
|
26 | done
|
27 | done
|
28 |
|
29 | mkdir dir_p
|
30 | for p in R W X RW RX WX RWX
|
31 | do touch dir_p/$p
|
32 | done
|
33 | for f in ./dir_p/*
|
34 | do
|
35 | chmod 000 "$f"
|
36 | case $f in
|
37 | */*X*) chmod +x "$f"
|
38 | esac
|
39 | case $f in
|
40 | */*W*) chmod +w "$f"
|
41 | esac
|
42 | case $f in
|
43 | */*R*) chmod +r "$f"
|
44 | esac
|
45 | done
|
46 | )
|
47 |
|
48 | testdir="_tmp/find-testdir"
|
49 | test -d "$testdir" || setup_testdir "$testdir"
|
50 |
|
51 | if [ $# -eq 0 ]
|
52 | then set -- "$PWD"/testdata/*
|
53 | fi
|
54 |
|
55 | eval 'find_py() (' "cd $PWD/../..;" "$(realpath ./find.py)" '"$@";' ')'
|
56 |
|
57 | set +e
|
58 |
|
59 | for test
|
60 | do
|
61 | stdout="_tmp/$(basename "$test")_stdout"
|
62 | stderr="_tmp/$(basename "$test")_stderr"
|
63 | eval find "$(realpath "$testdir")" $(cat "$test") 2>/dev/null | sort >"${stdout}_expected" &
|
64 | eval find_py "$(realpath "$testdir")" $(cat "$test") 2>"$stderr"| sort >"${stdout}_actual"
|
65 | rc_actual=$?
|
66 | wait %1
|
67 | rc_expected=$?
|
68 | if ! cmp -s "${stdout}_expected" "${stdout}_actual"
|
69 | then
|
70 | echo "!!! $(basename "$test") failed: files differ"
|
71 | echo "--- EXPECTED ---"
|
72 | cat "${stdout}_expected"
|
73 | echo "---- ACTUAL ----"
|
74 | cat "${stdout}_actual"
|
75 | echo "----------------"
|
76 | cat "$stderr"
|
77 | elif [ $rc_expected != $rc_actual ]
|
78 | then
|
79 | echo "!!! $(basename "$test") failed: rcs differ"
|
80 | echo "EXPECTED=$rc_expected ACTUAL=$rc_actual"
|
81 | else
|
82 | echo " $(basename "$test") ok"
|
83 | fi
|
84 | done
|