diff options
author | Roy Marples <roy@marples.name> | 2008-07-03 12:07:46 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-07-03 12:07:46 +0000 |
commit | 2f5d2855ba5497106a3b3ca02c242fb490bb425b (patch) | |
tree | fcd14e149a664a2f9ea43ea7005c90f6f2bb2edd /src/test/units/is_older_than | |
parent | db9bf1858777abe21f9d91cbd25b79fd9054bd6c (diff) |
Add an is_older_than unit test, thanks to zzam
Diffstat (limited to 'src/test/units/is_older_than')
-rwxr-xr-x | src/test/units/is_older_than | 63 |
1 files changed, 63 insertions, 0 deletions
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 |