summaryrefslogtreecommitdiffstats
path: root/tests.sh
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2015-09-15 17:40:36 -0400
committerTavian Barnes <tavianator@tavianator.com>2015-09-15 17:42:42 -0400
commitf2c9a7dbca9da36aa0cca8c4d0759e4d0406df91 (patch)
treeded3e1244806aa5567bb11cc0e54ee03eb2c4abb /tests.sh
parent72460c098f31c87deefc7daf9eeea3a4ad8224ab (diff)
downloadbfs-f2c9a7dbca9da36aa0cca8c4d0759e4d0406df91.tar.xz
Add a basic test suite.
Diffstat (limited to 'tests.sh')
-rwxr-xr-xtests.sh58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests.sh b/tests.sh
new file mode 100755
index 0000000..f7d16fd
--- /dev/null
+++ b/tests.sh
@@ -0,0 +1,58 @@
+#!/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
+}
+
+for i in {1..5}; do
+ dir="$(mktemp -d)"
+ test_$(printf '%04d' $i) "$dir"
+ status=$?
+ rm -rf "$dir"
+ if [ $status -ne 0 ]; then
+ exit $status
+ fi
+done