index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | test/util/Makefile.am | 1 | ||||
-rwxr-xr-x | test/util/pacsorttest.sh | 103 | ||||
-rwxr-xr-x | test/util/vercmptest.sh | 20 |
diff --git a/test/util/Makefile.am b/test/util/Makefile.am index 6e59d8e9..5839f37e 100644 --- a/test/util/Makefile.am +++ b/test/util/Makefile.am @@ -1,4 +1,5 @@ check_SCRIPTS = \ + pacsorttest.sh \ vercmptest.sh noinst_SCRIPTS = $(check_SCRIPTS) diff --git a/test/util/pacsorttest.sh b/test/util/pacsorttest.sh new file mode 100755 index 00000000..ff82a53f --- /dev/null +++ b/test/util/pacsorttest.sh @@ -0,0 +1,103 @@ +#!/bin/bash +# +# pacsorttest - a test suite for pacsort +# +# Copyright (c) 2011 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='pacsort' +# holds counts of tests +total=0 +failure=0 + +# args: +# runtest input expected test_description optional_opts +runtest() { + # run the test + diff -u <(printf "$1" | $bin $4) <(printf "$2") + if [[ $? -ne 0 ]]; then + echo "FAILURE: $3" + ((failure++)) + fi + ((total++)) +} + +# use first arg as our binary if specified +[[ -n "$1" ]] && bin="$1" + +if ! type -p "$bin"; then + echo "pacsort binary ($bin) could not be located" + exit 1 +fi + +echo "Beginning pacsort tests" + +# BEGIN TESTS + +in="1\n2\n3\n4\n" +runtest $in $in "already ordered" + +in="4\n2\n3\n1\n" +ex="1\n2\n3\n4\n" +runtest $in $ex "easy reordering" + +in="1\n2\n3\n4" +ex="1\n2\n3\n4\n" +runtest $in $ex "add trailing newline" + +in="1\n2\n4\n3" +ex="1\n2\n3\n4\n" +runtest $in $ex "add trailing newline" + +in="1.0-1\n1.0\n1.0-2\n1.0\n" +runtest $in $in "stable sort" + +# generate some long input/expected for the next few tests +declare normal reverse names_normal names_reverse +for ((i=1; i<600; i++)); do + normal="${normal}${i}\n" + reverse="${reverse}$((600 - ${i}))\n" + fields="${fields}colA bogus$((600 - ${i})) ${i}\n" + fields_reverse="${fields_reverse}colA bogus${i} $((600 - ${i}))\n" + separator="${separator}colA|bogus$((600 - ${i}))|${i}\n" + separator_reverse="${separator_reverse}colA|bogus${i}|$((600 - ${i}))\n" +done + +runtest $normal $normal "really long input" +runtest $reverse $normal "really long input" +runtest $reverse $reverse "really long input, reversed" "-r" +runtest $normal $reverse "really long input, reversed" "-r" + +runtest "$fields" "$fields" "really long input, sort key" "-k3" +runtest "$fields_reverse" "$fields" "really long input, sort key" "-k3" +runtest "$fields_reverse" "$fields_reverse" "really long input, sort key, reversed" "-k 3 -r" +runtest "$fields" "$fields_reverse" "really long input, sort key, reversed" "-k 3 -r" + +runtest "$separator" "$separator" "really long input, sort key, separator" "-k3 -t|" +runtest "$separator_reverse" "$separator" "really long input, sort key, separator" "-k3 -t|" +runtest "$separator_reverse" "$separator_reverse" "really long input, sort key, separator, reversed" "-k 3 -t| -r" +runtest "$separator" "$separator_reverse" "really long input, sort key, separator, reversed" "-k 3 -t| -r" + +#END TESTS + +echo +if [[ $failure -eq 0 ]]; then + echo "All $total tests successful" + exit 0 +fi + +echo "$failure of $total tests failed" +exit 1 diff --git a/test/util/vercmptest.sh b/test/util/vercmptest.sh index 6b3869c5..54ede04b 100755 --- a/test/util/vercmptest.sh +++ b/test/util/vercmptest.sh @@ -36,7 +36,7 @@ pass() { fail() { echo "test: ver1: $1 ver2: $2 ret: $3 expected: $4" echo " ==> FAILURE" - failure=$(expr $failure + 1) + ((failure++)) } # args: @@ -45,24 +45,24 @@ runtest() { # run the test ret=$($bin $1 $2) func='pass' - [ $ret -eq $3 ] || func='fail' + [[ -n $ret && $ret -eq $3 ]] || func='fail' $func $1 $2 $ret $3 - total=$(expr $total + 1) + ((total++)) # and run its mirror case just to be sure reverse=0 - [ $3 -eq 1 ] && reverse=-1 - [ $3 -eq -1 ] && reverse=1 + [[ $3 -eq 1 ]] && reverse=-1 + [[ $3 -eq -1 ]] && reverse=1 ret=$($bin $2 $1) func='pass' - [ $ret -eq $reverse ] || func='fail' + [[ -n $ret && $ret -eq $reverse ]] || func='fail' $func $2 $1 $ret $reverse - total=$(expr $total + 1) + ((total++)) } # use first arg as our binary if specified -[ -n "$1" ] && bin="$1" +[[ -n "$1" ]] && bin="$1" -if [ ! $(type -p "$bin") ]; then +if ! type -p "$bin"; then echo "vercmp binary ($bin) could not be located" exit 1 fi @@ -140,7 +140,7 @@ runtest 1:1.1 1.1 1 #END TESTS echo -if [ $failure -eq 0 ]; then +if [[ $failure -eq 0 ]]; then echo "All $total tests successful" exit 0 fi |