summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--tests/Makefile21
-rwxr-xr-xtests/scripts/gen-simple12
-rw-r--r--tests/scripts/makefile16
-rwxr-xr-xtests/scripts/run-xpass11
-rw-r--r--tests/sync/source.mk2
-rwxr-xr-xtests/sync/trivial15
7 files changed, 79 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index f2ad853..065528e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
client
server
+tests/reports
+tests/tests.mk
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..ed89598
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,21 @@
+check:
+ $(MAKE) -f scripts/makefile check
+
+.DEFAULT:
+ $(MAKE) -f scripts/makefile $<
+
+SOURCES != echo */source.mk
+DO != echo -n > tests.mk && rm -rf reports
+
+# basic tests that shouldn't cause the return code to be nonzero
+TESTS :=
+
+include $(SOURCES)
+
+DO != echo "$(TESTS)" | xargs ./scripts/gen-simple
+
+RM ?= rm
+
+.PHONY: clean
+clean:
+ $(RM) -rf reports
diff --git a/tests/scripts/gen-simple b/tests/scripts/gen-simple
new file mode 100755
index 0000000..3ce75f3
--- /dev/null
+++ b/tests/scripts/gen-simple
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+mkdir -p $(for d in "${@}"; do echo "$d"; done | uniq | sed "s|^|reports/|")
+
+for s in "${@}"
+do
+ echo ".PHONY: $s" >> tests.mk
+ echo "$s:" >> tests.mk
+ echo " ./scripts/run-xpass $s" >> tests.mk
+done
+
+echo "TESTS += " "${@}" >> tests.mk
diff --git a/tests/scripts/makefile b/tests/scripts/makefile
new file mode 100644
index 0000000..6354488
--- /dev/null
+++ b/tests/scripts/makefile
@@ -0,0 +1,16 @@
+.PHONY: all
+all: check
+
+TESTS :=
+include tests.mk
+
+.PHONY: check
+check: $(TESTS)
+ @cd reports; for d in $(TESTS) ; do \
+ if [ ! -f "$$d/OK" ]; then \
+ echo "BROKEN: $$d" ; \
+ elif [ "$$(tail -n1 $$d/OK)" != "OK" ]; then \
+ echo "FAIL: $$d" ; \
+ fi \
+ done
+ @echo "Done."
diff --git a/tests/scripts/run-xpass b/tests/scripts/run-xpass
new file mode 100755
index 0000000..d20c436
--- /dev/null
+++ b/tests/scripts/run-xpass
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+TEST="$1"
+OK="reports/$TEST/OK"
+LOG="reports/$TEST/log"
+
+if "./$1" > "$LOG" 2> "$LOG"; then
+ echo OK > "$OK"
+else
+ echo FAIL > "$OK"
+fi
diff --git a/tests/sync/source.mk b/tests/sync/source.mk
new file mode 100644
index 0000000..900af7e
--- /dev/null
+++ b/tests/sync/source.mk
@@ -0,0 +1,2 @@
+TESTS += \
+ sync/trivial \
diff --git a/tests/sync/trivial b/tests/sync/trivial
new file mode 100755
index 0000000..22207a6
--- /dev/null
+++ b/tests/sync/trivial
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+TEST="$0"
+OUT="reports/$TEST/stdout"
+ERR="reports/$TEST/stderr"
+
+../server -s - > "$OUT" 2> "$ERR" << EOF
+SYNC 20
+START = 10
+END = 20
+EOF
+
+grep -F 'From: urmum@amazon.com' "$OUT" > /dev/null