diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2015-09-15 17:40:36 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2015-09-15 17:42:42 -0400 |
commit | f2c9a7dbca9da36aa0cca8c4d0759e4d0406df91 (patch) | |
tree | ded3e1244806aa5567bb11cc0e54ee03eb2c4abb | |
parent | 72460c098f31c87deefc7daf9eeea3a4ad8224ab (diff) | |
download | bfs-f2c9a7dbca9da36aa0cca8c4d0759e4d0406df91.tar.xz |
Add a basic test suite.
-rw-r--r-- | Makefile | 7 | ||||
-rwxr-xr-x | tests.sh | 58 |
2 files changed, 64 insertions, 1 deletions
@@ -22,18 +22,23 @@ ALL_CPPFLAGS = $(LOCAL_CPPFLAGS) $(CPPFLAGS) ALL_CFLAGS = $(ALL_CPPFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) $(DEPFLAGS) ALL_LDFLAGS = $(ALL_CFLAGS) $(LDFLAGS) +all: bfs + bfs: bfs.o bftw.o color.o $(CC) $(ALL_LDFLAGS) $^ -o $@ %.o: %.c $(CC) $(ALL_CFLAGS) -c $< -o $@ +check: all + ./tests.sh + clean: $(RM) bfs *.o *.d release: CFLAGS := -O2 -flto -Wall -DNDEBUG release: bfs -.PHONY: clean release +.PHONY: all check clean release -include $(wildcard *.d) 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 |