poldek: poldek/tests/Makefile.am, poldek/tests/httpd.py (REMOVED), ...
mis
mis at pld-linux.org
Sat Jun 23 21:07:24 CEST 2007
Author: mis Date: Sat Jun 23 19:07:24 2007 GMT
Module: poldek Tag: HEAD
---- Log message:
- we got the tests
---- Files affected:
poldek/poldek/tests:
Makefile.am (1.8 -> 1.9) , httpd.py (1.1 -> NONE) (REMOVED), test_patch.sh (1.1 -> NONE) (REMOVED), utest_mkidx.sh (1.2 -> NONE) (REMOVED)
poldek/poldek/tests/repo:
Bar-3.2-1.noarch.rpm (NONE -> 1.1) (NEW), Boo-3.2-1.noarch.rpm (NONE -> 1.1) (NEW), Foo-2.2-1.noarch.rpm (NONE -> 1.1) (NEW), bar-1.0-1.noarch.rpm (NONE -> 1.1) (NEW), bar-2.1-1.noarch.rpm (NONE -> 1.1) (NEW), bug-1.0-1.noarch.rpm (NONE -> 1.1) (NEW), buz-1.0-1.noarch.rpm (NONE -> 1.1) (NEW), h-1.0-1.noarch.rpm (NONE -> 1.1) (NEW), poldek.conf (1.1 -> NONE) (REMOVED)
poldek/poldek/tests/sh:
01-create-repo (NONE -> 1.1) (NEW), 02-up-repo (NONE -> 1.1) (NEW), 03-up-loop (NONE -> 1.1) (NEW)
poldek/poldek/tests/sh/lib:
repo-setup (1.1 -> 1.2) , setup (1.1 -> 1.2) , shunit2 (1.2 -> 1.3)
---- Diffs:
================================================================
Index: poldek/poldek/tests/Makefile.am
diff -u poldek/poldek/tests/Makefile.am:1.8 poldek/poldek/tests/Makefile.am:1.9
--- poldek/poldek/tests/Makefile.am:1.8 Fri Jun 22 12:28:20 2007
+++ poldek/poldek/tests/Makefile.am Sat Jun 23 21:07:19 2007
@@ -5,7 +5,8 @@
test_poldek_SOURCES = test_poldek.c test_match.c test_env.c \
test_pmdb.c test_op.c test_config.c test.h
-EXTRA_DIST = utest_mkidx.sh httpd.py test_patch.sh
+EXTRA_DIST = poldek_test_conf.conf sh repo
+
test_poldek_INCLUDES= @CHECK_CFLAGS@
test_poldek_LDADD = @CHECK_LIBS@ ../libpoldek_allsym.la ../vfile/libvfile.la
@@ -15,25 +16,27 @@
clean-local:
-rm -f *.tmp core *.o *.bak *~ *% *\# TAGS gmon.out \#*\# dupa*
+ -find sh -name \*~ | xargs -r rm
+check: poldek_test_conf.conf
+ $(MAKE) check-am
-runtests: poldek_test_conf.conf
- $(MAKE) check
- @echo; echo "Running *.sh tests"; \
- n=0; nfails=0; \
- for i in utest_*.sh; do \
- [ -f $$i ] || continue; \
- n=$$(expr $$n + 1); \
- echo " running $$i"; \
- sh $$i; \
- if [ $$? -ne 0 ]; then \
- nfails=$$(expr $$nfails + 1); \
- echo " $$i FAILED"; \
- else \
- echo " $$i PASSED"; \
- fi; \
- done; \
- echo "====================================="; \
- echo "$$n tests passed / $$nfails failed"; \
- echo "====================================="
+sheck:
+ @echo; echo "Running *.sh tests"; \
+ find sh -name \*~ | xargs -r rm; \
+ n=0; nok=0; \
+ for i in sh/[0-9][0-9]*; do \
+ [ -f $$i ] || continue; \
+ n=$$(expr $$n + 1); \
+ sh $$i -n 10; \
+ if [ $$? -eq 0 ]; then \
+ nok=$$(expr $$nok + 1); \
+ echo " ## $$i PASSED"; \
+ else \
+ echo " ## $$i FAILED"; \
+ fi; \
+ done; \
+ echo "====================================="; \
+ echo " Passed $$nok tests of total $$n"; \
+ echo "====================================="
================================================================
Index: poldek/poldek/tests/repo/Bar-3.2-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/repo/Boo-3.2-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/repo/Foo-2.2-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/repo/bar-1.0-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/repo/bar-2.1-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/repo/bug-1.0-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/repo/buz-1.0-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/repo/h-1.0-1.noarch.rpm
<<Binary file>>
================================================================
Index: poldek/poldek/tests/sh/01-create-repo
diff -u /dev/null poldek/poldek/tests/sh/01-create-repo:1.1
--- /dev/null Sat Jun 23 21:07:24 2007
+++ poldek/poldek/tests/sh/01-create-repo Sat Jun 23 21:07:19 2007
@@ -0,0 +1,161 @@
+#!/bin/sh
+# $Id$
+
+# --mkidx tests
+
+# Index creation use cases:
+Case_a="-s /foo => dir -> default type"
+Case_b="--st type -s /foo => type -> default type"
+Case_c="--st type /foo --mt type => type -> dtype"
+Case_d="-s /foo --mt dtype => dir -> dtype"
+Case_e="-s /foo --mt dtype,dtype2 => dir -> dtype"
+Case_f="-n foo => dir (or original type) -> foo's type"
+Case_g="-s /foo --mkidx=/tmp/bar.gz"
+Case_h="-n foo --mkidx=/tmp/bar.gz"
+
+
+. ./sh/lib/setup
+. ./sh/lib/repo-setup
+
+testCreateDefaultType()
+{
+ msgn $Case_a
+ $POLDEK_NOCONF -s $REPO --mkidx || fail "mkidx #1 failed"
+ die_if_empty_index "$REPO/packages.ndir.gz"
+
+ $POLDEK_NOCONF -s $REPO --mkidx=$TMPDIR || fail "mkidx #2 failed"
+ die_if_empty_index "$TMPDIR/packages.ndir.gz"
+ if ! diff -u $REPO/packages.ndir.md $TMPDIR/packages.ndir.md; then
+ fail "differ md's!"
+ fi
+}
+
+# b) --st type -s /foo => type -> default type
+# c) --st type /foo --mt type => type -> dtype
+testConvertRepos()
+{
+ $POLDEK_NOCONF -s $REPO --mkidx || fail "mkidx failed"
+ die_if_empty_index "$REPO/packages.ndir.gz"
+
+ rm -rf $TMPDIR/packages.*
+ cp $REPO/packages.ndir.* $TMPDIR || fail "cp failed"
+
+
+ # c) --st type /foo --mt type => type -> dtype
+ msgn "$Case_c"
+ $POLDEK_NOCONF --st pndir -s $TMPDIR --mkidx --mt=pdir || fail "$Case_c failed"
+ die_if_empty_index "$TMPDIR/packages.dir.gz"
+
+ # b) --st type -s /foo
+ msgn "$Case_b"
+ rm -f $TMPDIR/packages.ndir*
+ $POLDEK_NOCONF --st pdir -s $TMPDIR --mkidx || fail "$Case_b failed"
+ die_if_empty_index "$TMPDIR/packages.ndir.gz"
+}
+
+# d) -s /foo --mt dtype => dir -> dtype
+# e) -s /foo --mt dtype,dtype2 => dir -> dtype
+testSelectType()
+{
+ msgn "$Case_d"
+ $POLDEK_NOCONF -s $REPO --mkidx --mt pdir || fail "mkidx failed"
+ die_if_empty_index "$REPO/packages.dir.gz"
+
+ rm -rf $REPO/packages.*
+ $POLDEK_NOCONF -s $REPO --st dir --mkidx --mt pdir || fail "mkidx failed"
+ die_if_empty_index "$REPO/packages.dir.gz"
+
+ setUp
+
+ msgn "$Case_e"
+ $POLDEK_NOCONF -s $REPO --mkidx --mt pdir,pndir || fail "mkidx failed"
+ die_if_empty_index "$REPO/packages.ndir.gz"
+ die_if_empty_index "$REPO/packages.dir.gz"
+}
+
+poldek_n() {
+ $POLDEK_NOCONF -Osource1="repo-pndir,type=pndir $REPO" -Osource2="repo-pdir,type=pdir $REPO" $@
+}
+
+# f) -n foo => dir (or original type) -> foo's type
+testCreateByName()
+{
+ msgn "$Case_f"
+ poldek_n -n repo-pndir --mkidx || fail "mkidx failed"
+ die_if_empty_index "$REPO/packages.ndir.gz"
+
+ poldek_n -n repo-pdir --mkidx || fail "mkidx failed"
+ die_if_empty_index "$REPO/packages.dir.gz"
+
+ setUp
+
+ poldek_n -n repo-pndir -n repo-pdir --mkidx || fail "-n 1 -n 2 --mkidx failed"
+ die_if_empty_index "$REPO/packages.ndir.gz"
+ die_if_empty_index "$REPO/packages.dir.gz"
+}
+
+# g) -s /foo --mkidx=/tmp/bar.gz
+testNonDefaultName()
+{
+ msgn "$Case_g"
+ poldek="$POLDEK_NOCONF"
+
+ $poldek -s $REPO --mkidx=$TMPDIR || fail "mkidx #1 failed"
+ die_if_empty_index "$TMPDIR/packages.ndir.gz"
+
+ $poldek -s $REPO --mkidx=$TMPDIR/packages.foo.ndir.gz || fail "mkidx #2 failed"
+ die_if_empty_index "$TMPDIR/packages.foo.ndir.gz"
+
+ $poldek -s $REPO --mkidx=$TMP --mt pdir || fail "mkidx #4 failed"
+ die_if_empty_index "$TMP/packages.dir.gz"
+
+ $poldek -s $REPO --mkidx=$TMP/packages.bar.dir.gz --mt pdir || fail "mkidx #5 failed"
+ die_if_empty_index "$TMP/packages.bar.dir.gz"
+
+ $poldek --st pdir -s $TMPDIR/packages.bar.dir.gz \
+ --mkidx=$TMPDIR/packages.foo2.ndir.gz --mt pndir || fail "mkidx #6 failed"
+
+ die_if_empty_index "$TMP/packages.foo2.ndir.gz"
+
+ $poldek --st pndir -s $TMP/packages.foo2.ndir.gz \
+ --mkidx=$TMP/packages.foo3.ndir.gz --mt pndir || fail "mkidx #7 failed"
+ die_if_empty_index "$TMP/packages.foo3.ndir.gz"
+
+ setUp
+ $poldek -s $REPO --mkidx --mt pndir,pdir || fail "mkidx #8 failed"
+
+
+ poldek="$POLDEK_UP -Ovfile_retries=1"
+ $poldek --st pndir -s $REPOURL --mkidx=$TMPDIR fail "mkidx #9 failed"
+ die_if_empty_index "$TMPDIR/packages.ndir.gz"
+
+ $poldek --st pndir -s $REPOURL --mkidx=$TMPDIR --mt pdir || fail "mkidx #10 failed"
+ die_if_empty_index "$TMPDIR/packages.dir.gz"
+
+ $poldek --st pndir -s $REPOURL --mkidx=$TMPDIR/packages.foo.ndir.gz || fail "mkidx #11 failed"
+ die_if_empty_index "$TMPDIR/packages.foo.ndir.gz"
+
+ $poldek --st pndir -s $REPOURL --mkidx=$TMP/packages.bar.dir.gz --mt pdir || fail "mkidx #12 failed"
+ die_if_empty_index "$TMPDIR/packages.bar.dir.gz"
+}
+
+# h) -n foo --mkidx=/tmp/bar.gz
+testCreateFromRemoteRepos()
+{
+
+ msgn "$Case_h"
+ poldek_n -n repo-pdir --mkidx=$TMPDIR/packages.foo.ndir.gz --mt pndir ||
+ fail "mkidx #1 failed"
+ die_if_empty_index "$TMPDIR/packages.foo.ndir.gz"
+
+ poldek_n -n repo-pndir --mkidx=$TMPDIR/packages.foo2.ndir.gz --mt pndir ||
+ fail "mkidx #2 failed"
+
+ die_if_empty_index "$TMPDIR/packages.foo2.ndir.gz"
+
+ poldek_n -n repo-pdir --mkidx=$TMPDIR/packages.bar.dir.gz ||
+ fail "mkidx #3 failed"
+ die_if_empty_index "$TMPDIR/packages.bar.dir.gz"
+}
+
+. ./sh/lib/shunit2
\ No newline at end of file
================================================================
Index: poldek/poldek/tests/sh/02-up-repo
diff -u /dev/null poldek/poldek/tests/sh/02-up-repo:1.1
--- /dev/null Sat Jun 23 21:07:24 2007
+++ poldek/poldek/tests/sh/02-up-repo Sat Jun 23 21:07:19 2007
@@ -0,0 +1,70 @@
+#!/bin/sh
+# $Id$
+
+. ./sh/lib/setup
+. ./sh/lib/repo-setup
+
+mkidx() {
+ $POLDEK_NOCONF -s $REPO --mkidx --mt pndir || fail "mkidx failed"
+}
+
+up() {
+ $POLDEK_UP -Oautoupa=n -Osource="test,type=pndir $REPOURL" --up || fail "up failed"
+}
+
+testUpdate()
+{
+ rm -rf $REPO/*.rpm
+ # Create repo and generate some diffs
+ msg "\n## Creating empty index"
+ indexfile="$REPO/packages.ndir.gz"
+ mkidx
+ die_if_invalid_index $indexfile 0
+
+ msg "\n## up"
+ up
+
+ msg "\n## Changing repo #1"
+ sleep 1
+ add_package_to_repo
+ mkidx
+ die_if_invalid_index $indexfile 1
+ die_if_invalid_index "$REPO/packages.i/packages.ndir.diff.toc.gz" 1
+
+ msg "\n## up"
+ up
+
+ msg "\n## Changing repo #2"
+ sleep 1
+ remove_package_from_repo
+ mkidx
+ die_if_invalid_index $indexfile 0
+ die_if_invalid_index "$REPO/packages.i/packages.ndir.diff.toc.gz" 2
+
+ msg "\n## up"
+ up
+
+ msg "\n## Changing repo #3"
+ sleep 1
+ add_package_to_repo
+ add_package_to_repo
+ mkidx
+ die_if_invalid_index $indexfile 2
+ die_if_invalid_index "$REPO/packages.i/packages.ndir.diff.toc.gz" 3
+
+ msg "\n## up"
+ up
+
+ # <glen att pld-linux.org> report: <https://bugs.pld-linux.org/show_bug.cgi?id=28>
+ msg "\n## Reset repo"
+ sleep 1
+ rm -rf $REPO/packages.*
+ add_package_to_repo
+ mkidx
+ msg "\n## up"
+ up
+
+
+}
+
+. ./sh/lib/shunit2
\ No newline at end of file
================================================================
Index: poldek/poldek/tests/sh/03-up-loop
diff -u /dev/null poldek/poldek/tests/sh/03-up-loop:1.1
--- /dev/null Sat Jun 23 21:07:24 2007
+++ poldek/poldek/tests/sh/03-up-loop Sat Jun 23 21:07:19 2007
@@ -0,0 +1,49 @@
+#!/bin/sh
+# $Id$
+
+. ./sh/lib/setup
+. ./sh/lib/repo-setup
+
+mkidx() {
+ $POLDEK_NOCONF -s $REPO --mkidx --mt pndir || fail "mkidx failed"
+}
+
+up() {
+ $POLDEK_UP -Oautoupa=n -Osource="test,type=pndir $REPOURL" --up
+}
+
+testUpLoop()
+{
+ rm -rf $REPO/*.rpm
+ # Create repo and generate some diffs
+ msg "\n## Creating empty index"
+ indexfile="$REPO/packages.ndir.gz"
+ mkidx
+ die_if_invalid_index $indexfile 0
+
+ msg "\n## up"
+ up
+
+ nloop=0
+ maxloop=${MAXLOOP:-"60"}
+
+ while [ $nloop -lt $maxloop ]; do
+ msg "\n#### Iteration #${nloop}"
+ sleep 1
+ random_change_repo
+
+ npackages=$(ls $REPO/*.rpm 2>/dev/null | wc -l)
+ echo "#${nloop} repository contains $npackages package(s)"
+ mkidx
+
+ msgn " up"
+ up
+ if [ $? -ne 0 ]; then
+ fail "up #${nloop} failed"
+ nloop=$maxloop
+ fi
+ nloop=$(expr $nloop + 1)
+ done
+}
+
+. ./sh/lib/shunit2
\ No newline at end of file
================================================================
Index: poldek/poldek/tests/sh/lib/repo-setup
diff -u poldek/poldek/tests/sh/lib/repo-setup:1.1 poldek/poldek/tests/sh/lib/repo-setup:1.2
--- poldek/poldek/tests/sh/lib/repo-setup:1.1 Sat Jun 23 17:25:21 2007
+++ poldek/poldek/tests/sh/lib/repo-setup Sat Jun 23 21:07:19 2007
@@ -1,3 +1,4 @@
+#!/bin/sh
tearDown() {
[ -n "$REPO" ] && rm -rf $REPO/packages.*
@@ -13,10 +14,10 @@
POLDEK="$PWD/../cli/poldek $QUIET"
POLDEK_NOCONF="$POLDEK --noconf -Ovfile_retries=1"
- [ ! -d "repo" ] && fail "repo: no such directory"
- SOURCE_REPO="${PWD}/repo"
+ SOURCE_REPO=${SOURCE_REPO:-"${PWD}/repo"}
+ [ ! -d "$SOURCE_REPO" ] && fail "$SOURCE_REPO: no such directory"
- [ -z "$TMP" ] && TMP="${TMPDIR}"
+ TMP=${TMP:-"$TMPDIR"}
[ -z "$TMP" ] && TMP="${PWD}"
TMP="${TMP}/poldekTests"
TMPDIR="$TMP"
@@ -40,14 +41,22 @@
oneTimeTearDown() {
if echo $TMPDIR | grep -q poldekTest; then rm -rf $TMPDIR; fi
+ tmpdir=$(dirname $TMPDIR)
+ TMP="$tmpdir"
+ TMPDIR="$tmpdir"
}
+die_if_empty_index() {
+ die_if_invalid_index $1 ""
+}
+
die_if_invalid_index() {
anindex=$1
+ expected_packages=$2
[ -f $anindex ] || fail "$anindex not created"
if echo $anindex | grep -q "diff.toc"; then
- expected_lines=$2
+ expected_lines="$expected_packages"
lines=$(zcat $anindex | wc -l)
if [ "$lines" != "$expected_lines" ]; then
@@ -69,11 +78,16 @@
fi
if zgrep -q 'Contains 0 packages' $anindex; then
- expected_packages=$2
if [ "$expected_packages" != "0" ]; then
fail "empty $anindex"
fi
fi
+
+ if [ -n "$expected_packages" ]; then
+ if ! zgrep -q "Contains $expected_packages packages" $anindex; then
+ fail "$anindex: number of packages mismatch"
+ fi
+ fi
}
@@ -83,7 +97,7 @@
package=$(basename $p)
if [ ! -f "$REPO/$package" ]; then
- cp $p $REPO
+ ln -sf $p $REPO/$package
msg "Added $package"
return 0
fi
@@ -97,3 +111,43 @@
msg "Removed $(basename $package)"
}
+
+random_change_repo() {
+ to_add=$(perl -e '@s=(a..z, A..Z, 0..9); print $s[rand(@s)]')
+ to_del=$(perl -e '@s=(a..z, A..Z, 0..9); print $s[rand(@s)]')
+
+ while [ "$to_add" == "$to_del" ]; do
+ to_del=$(perl -e '@s=(a..z, A..Z, 0..9); print $s[rand(@s)]')
+ done
+
+ #echo "- adding $to_add\*, removing $to_del\*";
+
+ nadded=0
+ nremoved=0
+
+ for i in $SOURCE_REPO/${to_add}*.rpm; do
+ bn=$(basename $i);
+
+ [ ! -f $i ] && continue;
+ [ -f $REPO/$bn ] && continue;
+
+ nadded=$(expr $nadded + 1)
+ msg " - add $bn"
+ ln -sf $i $REPO/$bn
+ done
+
+ for i in $REPO/${to_del}*.rpm; do
+ bn=$(basename $i);
+
+ [ ! -f $i ] && continue
+ msg " - rm $bn"
+ rm -f $i
+ nremoved=$(expr $nremoved + 1)
+ done
+
+
+ nchanges=$(expr $nadded + $nremoved)
+ [ "$nchanges" = "0" ] && random_change_repo
+
+ #msg "Added $nadded and $nremoved removed"
+}
\ No newline at end of file
================================================================
Index: poldek/poldek/tests/sh/lib/setup
diff -u poldek/poldek/tests/sh/lib/setup:1.1 poldek/poldek/tests/sh/lib/setup:1.2
--- poldek/poldek/tests/sh/lib/setup:1.1 Sat Jun 23 17:25:21 2007
+++ poldek/poldek/tests/sh/lib/setup Sat Jun 23 21:07:19 2007
@@ -1,7 +1,5 @@
+#!/bin/sh
#
-#
-
-[ -z "$QUIET" ] && QUIET="-q"
msg() {
[ "$QUIET" != "-q" ] && echo -e $@
@@ -10,3 +8,36 @@
msgn() {
msg "\n## $@"
}
+
+QUIET=${QUIET:-"-q"}
+POLDEK_TESTING=1 # prevent diff.toc vacuuming
+export POLDEK_TESTING
+
+MAXLOOP=60
+VERBOSE=""
+
+while test $# -gt 0 ; do
+ case "${1}" in
+ --source-repo)
+ shift; SOURCE_REPO="${1}"; shift ;;
+
+ -v)
+ shift; VERBOSE="$VERBOSE -v";;
+
+ -n) shift; MAXLOOP="${1}"; shift ;;
+
+ -h)
+ echo "Usage: $(basename $0) [--source-repo REPO] [-v] [-n NUM]"
+ echo ' --source-repo - source (read-only) repository for *-repo tests'
+ echo " -v - be verbose"
+ echo ' -n NUM - do NUM iteration in *-loop tests'
+ exit 0; shift ;;
+
+ *)
+ echo "unknown option ${1}; try -h"; exit 1;
+ esac
+done
+[ -n "$VERBOSE" ] && QUIET="$VERBOSE"
+
+
+
================================================================
Index: poldek/poldek/tests/sh/lib/shunit2
diff -u poldek/poldek/tests/sh/lib/shunit2:1.2 poldek/poldek/tests/sh/lib/shunit2:1.3
--- poldek/poldek/tests/sh/lib/shunit2:1.2 Sat Jun 23 20:28:56 2007
+++ poldek/poldek/tests/sh/lib/shunit2 Sat Jun 23 21:07:19 2007
@@ -698,6 +698,7 @@
echo '#'
echo '# Performing tests'
echo '#'
+
for _su_func in ${__shunit_suite}; do
# disable skipping
endSkipping
@@ -870,7 +871,6 @@
# execute the tests
_shunit_execSuite
-
# execute the oneTimeTearDown function (if it exists)
oneTimeTearDown
@@ -884,6 +884,10 @@
done
unset _shunit_shellFlag
+ec=0
+[ "${__shunit_testsFailed}" -gt 0 ] && ec=1
+
+exit $ec
#/**
# </s:shelldoc>
#*/
================================================================
---- CVS-web:
http://cvs.pld-linux.org/poldek/poldek/tests/Makefile.am?r1=1.8&r2=1.9&f=u
http://cvs.pld-linux.org/poldek/poldek/tests/sh/lib/repo-setup?r1=1.1&r2=1.2&f=u
http://cvs.pld-linux.org/poldek/poldek/tests/sh/lib/setup?r1=1.1&r2=1.2&f=u
http://cvs.pld-linux.org/poldek/poldek/tests/sh/lib/shunit2?r1=1.2&r2=1.3&f=u
More information about the pld-cvs-commit
mailing list