From f2c9a7dbca9da36aa0cca8c4d0759e4d0406df91 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 15 Sep 2015 17:40:36 -0400 Subject: Add a basic test suite. --- Makefile | 7 ++++++- tests.sh | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100755 tests.sh diff --git a/Makefile b/Makefile index f7a70f7..4ac5e6e 100644 --- a/Makefile +++ b/Makefile @@ -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 -- cgit v1.2.3