mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 07:48:50 -05:00
Add a test harness for new pacsort command
Note that this is meant to exercise pacsort more than the underlying version comparsion; that is better left to the standalone vercmptest.sh test script. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
1d37c19e04
commit
d9f9b87d3f
@ -25,6 +25,8 @@ check-local: test/pacman test/util src/pacman src/util
|
||||
$(PYTHON) $(top_srcdir)/test/pacman/pactest.py --debug=1 \
|
||||
--test $(top_srcdir)/test/pacman/tests/*.py \
|
||||
-p $(top_builddir)/src/pacman/pacman
|
||||
$(SH) $(top_srcdir)/test/util/pacsorttest.sh \
|
||||
$(top_builddir)/src/util/pacsort
|
||||
$(SH) $(top_srcdir)/test/util/vercmptest.sh \
|
||||
$(top_builddir)/src/util/vercmp
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
check_SCRIPTS = \
|
||||
pacsorttest.sh \
|
||||
vercmptest.sh
|
||||
|
||||
noinst_SCRIPTS = $(check_SCRIPTS)
|
||||
|
103
test/util/pacsorttest.sh
Executable file
103
test/util/pacsorttest.sh
Executable file
@ -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
|
Loading…
Reference in New Issue
Block a user