aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-07-03 12:07:46 +0000
committerRoy Marples <roy@marples.name>2008-07-03 12:07:46 +0000
commit2f5d2855ba5497106a3b3ca02c242fb490bb425b (patch)
treefcd14e149a664a2f9ea43ea7005c90f6f2bb2edd
parentdb9bf1858777abe21f9d91cbd25b79fd9054bd6c (diff)
Add an is_older_than unit test, thanks to zzam
-rwxr-xr-xsrc/test/runtests.sh11
-rwxr-xr-xsrc/test/units/is_older_than63
2 files changed, 74 insertions, 0 deletions
diff --git a/src/test/runtests.sh b/src/test/runtests.sh
index 01e4dd8f..40fe1511 100755
--- a/src/test/runtests.sh
+++ b/src/test/runtests.sh
@@ -66,4 +66,15 @@ syms=$(diff -u librc.funcs.hidden.list librc.funcs.hidden.out | sed -n '/^+[^+]/
eend $? "Missing hidden defs:"$'\n'"${syms}"
ret=$(($ret + $?))
+einfo "Running unit tests"
+eindent
+cd units
+for u in *; do
+ [ -x "${u}" -a -f "${u}" ] || continue
+ ebegin "${u}"
+ ./"${u}"
+ eend $?
+ ret=$(($ret + $?))
+done
+
exit ${ret}
diff --git a/src/test/units/is_older_than b/src/test/units/is_older_than
new file mode 100755
index 00000000..8c6d23aa
--- /dev/null
+++ b/src/test/units/is_older_than
@@ -0,0 +1,63 @@
+#!/bin/sh
+# unit test for is_older_than code of baselayout (2008/06/19)
+# Author: Matthias Schwarzott <zzam@gentoo.org>
+
+RCDIR=../../rc
+TMPDIR=tmp-"$(basename "$0")"
+
+# bool is_older_than(reference, files/dirs to check)
+#
+# return 0 if any of the files/dirs are newer than
+# the reference file
+#
+# EXAMPLE: if is_older_than a.out *.o ; then ...
+is_older_than() {
+ local x= ref="$1"
+ shift
+
+ for x in; do
+ [ "${x}" -nt "${ref}" ] && return 0
+ [ -d "${x}" ] && is_older_than "${ref}" "${x}"/* && return 0
+ done
+ return 1
+}
+
+rm -rf "${TMPDIR}"
+mkdir "${TMPDIR}"
+ln -s ../"${RCDIR}"/rc "${TMPDIR}"/is_older_than
+
+do_test() {
+ local r1= r2=
+
+ is_older_than "$@"
+ r1=$?
+ ./"${TMPDIR}"/is_older_than "$@"
+ r2=$?
+
+ [ $r1 = $r2 ]
+}
+
+test_it() {
+ do_test "${TMPDIR}"/ref "${TMPDIR}"/dir1 "${TMPDIR}"/dir2 || exit 1
+}
+
+mkdir -p "${TMPDIR}"/dir1 "${TMPDIR}"/dir2
+touch "${TMPDIR}"/dir1/f1 "${TMPDIR}"/dir1/f2 "${TMPDIR}"/dir1/f3 "${TMPDIR}"/dir2/f1 "${TMPDIR}"/dir2/f2 "${TMPDIR}"/dir2/f3
+sleep 1
+touch "${TMPDIR}"/ref
+test_it
+
+sleep 1
+touch "${TMPDIR}"/dir1/f2
+test_it
+
+sleep 1
+touch "${TMPDIR}"/ref
+test_it
+
+sleep 1
+touch "${TMPDIR}"/dir2/f2
+test_it
+
+rm -rf "${TMPDIR}"
+exit 0