summaryrefslogtreecommitdiffstats
path: root/tests.sh
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