From: Jonathan McDowell Date: Sun, 24 Apr 2011 02:28:31 +0000 (-0700) Subject: Add basic testing infrastructure + initial tests X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/commitdiff_plain/2682946a339e46d392eebcb7597ef2073720df0d?ds=sidebyside Add basic testing infrastructure + initial tests Add some simple scripts to ensure key addition, deletion and retrieval are at least working ok. --- diff --git a/Makefile.in b/Makefile.in index 4ec39da..f294acd 100644 --- a/Makefile.in +++ b/Makefile.in @@ -48,6 +48,9 @@ OBJS = stats.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ) all: .depend $(PROGS) testparse maxpath sixdegrees splitkeys onak.conf \ $(BACKENDS) +test: onak $(BACKENDS) + @./runtests + install: $(PROGS) onak.conf $(BACKENDS) install -d $(DESTDIR)/@bindir@ install -d $(DESTDIR)/@libdir@/onak/backends diff --git a/runtests b/runtests new file mode 100755 index 0000000..968cfc0 --- /dev/null +++ b/runtests @@ -0,0 +1,41 @@ +#!/bin/sh +set -e + +fail=0 +total=0 + +if [ ! -e onak ]; then + echo "** onak binary doesn't exist, cannot run test suite" >&2 + exit 1 +fi + +if [ -e t/db/ ]; then + rm -rf t/db/ +fi + +for t in libkeydb_*.so; do + backend=${t##libkeydb_} + backend=${backend%%.so} + if [ "`echo t/$backend-*`" != "t/$backend-*" ]; then + echo "* testing $backend backend" + (sed -e "s;DIR;`pwd`;" t/test-in.conf ; \ + echo db_backend $backend) > t/test.conf + for t in t/$backend-*.t t/all-*.t; do + total=`expr $total + 1` + mkdir t/db/ + if ! $t $backend; then + echo "test $t failed" >&2 + fail=`expr $fail + 1` + fi + rm -rf t/db/ + done + rm t/test.conf + fi +done + +if [ "$fail" -gt 0 ]; then + echo "** failed $fail/$total tests" >&2 + exit 1 +else + echo "** all tests succeeded" +fi diff --git a/t/all-020-get.t b/t/all-020-get.t new file mode 100755 index 0000000..8adaa3f --- /dev/null +++ b/t/all-020-get.t @@ -0,0 +1,14 @@ +#!/bin/sh +# Check we can retrieve a key by keyid + +set -e + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +if ! ../onak -c test.conf get 0x2DA8B985 2> /dev/null | \ + grep -q -- '-----BEGIN PGP PUBLIC KEY BLOCK-----'; then + echo "* Did not correctly retrieve key by keyid." + exit 1 +fi + +exit 0 diff --git a/t/all-030-get-fail.t b/t/all-030-get-fail.t new file mode 100755 index 0000000..0db2b28 --- /dev/null +++ b/t/all-030-get-fail.t @@ -0,0 +1,14 @@ +#!/bin/sh +# Check retrieving a non existent keyid fails + +set -e + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +if ! ../onak -c test.conf get 0x12345678 2>&1 | \ + grep -q 'Key not found'; then + echo "* Did not correctly error on non-existent key" + exit 1 +fi + +exit 0 diff --git a/t/all-040-index-text.t b/t/all-040-index-text.t new file mode 100755 index 0000000..f5b1c14 --- /dev/null +++ b/t/all-040-index-text.t @@ -0,0 +1,20 @@ +#!/bin/sh +# Check we can index a key by some uid text + +set -e + +# Backends should really support this, but the file one is as simple as +# possible, so doesn't. Skip the test for it. +if [ "$1" = "file" ]; then + exit 0 +fi + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +if ! ../onak -c test.conf index noodles 2> /dev/null | \ + grep -q -- 'pub 4096R/2DA8B985 2008/06/03 Jonathan McDowell'; then + echo "* Did not correctly retrieve key by text" + exit 1 +fi + +exit 0 diff --git a/t/db4-000-add.t b/t/db4-000-add.t new file mode 100755 index 0000000..c69cabb --- /dev/null +++ b/t/db4-000-add.t @@ -0,0 +1,13 @@ +#!/bin/sh +# Check we can add a key successfully with the db4 backend. + +set -e + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +if [ ! -e db/worddb -o ! -e db/id32db -o ! -e db/keydb.0.db ]; then + echo Did not correctly add key using db4 backend. + exit 1 +fi + +exit 0 diff --git a/t/file-000-add.t b/t/file-000-add.t new file mode 100755 index 0000000..cd7a4c5 --- /dev/null +++ b/t/file-000-add.t @@ -0,0 +1,13 @@ +#!/bin/sh +# Check we can add a key successfully with the file backend. + +set -e + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +if [ ! -e db/0x2DA8B985 ]; then + echo Did not correctly add key using file backend. + exit 1 +fi + +exit 0 diff --git a/t/file-010-del.t b/t/file-010-del.t new file mode 100755 index 0000000..31acc5a --- /dev/null +++ b/t/file-010-del.t @@ -0,0 +1,14 @@ +#!/bin/sh +# Check we can delete a key successfully with the file backend. + +set -e + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +../onak -b -c test.conf delete 0x2DA8B985 +if [ -e db/0x2DA8B985 ]; then + echo "* Did not correctly delete key using file backend" + exit 1 +fi + +exit 0 diff --git a/t/fs-000-add.t b/t/fs-000-add.t new file mode 100755 index 0000000..c20231e --- /dev/null +++ b/t/fs-000-add.t @@ -0,0 +1,13 @@ +#!/bin/sh +# Check we can add a key successfully with the fs backend. + +set -e + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +if [ ! -e db/key/2D/A8/2DA8B985/94FA372B2DA8B985 ]; then + echo Did not correctly add key using fs backend. + exit 1 +fi + +exit 0 diff --git a/t/fs-010-del.t b/t/fs-010-del.t new file mode 100755 index 0000000..43fa7b0 --- /dev/null +++ b/t/fs-010-del.t @@ -0,0 +1,14 @@ +#!/bin/sh +# Check we can delete a key successfully with the fs backend. + +set -e + +cd t +../onak -b -c test.conf add < ../keys/noodles.key +../onak -b -c test.conf delete 0x2DA8B985 +if [ -e db/key/2D/A8/2DA8B985/94FA372B2DA8B985 ]; then + echo "* Did not correctly delete key using fs backend" + exit 1 +fi + +exit 0 diff --git a/t/test-in.conf b/t/test-in.conf new file mode 100644 index 0000000..b5309a0 --- /dev/null +++ b/t/test-in.conf @@ -0,0 +1,8 @@ +pks_bin_dir DIR +backends_dir DIR +db_dir DIR/t/db/ +logfile onak.log +loglevel 7 +use_keyd false +this_site pgp-public-keys@localhost +max_reply_keys 128