diff options
-rw-r--r-- | Makefile.am | 6 | ||||
-rwxr-xr-x | pactest/vercmptest.sh | 77 |
2 files changed, 81 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am index dc085429..ea3b0e07 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,12 +11,14 @@ EXTRA_DIST = HACKING pkgdatadir = ${datadir}/${PACKAGE} dist_pkgdata_DATA = PKGBUILD.proto proto.install ChangeLog.proto -# run the pactest test suite -check-local: src/pacman +# run the pactest test suite and vercmp tests +check-local: pactest src/pacman src/util $(PYTHON) $(top_srcdir)/pactest/pactest.py --debug=1 \ --test $(top_srcdir)/pactest/tests/*.py \ -p $(top_builddir)/src/pacman/pacman rm -rf $(top_builddir)/root + $(SH) $(top_srcdir)/pactest/vercmptest.sh \ + $(top_builddir)/src/util/vercmp # create the pacman DB and cache directories upon install install-data-local: diff --git a/pactest/vercmptest.sh b/pactest/vercmptest.sh new file mode 100755 index 00000000..62a3e32c --- /dev/null +++ b/pactest/vercmptest.sh @@ -0,0 +1,77 @@ +#!/bin/sh +# +# vercmptest - a test suite for the vercmp/libalpm program +# +# Copyright (c) 2008 by Dan McGee <dan@archlinux.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# default binary if one was not specified as $1 +bin='vercmp' +# holds count of failed tests +failure=0 + +# args: +# fail ver1 ver2 ret expected +fail() { + echo "unexpected failure:" + echo " ver1: $1 ver2: $2 ret: $3 expected: $4" + failure=$(expr $failure + 1) +} + +# args: +# runtest ver1 ver2 expected +runtest() { + ret=$($bin $1 $2) + [ $ret -eq $3 ] || fail $1 $2 $ret $3 +} + +# use first arg as our binary if specified +[ -n "$1" ] && bin="$1" + +# BEGIN TESTS + +# all similar length, no pkgrel +runtest 1.5.0 1.5.0 0 +runtest 1.5.0 1.5.1 -1 +runtest 1.5.1 1.5.0 1 + +# mixed length +runtest 1.5 1.5.1 -1 +runtest 1.5.1 1.5 1 + +# with pkgrel, simple +runtest 1.5.0-1 1.5.0-1 0 +runtest 1.5.0-1 1.5.0-2 -1 +runtest 1.5.0-1 1.5.1-1 -1 +runtest 1.5.0-2 1.5.1-1 -1 + +# with pkgrel, mixed lengths +runtest 1.5-1 1.5.1-1 -1 +runtest 1.5-2 1.5.1-1 -1 +runtest 1.5-2 1.5.1-2 -1 + +# mixed pkgrel inclusion +runtest 1.5 1.5-1 0 +runtest 1.5-1 1.5 0 + +#END TESTS + +if [ $failure -eq 0 ]; then + echo "All tests successful" + exit 0 +fi + +echo "$failure failed tests" +exit 1 |