[pacman-dev] [PATCH 1/3] add vim modeline to test files
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> --- test/scripts/human_to_size_test.sh | 2 ++ test/scripts/parseopts_test.sh | 2 ++ test/util/pacsorttest.sh | 2 ++ test/util/vercmptest.sh | 2 ++ 4 files changed, 8 insertions(+) diff --git a/test/scripts/human_to_size_test.sh b/test/scripts/human_to_size_test.sh index dfa01f7..2dacfd1 100755 --- a/test/scripts/human_to_size_test.sh +++ b/test/scripts/human_to_size_test.sh @@ -80,3 +80,5 @@ parse_hts '1M' 1048576 parse_hts ' 1 G ' 1073741824 parse_hts '1Q' '' + +# vim: set noet: diff --git a/test/scripts/parseopts_test.sh b/test/scripts/parseopts_test.sh index 2c055b1..97679c4 100755 --- a/test/scripts/parseopts_test.sh +++ b/test/scripts/parseopts_test.sh @@ -140,3 +140,5 @@ parse '--force --' 2 --force # exact match on possible stem (opt has optarg) parse '--clean foo --' 3 --clean=foo + +# vim: set noet: diff --git a/test/util/pacsorttest.sh b/test/util/pacsorttest.sh index 49d6d8e..a29d8f1 100755 --- a/test/util/pacsorttest.sh +++ b/test/util/pacsorttest.sh @@ -133,3 +133,5 @@ fi echo "# $failure of $run tests failed" exit 1 + +# vim: set noet: diff --git a/test/util/vercmptest.sh b/test/util/vercmptest.sh index 9032cbf..ba279a7 100755 --- a/test/util/vercmptest.sh +++ b/test/util/vercmptest.sh @@ -151,3 +151,5 @@ fi echo "# $failure of $run tests failed" exit 1 + +# vim: set noet: -- 2.2.1
tap.sh is a reusable TAP library that handles test counting and provides useful diagnostic messages on test failures. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> --- I'm maintaining tap.sh outside of pacman (hence the MIT license) at https://github.com/andrewgregory/tap.sh Documentation is available there. I have no idea if EXTRA_DIST is the correct place to list tap.sh, but distcheck seems to work with it. Makefile.am | 2 +- test/scripts/human_to_size_test.sh | 39 ++------- test/scripts/parseopts_test.sh | 44 ++-------- test/tap.sh/tap.sh | 163 +++++++++++++++++++++++++++++++++++++ test/util/pacsorttest.sh | 36 ++------ test/util/vercmptest.sh | 55 ++----------- 6 files changed, 193 insertions(+), 146 deletions(-) create mode 100644 test/tap.sh/tap.sh diff --git a/Makefile.am b/Makefile.am index e9b3dfa..1a3a6a9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -13,7 +13,7 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-doc --disable-git-version # Some files automatically included, so they aren't specified below: # AUTHORS, COPYING, NEWS, README -EXTRA_DIST = HACKING +EXTRA_DIST = HACKING test/tap.sh/tap.sh # Sample makepkg prototype files pkgdatadir = ${datadir}/${PACKAGE} diff --git a/test/scripts/human_to_size_test.sh b/test/scripts/human_to_size_test.sh index 2dacfd1..c673526 100755 --- a/test/scripts/human_to_size_test.sh +++ b/test/scripts/human_to_size_test.sh @@ -1,53 +1,26 @@ #!/bin/bash -declare -i testcount=0 fail=0 pass=0 total=15 +source "$(dirname "$0")"/../tap.sh/tap.sh || exit 1 # source the library function lib=${1:-${PMTEST_SCRIPTLIB_DIR}human_to_size.sh} if [[ -z $lib || ! -f $lib ]]; then - printf "Bail out! human_to_size library (%s) could not be located\n" "${lib}" + tap_bail "human_to_size library (%s) could not be located" "${lib}" exit 1 fi . "$lib" if ! type -t human_to_size &>/dev/null; then - printf "Bail out! human_to_size function not found\n" + tap_bail "human_to_size function not found" exit 1 fi parse_hts() { - local input=$1 expected=$2 result - - (( ++testcount )) - - result=$(human_to_size "$1") - if [[ $result = "$expected" ]]; then - (( ++pass )) - printf "ok %d - %s\n" "$testcount" "$input" - else - (( ++fail )) - printf "not ok %d - %s\n" "$testcount" "$input" - printf '# [TEST %3s]: FAIL\n' "$testcount" - printf '# input: %s\n' "$input" - printf '# output: %s\n' "$result" - printf '# expected: %s\n' "$expected" - fi + local input=$1 expected=$2 + tap_is_str "$(human_to_size "$input")" "$expected" "$input" } -summarize() { - if (( !fail )); then - printf '# All %s tests successful\n\n' "$testcount" - exit 0 - else - printf '# %s of %s tests failed\n\n' "$fail" "$testcount" - exit 1 - fi -} -trap 'summarize' EXIT - -printf '# Beginning human_to_size tests\n' - -echo "1..$total" +tap_plan 15 # parse_hts <input> <expected output> diff --git a/test/scripts/parseopts_test.sh b/test/scripts/parseopts_test.sh index 97679c4..36ca23a 100755 --- a/test/scripts/parseopts_test.sh +++ b/test/scripts/parseopts_test.sh @@ -1,17 +1,17 @@ #!/bin/bash -declare -i testcount=0 pass=0 fail=0 total=25 +source "$(dirname "$0")"/../tap.sh/tap.sh || exit 1 # source the library function lib=${1:-${PMTEST_SCRIPTLIB_DIR}parseopts.sh} if [[ -z $lib || ! -f $lib ]]; then - printf "Bail out! parseopts library ($lib) could not be located\n" + tap_bail "parseopts library ($lib) could not be located" exit 1 fi . "$lib" if ! type -t parseopts &>/dev/null; then - printf "Bail out! parseopts function not found\n" + tap_bail "parseopts function not found" exit 1 fi @@ -25,43 +25,13 @@ OPT_LONG=('allsource' 'asroot' 'ignorearch' 'check' 'clean:' 'cleanall' 'nodeps' parse() { local result=$1 tokencount=$2; shift 2 - - (( ++testcount )) parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@" 2>/dev/null - test_result "$result" "$tokencount" "$*" "${OPTRET[@]}" + tap_is_int "${#OPTRET[@]}" "$tokencount" "$* - tokencount" + tap_is_str "$result" "${OPTRET[*]}" "$* - result" unset OPTRET } -test_result() { - local result=$1 tokencount=$2 input=$3; shift 3 - - if [[ $result = "$*" ]] && (( tokencount == $# )); then - (( ++pass )) - printf 'ok %d - %s\n' "$testcount" "$input" - else - printf 'not ok %d - %s\n' "$testcount" "$input" - printf '# [TEST %3s]: FAIL\n' "$testcount" - printf '# input: %s\n' "$input" - printf '# output: %s (%s tokens)\n' "$*" "$#" - printf '# expected: %s (%s tokens)\n' "$result" "$tokencount" - (( ++fail )) - fi -} - -summarize() { - if (( !fail )); then - printf '# All %s tests successful\n\n' "$testcount" - exit 0 - else - printf '# %s of %s tests failed\n\n' "$fail" "$testcount" - exit 1 - fi -} -trap 'summarize' EXIT - -printf '# Beginning parseopts tests\n' - -echo "1..$total" +tap_plan 50 # usage: parse <expected result> <token count> test-params... # a failed parse will match only the end of options marker '--' @@ -141,4 +111,6 @@ parse '--force --' 2 --force # exact match on possible stem (opt has optarg) parse '--clean foo --' 3 --clean=foo +tap_finish + # vim: set noet: diff --git a/test/tap.sh/tap.sh b/test/tap.sh/tap.sh new file mode 100644 index 0000000..3885269 --- /dev/null +++ b/test/tap.sh/tap.sh @@ -0,0 +1,163 @@ +# Copyright 2014 Andrew Gregory <andrew.gregory.8@gmail.com> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# Project URL: http://github.com/andrewgregory/tap.sh + +declare -i tap_planned=0 tap_run=0 tap_failed=0 tap_passed=0 +declare tap_todo='' + +tap_plan() { + tap_planned=$1 + printf "1..%d\n" "$tap_planned" +} + +tap_done_testing() { + tap_plan $tap_run +} + +tap_skip_all() { + printf "1..0 # SKIP" + _tap_print_reason " " "$@" + printf "\n" +} + +tap_diag() { + if [[ -n $tap_todo ]]; then + tap_note "$@" + else + tap_note "$@" 1>&2 + fi +} + +tap_note() { + printf "# " + printf -- "$@" + printf "\n" +} + +tap_bail() { + printf "Bail out!" + _tap_print_reason " " "$@" + printf "\n" +} + +tap_finish() { + local tap_todo='' + if (( tap_planned != tap_run )); then + tap_note "Looks like you planned %d tests but ran %d." "$tap_planned" "$tap_run" + elif (( tap_planned == tap_run && tap_failed == 0 )); then + tap_note "All %d tests successfully run." "$tap_planned" + else + tap_note "Failed %d of %d tests." "$tap_failed" "$tap_planned" + fi + (( tap_planned == tap_run && tap_failed == 0 )) +} + +tap_skip() { + local -i count="$1"; shift + while (( count-- )); do + (( tap_run++ )) + printf "ok %d # SKIP" "$tap_run" + _tap_print_reason " " "$@" + printf "\n" + done +} + +_tap_print_reason() { + local sep="$1"; shift + if [[ $# -gt 0 ]]; then + printf "%s" "$sep" + printf -- "$@" + fi +} + +tap_ok() { + local ok="$1"; shift + (( tap_run++ )) + if [[ $ok -eq 0 ]]; then + (( tap_passed++ )) + printf "ok %d" "$tap_run" + else + (( tap_failed++ )) + printf "not ok %d" "$tap_run" + fi + _tap_print_reason " - " "$@" + if [[ -n $tap_todo ]]; then + printf " # TODO %s" "$tap_todo" + fi + printf "\n" + if [[ $ok -ne 0 ]]; then + local line func file + local -i i=0 + + read line func file < <(caller $i) + while [[ -n $func && $func == tap_* ]]; do + (( i++ )) + read line func file < <(caller $i) + done + + if [[ -n $file ]]; then + file=${file##*/} + if [[ -n $tap_todo ]]; then + tap_diag " Failed (TODO) test at %s line %d." "${file}" "$line" + else + tap_diag " Failed test at %s line %d." "${file}" "$line" + fi + fi + fi + return $ok +} + +tap_is_str() { + local got="$1" expected="$2"; shift 2 + [[ $got == $expected ]] + local ret=$? + if ! tap_ok $ret "$@"; then + tap_diag " got: '%s'" "$got" + tap_diag " expected: '%s'" "$expected" + fi + return $ret +} + +tap_is_int() { + local got="$1" expected="$2"; shift 2 + [[ $got -eq $expected ]] + local ret=$? + if ! tap_ok $ret "$@"; then + tap_diag " got: '%s'" "$got" + tap_diag " expected: '%s'" "$expected" + fi + return $ret +} + +tap_diff() { + local got="$1" expected="$2"; shift 2 + local output ret + output="$(diff -u --label got --label expected "$got" "$expected" 2>&1)" + ret=$? + if ! tap_ok $ret "$@"; then + while IFS= read line; do + tap_diag "$line" + done <<<"$output" + fi + return $ret +} + +# vim: ft=sh diff --git a/test/util/pacsorttest.sh b/test/util/pacsorttest.sh index a29d8f1..ea0330e 100755 --- a/test/util/pacsorttest.sh +++ b/test/util/pacsorttest.sh @@ -18,15 +18,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +source "$(dirname "$0")"/../tap.sh/tap.sh || exit 1 + # default binary if one was not specified as $1 bin=${1:-${PMTEST_UTIL_DIR}pacsort} -# holds counts of tests -total=26 -run=0 -failure=0 if ! type -p "$bin" &>/dev/null; then - echo "Bail out! pacsort binary ($bin) could not be located" + tap_bail "pacsort binary ($bin) could not be located" exit 1 fi @@ -34,24 +32,10 @@ fi # runtest input expected test_description optional_opts runtest() { # run the test - ((run++)) - out=$(diff -u <(printf "$1" | $bin $4) <(printf "$2")) - if [[ $? -eq 0 ]]; then - echo "ok $run - $3" - else - ((failure++)) - echo "not ok $run - $3" - while read line; do - echo " # $line" - done <<<"$out" - fi + tap_diff <(printf "$1" | $bin $4) <(printf "$2") "$3" } -echo "# Running pacsort tests..." - -echo "1..$total" - -# BEGIN TESTS +tap_plan 26 in="1\n2\n3\n4\n" runtest $in $in "already ordered" @@ -124,14 +108,6 @@ runtest "$separator_reverse" "$separator" "really long input, sort key, separato 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 - -if [[ $failure -eq 0 ]]; then - echo "# All $run tests successful" - exit 0 -fi - -echo "# $failure of $run tests failed" -exit 1 +tap_finish # vim: set noet: diff --git a/test/util/vercmptest.sh b/test/util/vercmptest.sh index ba279a7..e95a2e4 100755 --- a/test/util/vercmptest.sh +++ b/test/util/vercmptest.sh @@ -18,57 +18,28 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +source "$(dirname "$0")"/../tap.sh/tap.sh || exit 1 + # default binary if one was not specified as $1 bin=${1:-${PMTEST_UTIL_DIR}vercmp} -# holds counts of tests -total=92 -run=0 -failure=0 # use first arg as our binary if specified if ! type -p "$bin" &>/dev/null; then - echo "Bail out! vercmp binary ($bin) could not be located" + tap_bail "vercmp binary ($bin) could not be located" exit 1 fi # args: -# pass ver1 ver2 ret expected -pass() { - echo "ok $run - ver1: $1 ver2: $2 ret: $3" -} - -# args: -# fail ver1 ver2 ret expected -fail() { - echo "not ok $run - test: ver1: $1 ver2: $2 ret: $3 expected: $4" - ((failure++)) -} - -# args: # runtest ver1 ver2 expected runtest() { - # run the test - ((run++)) - ret=$($bin $1 $2) - func='pass' - [[ -n $ret && $ret -eq $3 ]] || func='fail' - $func $1 $2 $ret $3 + local ver1=$1 ver2=$2 exp=$3 + tap_is_str "$($bin "$ver1" "$ver2")" "$exp" "$ver1 $ver2" # and run its mirror case just to be sure - ((run++)) - reverse=0 - [[ $3 -eq 1 ]] && reverse=-1 - [[ $3 -eq -1 ]] && reverse=1 - ret=$($bin $2 $1) - func='pass' - [[ -n $ret && $ret -eq $reverse ]] || func='fail' - $func $2 $1 $ret $reverse + (( exp *= -1 )) + tap_is_str "$($bin "$ver2" "$ver1")" "$exp" "$ver2 $ver1" } -echo "# Running vercmp tests..." - -echo "1..$total" - -# BEGIN TESTS +tap_plan 92 # all similar length, no pkgrel runtest 1.5.0 1.5.0 0 @@ -142,14 +113,6 @@ runtest 1:1.0 1.0 1 runtest 1:1.0 1.1 1 runtest 1:1.1 1.1 1 -#END TESTS - -if [[ $failure -eq 0 ]]; then - echo "# All $run tests successful" - exit 0 -fi - -echo "# $failure of $run tests failed" -exit 1 +tap_finish # vim: set noet: -- 2.2.1
On 24/12/14 07:53, Andrew Gregory wrote:
tap.sh is a reusable TAP library that handles test counting and provides useful diagnostic messages on test failures.
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> ---
I'm maintaining tap.sh outside of pacman (hence the MIT license) at https://github.com/andrewgregory/tap.sh Documentation is available there.
I did a review of the script and have no comments.
I have no idea if EXTRA_DIST is the correct place to list tap.sh, but distcheck seems to work with it.
That seems fine.
Makefile.am | 2 +- test/scripts/human_to_size_test.sh | 39 ++------- test/scripts/parseopts_test.sh | 44 ++-------- test/tap.sh/tap.sh | 163 +++++++++++++++++++++++++++++++++++++
Do we need the tap.sh/ directory here?
On 12/24/14 at 04:07pm, Allan McRae wrote:
On 24/12/14 07:53, Andrew Gregory wrote:
tap.sh is a reusable TAP library that handles test counting and provides useful diagnostic messages on test failures.
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> ---
I'm maintaining tap.sh outside of pacman (hence the MIT license) at https://github.com/andrewgregory/tap.sh Documentation is available there.
I did a review of the script and have no comments.
I have no idea if EXTRA_DIST is the correct place to list tap.sh, but distcheck seems to work with it.
That seems fine.
Makefile.am | 2 +- test/scripts/human_to_size_test.sh | 39 ++------- test/scripts/parseopts_test.sh | 44 ++-------- test/tap.sh/tap.sh | 163 +++++++++++++++++++++++++++++++++++++
Do we need the tap.sh/ directory here?
No. I had initially included the documentation file; unless somebody wants it added back, the script can be moved up a level. apg
On 25/12/14 08:27, Andrew Gregory wrote:
On 12/24/14 at 04:07pm, Allan McRae wrote:
On 24/12/14 07:53, Andrew Gregory wrote:
tap.sh is a reusable TAP library that handles test counting and provides useful diagnostic messages on test failures.
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> ---
I'm maintaining tap.sh outside of pacman (hence the MIT license) at https://github.com/andrewgregory/tap.sh Documentation is available there.
I did a review of the script and have no comments.
I have no idea if EXTRA_DIST is the correct place to list tap.sh, but distcheck seems to work with it.
That seems fine.
Makefile.am | 2 +- test/scripts/human_to_size_test.sh | 39 ++------- test/scripts/parseopts_test.sh | 44 ++-------- test/tap.sh/tap.sh | 163 +++++++++++++++++++++++++++++++++++++
Do we need the tap.sh/ directory here?
No. I had initially included the documentation file; unless somebody wants it added back, the script can be moved up a level.
Move it up a level and then this patchset is fine to include. Are you working with Florian to get his makepkg-template testsuite using this? Allan
On 12/27/14 at 05:03pm, Allan McRae wrote:
On 25/12/14 08:27, Andrew Gregory wrote:
On 12/24/14 at 04:07pm, Allan McRae wrote:
On 24/12/14 07:53, Andrew Gregory wrote:
tap.sh is a reusable TAP library that handles test counting and provides useful diagnostic messages on test failures.
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> ---
I'm maintaining tap.sh outside of pacman (hence the MIT license) at https://github.com/andrewgregory/tap.sh Documentation is available there.
I did a review of the script and have no comments.
I have no idea if EXTRA_DIST is the correct place to list tap.sh, but distcheck seems to work with it.
That seems fine.
Makefile.am | 2 +- test/scripts/human_to_size_test.sh | 39 ++------- test/scripts/parseopts_test.sh | 44 ++-------- test/tap.sh/tap.sh | 163 +++++++++++++++++++++++++++++++++++++
Do we need the tap.sh/ directory here?
No. I had initially included the documentation file; unless somebody wants it added back, the script can be moved up a level.
Move it up a level and then this patchset is fine to include.
Are you working with Florian to get his makepkg-template testsuite using this?
Allan
Updated on my tapsh branch. apg
Allows tap.sh to show the line number where the helper function was called on failures. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> --- test/scripts/human_to_size_test.sh | 34 +++++++------- test/scripts/parseopts_test.sh | 56 +++++++++++------------ test/util/pacsorttest.sh | 54 +++++++++++----------- test/util/vercmptest.sh | 94 +++++++++++++++++++------------------- 4 files changed, 119 insertions(+), 119 deletions(-) diff --git a/test/scripts/human_to_size_test.sh b/test/scripts/human_to_size_test.sh index c673526..b6f7890 100755 --- a/test/scripts/human_to_size_test.sh +++ b/test/scripts/human_to_size_test.sh @@ -15,43 +15,43 @@ if ! type -t human_to_size &>/dev/null; then exit 1 fi -parse_hts() { +tap_parse_hts() { local input=$1 expected=$2 tap_is_str "$(human_to_size "$input")" "$expected" "$input" } tap_plan 15 -# parse_hts <input> <expected output> +# tap_parse_hts <input> <expected output> -parse_hts '1MiB' 1048576 +tap_parse_hts '1MiB' 1048576 -parse_hts '10XiB' '' +tap_parse_hts '10XiB' '' -parse_hts '10 MiB' 10485760 +tap_parse_hts '10 MiB' 10485760 -parse_hts '10 XiB' '' +tap_parse_hts '10 XiB' '' -parse_hts '.1 TiB' 109951162778 +tap_parse_hts '.1 TiB' 109951162778 -parse_hts ' -3 KiB ' -3072 +tap_parse_hts ' -3 KiB ' -3072 -parse_hts 'foo3KiB' '' +tap_parse_hts 'foo3KiB' '' -parse_hts '3KiBfoo' '' +tap_parse_hts '3KiBfoo' '' -parse_hts '3kib' '' +tap_parse_hts '3kib' '' -parse_hts '+1KiB' 1024 +tap_parse_hts '+1KiB' 1024 -parse_hts '+1.0 KiB' 1024 +tap_parse_hts '+1.0 KiB' 1024 -parse_hts '1MB' 1000000 +tap_parse_hts '1MB' 1000000 -parse_hts '1M' 1048576 +tap_parse_hts '1M' 1048576 -parse_hts ' 1 G ' 1073741824 +tap_parse_hts ' 1 G ' 1073741824 -parse_hts '1Q' '' +tap_parse_hts '1Q' '' # vim: set noet: diff --git a/test/scripts/parseopts_test.sh b/test/scripts/parseopts_test.sh index 36ca23a..cc9a171 100755 --- a/test/scripts/parseopts_test.sh +++ b/test/scripts/parseopts_test.sh @@ -23,7 +23,7 @@ OPT_LONG=('allsource' 'asroot' 'ignorearch' 'check' 'clean:' 'cleanall' 'nodeps' 'repackage' 'skipinteg' 'sign' 'source' 'syncdeps' 'version' 'config:' 'noconfirm' 'noprogressbar') -parse() { +tap_parse() { local result=$1 tokencount=$2; shift 2 parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@" 2>/dev/null tap_is_int "${#OPTRET[@]}" "$tokencount" "$* - tokencount" @@ -33,83 +33,83 @@ parse() { tap_plan 50 -# usage: parse <expected result> <token count> test-params... -# a failed parse will match only the end of options marker '--' +# usage: tap_parse <expected result> <token count> test-params... +# a failed tap_parse will match only the end of options marker '--' # no options -parse '--' 1 +tap_parse '--' 1 # short options -parse '-s -r --' 3 -s -r +tap_parse '-s -r --' 3 -s -r # short options, no spaces -parse '-s -r --' 3 -sr +tap_parse '-s -r --' 3 -sr # short opt missing an opt arg -parse '--' 1 -s -p +tap_parse '--' 1 -s -p # short opt with an opt arg -parse '-p PKGBUILD -L --' 4 -p PKGBUILD -L +tap_parse '-p PKGBUILD -L --' 4 -p PKGBUILD -L # short opt with an opt arg, no space -parse '-p PKGBUILD --' 3 -pPKGBUILD +tap_parse '-p PKGBUILD --' 3 -pPKGBUILD # valid shortopts as a long opt -parse '--' 1 --sir +tap_parse '--' 1 --sir # long opt with no optarg -parse '--log --' 2 --log +tap_parse '--log --' 2 --log # long opt with missing optarg -parse '--' 1 -sr --pkg +tap_parse '--' 1 -sr --pkg # long opt with optarg -parse '--pkg foo --' 3 --pkg foo +tap_parse '--pkg foo --' 3 --pkg foo # long opt with optarg with whitespace -parse '--pkg foo bar -- baz' 4 --pkg "foo bar" baz +tap_parse '--pkg foo bar -- baz' 4 --pkg "foo bar" baz # long opt with optarg with = -parse '--pkg foo=bar -- baz' 4 --pkg foo=bar baz +tap_parse '--pkg foo=bar -- baz' 4 --pkg foo=bar baz # long opt with explicit optarg -parse '--pkg bar -- foo baz' 5 foo --pkg=bar baz +tap_parse '--pkg bar -- foo baz' 5 foo --pkg=bar baz # long opt with explicit optarg, with whitespace -parse '--pkg foo bar -- baz' 4 baz --pkg="foo bar" +tap_parse '--pkg foo bar -- baz' 4 baz --pkg="foo bar" # long opt with explicit optarg that doesn't take optarg -parse '--' 1 --force=always -s +tap_parse '--' 1 --force=always -s # long opt with explicit optarg with = -parse '--pkg foo=bar --' 3 --pkg=foo=bar +tap_parse '--pkg foo=bar --' 3 --pkg=foo=bar # explicit end of options with options after -parse '-s -r -- foo bar baz' 6 -s -r -- foo bar baz +tap_parse '-s -r -- foo bar baz' 6 -s -r -- foo bar baz # non-option parameters mixed in with options -parse '-s -r -- foo baz' 5 -s foo baz -r +tap_parse '-s -r -- foo baz' 5 -s foo baz -r # optarg with whitespace -parse '-p foo bar -s --' 4 -p'foo bar' -s +tap_parse '-p foo bar -s --' 4 -p'foo bar' -s # non-option parameter with whitespace -parse '-i -- foo bar' 3 -i 'foo bar' +tap_parse '-i -- foo bar' 3 -i 'foo bar' # successful stem match (opt has no arg) -parse '--nocolor --' 2 --nocol +tap_parse '--nocolor --' 2 --nocol # successful stem match (opt has arg) -parse '--config foo --' 3 --conf foo +tap_parse '--config foo --' 3 --conf foo # ambiguous long opt -parse '--' 1 '--for' +tap_parse '--' 1 '--for' # exact match on a possible stem (--force & --forcever) -parse '--force --' 2 --force +tap_parse '--force --' 2 --force # exact match on possible stem (opt has optarg) -parse '--clean foo --' 3 --clean=foo +tap_parse '--clean foo --' 3 --clean=foo tap_finish diff --git a/test/util/pacsorttest.sh b/test/util/pacsorttest.sh index ea0330e..60e93f2 100755 --- a/test/util/pacsorttest.sh +++ b/test/util/pacsorttest.sh @@ -30,7 +30,7 @@ fi # args: # runtest input expected test_description optional_opts -runtest() { +tap_runtest() { # run the test tap_diff <(printf "$1" | $bin $4) <(printf "$2") "$3" } @@ -38,49 +38,49 @@ runtest() { tap_plan 26 in="1\n2\n3\n4\n" -runtest $in $in "already ordered" +tap_runtest $in $in "already ordered" in="4\n2\n3\n1\n" ex="1\n2\n3\n4\n" -runtest $in $ex "easy reordering" +tap_runtest $in $ex "easy reordering" in="1\n2\n3\n4" ex="1\n2\n3\n4\n" -runtest $in $ex "add trailing newline" +tap_runtest $in $ex "add trailing newline" in="1\n2\n4\n3" ex="1\n2\n3\n4\n" -runtest $in $ex "add trailing newline" +tap_runtest $in $ex "add trailing newline" in="1.0-1\n1.0\n1.0-2\n1.0\n" -runtest $in $in "stable sort" +tap_runtest $in $in "stable sort" in="firefox-18.0-2-x86_64.pkg.tar.xz\nfirefox-18.0.1-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort" "--files" +tap_runtest $in $in "filename sort" "--files" in="firefox-18.0-2\nfirefox-18.0.1-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort with invalid filename" "--files" +tap_runtest $in $in "filename sort with invalid filename" "--files" in="firefox-18.0-2-x86_64.pkg.tar.xz\n/path2/firefox-18.0.1-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort maybe with leading paths" "--files" +tap_runtest $in $in "filename sort maybe with leading paths" "--files" in="/path1/firefox-18.0-2-x86_64.pkg.tar.xz\n/path2/firefox-18.0.1-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort with different leading paths" "--files" +tap_runtest $in $in "filename sort with different leading paths" "--files" in="/path2/firefox-18.0-2-x86_64.pkg.tar.xz\n/path1/path2/firefox-18.0.1-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort with uneven leading path components" "--files" +tap_runtest $in $in "filename sort with uneven leading path components" "--files" in="firefox-18.0-2-i686.pkg.tar.xz\nfirefox-18.0.1-1-x86_64.pkg.tar.gz\n" -runtest $in $in "filename sort with different extensions" "--files" +tap_runtest $in $in "filename sort with different extensions" "--files" in="/packages/dialog-1.2_20131001-1-x86_64.pkg.tar.xz\n/packages/dialog-1:1.2_20130928-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort with epoch" "--files" +tap_runtest $in $in "filename sort with epoch" "--files" in="/packages/dia-log-1:1.2_20130928-1-x86_64.pkg.tar.xz\n/packages/dialog-1.2_20131001-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort with differing package names and epoch" "--files" +tap_runtest $in $in "filename sort with differing package names and epoch" "--files" in="/packages/systemd-217-1-x86_64.pkg.tar.xz\n/packages/systemd-sysvcompat-217-1-x86_64.pkg.tar.xz\n" -runtest $in $in "filename sort with package names as shared substring" "--files" +tap_runtest $in $in "filename sort with package names as shared substring" "--files" # generate some long input/expected for the next few tests declare normal reverse names_normal names_reverse @@ -93,20 +93,20 @@ for ((i=1; i<600; i++)); do 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" +tap_runtest $normal $normal "really long input" +tap_runtest $reverse $normal "really long input" +tap_runtest $reverse $reverse "really long input, reversed" "-r" +tap_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" +tap_runtest "$fields" "$fields" "really long input, sort key" "-k3" +tap_runtest "$fields_reverse" "$fields" "really long input, sort key" "-k3" +tap_runtest "$fields_reverse" "$fields_reverse" "really long input, sort key, reversed" "-k 3 -r" +tap_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" +tap_runtest "$separator" "$separator" "really long input, sort key, separator" "-k3 -t|" +tap_runtest "$separator_reverse" "$separator" "really long input, sort key, separator" "-k3 -t|" +tap_runtest "$separator_reverse" "$separator_reverse" "really long input, sort key, separator, reversed" "-k 3 -t| -r" +tap_runtest "$separator" "$separator_reverse" "really long input, sort key, separator, reversed" "-k 3 -t| -r" tap_finish diff --git a/test/util/vercmptest.sh b/test/util/vercmptest.sh index e95a2e4..89d6385 100755 --- a/test/util/vercmptest.sh +++ b/test/util/vercmptest.sh @@ -31,7 +31,7 @@ fi # args: # runtest ver1 ver2 expected -runtest() { +tap_runtest() { local ver1=$1 ver2=$2 exp=$3 tap_is_str "$($bin "$ver1" "$ver2")" "$exp" "$ver1 $ver2" # and run its mirror case just to be sure @@ -42,76 +42,76 @@ runtest() { tap_plan 92 # all similar length, no pkgrel -runtest 1.5.0 1.5.0 0 -runtest 1.5.1 1.5.0 1 +tap_runtest 1.5.0 1.5.0 0 +tap_runtest 1.5.1 1.5.0 1 # mixed length -runtest 1.5.1 1.5 1 +tap_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 +tap_runtest 1.5.0-1 1.5.0-1 0 +tap_runtest 1.5.0-1 1.5.0-2 -1 +tap_runtest 1.5.0-1 1.5.1-1 -1 +tap_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 +tap_runtest 1.5-1 1.5.1-1 -1 +tap_runtest 1.5-2 1.5.1-1 -1 +tap_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 -runtest 1.1-1 1.1 0 -runtest 1.0-1 1.1 -1 -runtest 1.1-1 1.0 1 +tap_runtest 1.5 1.5-1 0 +tap_runtest 1.5-1 1.5 0 +tap_runtest 1.1-1 1.1 0 +tap_runtest 1.0-1 1.1 -1 +tap_runtest 1.1-1 1.0 1 # alphanumeric versions -runtest 1.5b-1 1.5-1 -1 -runtest 1.5b 1.5 -1 -runtest 1.5b-1 1.5 -1 -runtest 1.5b 1.5.1 -1 +tap_runtest 1.5b-1 1.5-1 -1 +tap_runtest 1.5b 1.5 -1 +tap_runtest 1.5b-1 1.5 -1 +tap_runtest 1.5b 1.5.1 -1 # from the manpage -runtest 1.0a 1.0alpha -1 -runtest 1.0alpha 1.0b -1 -runtest 1.0b 1.0beta -1 -runtest 1.0beta 1.0rc -1 -runtest 1.0rc 1.0 -1 +tap_runtest 1.0a 1.0alpha -1 +tap_runtest 1.0alpha 1.0b -1 +tap_runtest 1.0b 1.0beta -1 +tap_runtest 1.0beta 1.0rc -1 +tap_runtest 1.0rc 1.0 -1 # going crazy? alpha-dotted versions -runtest 1.5.a 1.5 1 -runtest 1.5.b 1.5.a 1 -runtest 1.5.1 1.5.b 1 +tap_runtest 1.5.a 1.5 1 +tap_runtest 1.5.b 1.5.a 1 +tap_runtest 1.5.1 1.5.b 1 # alpha dots and dashes -runtest 1.5.b-1 1.5.b 0 -runtest 1.5-1 1.5.b -1 +tap_runtest 1.5.b-1 1.5.b 0 +tap_runtest 1.5-1 1.5.b -1 # same/similar content, differing separators -runtest 2.0 2_0 0 -runtest 2.0_a 2_0.a 0 -runtest 2.0a 2.0.a -1 -runtest 2___a 2_a 1 +tap_runtest 2.0 2_0 0 +tap_runtest 2.0_a 2_0.a 0 +tap_runtest 2.0a 2.0.a -1 +tap_runtest 2___a 2_a 1 # epoch included version comparisons -runtest 0:1.0 0:1.0 0 -runtest 0:1.0 0:1.1 -1 -runtest 1:1.0 0:1.0 1 -runtest 1:1.0 0:1.1 1 -runtest 1:1.0 2:1.1 -1 +tap_runtest 0:1.0 0:1.0 0 +tap_runtest 0:1.0 0:1.1 -1 +tap_runtest 1:1.0 0:1.0 1 +tap_runtest 1:1.0 0:1.1 1 +tap_runtest 1:1.0 2:1.1 -1 # epoch + sometimes present pkgrel -runtest 1:1.0 0:1.0-1 1 -runtest 1:1.0-1 0:1.1-1 1 +tap_runtest 1:1.0 0:1.0-1 1 +tap_runtest 1:1.0-1 0:1.1-1 1 # epoch included on one version -runtest 0:1.0 1.0 0 -runtest 0:1.0 1.1 -1 -runtest 0:1.1 1.0 1 -runtest 1:1.0 1.0 1 -runtest 1:1.0 1.1 1 -runtest 1:1.1 1.1 1 +tap_runtest 0:1.0 1.0 0 +tap_runtest 0:1.0 1.1 -1 +tap_runtest 0:1.1 1.0 1 +tap_runtest 1:1.0 1.0 1 +tap_runtest 1:1.0 1.1 1 +tap_runtest 1:1.1 1.1 1 tap_finish -- 2.2.1
participants (2)
-
Allan McRae
-
Andrew Gregory