From c576b72df745adaf9257cb8cbb4a6c6e5240fed6 Mon Sep 17 00:00:00 2001 From: Kate Ward Date: Tue, 17 Oct 2017 23:06:55 +0200 Subject: Reworked shflags_tst.sh to be generic test_runner for *_test.sh tests. --- shflags_private_test.sh | 226 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100755 shflags_private_test.sh (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh new file mode 100755 index 0000000..9f9d038 --- /dev/null +++ b/shflags_private_test.sh @@ -0,0 +1,226 @@ +#! /bin/sh +# vim:et:ft=sh:sts=2:sw=2 +# +# shFlags unit tests for the internal functions. + +# Load test helpers. +. ./shflags_test_helpers + +#------------------------------------------------------------------------------ +# Suite tests. +# + +testColumns() { + cols=`_flags_columns` + value=`expr "${cols}" : '\([0-9]*\)'` + assertNotNull "unexpected screen width (${cols})" "${value}" +} + +testGenOptStr() { + _testGenOptStr '' '' + + DEFINE_boolean bool false 'boolean value' b + _testGenOptStr 'b' 'bool' + + DEFINE_float float 0.0 'float value' f + _testGenOptStr 'bf:' 'bool,float:' + + DEFINE_integer int 0 'integer value' i + _testGenOptStr 'bf:i:' 'bool,float:,int:' + + DEFINE_string str 0 'string value' s + _testGenOptStr 'bf:i:s:' 'bool,float:,int:,str:' + + DEFINE_boolean help false 'show help' h + _testGenOptStr 'bf:i:s:h' 'bool,float:,int:,str:,help' +} + +_testGenOptStr() { + short=$1 + long=$2 + + result=`_flags_genOptStr ${__FLAGS_OPTSTR_SHORT}` + assertTrue 'short option string generation failed' $? + assertEquals "${short}" "${result}" + + result=`_flags_genOptStr ${__FLAGS_OPTSTR_LONG}` + assertTrue 'long option string generation failed' $? + assertEquals "${long}" "${result}" +} + +testGetFlagInfo() { + __flags_blah_foobar='1234' + + rslt=`_flags_getFlagInfo 'blah' 'foobar'` + assertTrue 'request for valid flag info failed' $? + assertEquals 'invalid flag info returned' "${__flags_blah_foobar}" "${rslt}" + + rslt=`_flags_getFlagInfo 'blah' 'hubbabubba' >"${stdoutF}" 2>"${stderrF}"` + assertEquals 'invalid flag did not result in an error' ${FLAGS_ERROR} $? + assertErrorMsg 'missing flag info variable' +} + +testItemInList() { + list='this is a test' + while read desc item want; do + _flags_itemInList "${item}" ${list} + got=$? + assertEquals "${desc}: itemInList(${item})" ${got} ${want} + done < Date: Wed, 18 Oct 2017 00:25:19 +0200 Subject: Ran shflags_private_test.sh through ShellCheck. --- shflags_private_test.sh | 63 +++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 25 deletions(-) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index 9f9d038..4911521 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -2,14 +2,29 @@ # vim:et:ft=sh:sts=2:sw=2 # # shFlags unit tests for the internal functions. +# +# +# Copyright 2008-2017 Kate Ward. All Rights Reserved. +# Released under the Apache 2.0 license. +# +# Author: kate.ward@forestent.com (Kate Ward) +# https://github.com/kward/shflags +# +### ShellCheck (http://www.shellcheck.net/) +# Disable source following. +# shellcheck disable=SC1090,SC1091 +# expr may be antiquated, but it is the only solution in some cases. +# shellcheck disable=SC2003 +# $() are not fully portable (POSIX != portable). +# shellcheck disable=SC2006 + +# These variables will be overridden by the test helpers. +stdoutF="${TMPDIR:-/tmp}/STDOUT" +stderrF="${TMPDIR:-/tmp}/STDERR" # Load test helpers. . ./shflags_test_helpers -#------------------------------------------------------------------------------ -# Suite tests. -# - testColumns() { cols=`_flags_columns` value=`expr "${cols}" : '\([0-9]*\)'` @@ -39,11 +54,11 @@ _testGenOptStr() { short=$1 long=$2 - result=`_flags_genOptStr ${__FLAGS_OPTSTR_SHORT}` + result=$(_flags_genOptStr "${__FLAGS_OPTSTR_SHORT}") assertTrue 'short option string generation failed' $? assertEquals "${short}" "${result}" - result=`_flags_genOptStr ${__FLAGS_OPTSTR_LONG}` + result=`_flags_genOptStr "${__FLAGS_OPTSTR_LONG}"` assertTrue 'long option string generation failed' $? assertEquals "${long}" "${result}" } @@ -56,16 +71,17 @@ testGetFlagInfo() { assertEquals 'invalid flag info returned' "${__flags_blah_foobar}" "${rslt}" rslt=`_flags_getFlagInfo 'blah' 'hubbabubba' >"${stdoutF}" 2>"${stderrF}"` - assertEquals 'invalid flag did not result in an error' ${FLAGS_ERROR} $? + assertEquals 'invalid flag did not result in an error' "${FLAGS_ERROR}" $? assertErrorMsg 'missing flag info variable' } testItemInList() { list='this is a test' + # shellcheck disable=SC2162 while read desc item want; do - _flags_itemInList "${item}" ${list} + _flags_itemInList "${item}" "${list}" got=$? - assertEquals "${desc}: itemInList(${item})" ${got} ${want} + assertEquals "${desc}: itemInList(${item})" "${got}" "${want}" done < Date: Sat, 21 Oct 2017 21:08:52 +0200 Subject: Fixed #46. Improved getopt version determination. --- shflags_private_test.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index 4911521..5a2b442 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -31,6 +31,22 @@ testColumns() { assertNotNull "unexpected screen width (${cols})" "${value}" } +testGetoptVers() { + # shellcheck disable=SC2162 + while read desc mock want; do + assertEquals "${desc}" "$(_flags_getopt_vers "${mock}")" "${want}" + done < Date: Mon, 15 Jan 2018 11:31:02 +0100 Subject: Added unit test for underscoreName(), and fixed potential POSIX compliance issue. --- shflags_private_test.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index 5a2b442..e6b6376 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -3,8 +3,7 @@ # # shFlags unit tests for the internal functions. # -# -# Copyright 2008-2017 Kate Ward. All Rights Reserved. +# Copyright 2008-2018 Kate Ward. All Rights Reserved. # Released under the Apache 2.0 license. # # Author: kate.ward@forestent.com (Kate Ward) @@ -113,6 +112,18 @@ EOF assertFalse 'empty lists should not match' $? } +testUnderscoreName() { + while read desc name want; do + got=`_flags_underscoreName "${name}"` + assertEquals "${desc}: underscoreName(${name})" "${got}" "${want}" + done < Date: Tue, 16 Jan 2018 23:22:37 +0100 Subject: Validate that globbing works in _flags_itemInList(). --- shflags_private_test.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index e6b6376..f7bf7ba 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -98,14 +98,17 @@ testItemInList() { got=$? assertEquals "${desc}: itemInList(${item})" "${got}" "${want}" done < Date: Tue, 16 Jan 2018 23:26:39 +0100 Subject: Fix shellcheck issue. --- shflags_private_test.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index f7bf7ba..f15f627 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -116,6 +116,7 @@ EOF } testUnderscoreName() { + # shellcheck disable=SC2162 while read desc name want; do got=`_flags_underscoreName "${name}"` assertEquals "${desc}: underscoreName(${name})" "${got}" "${want}" -- cgit v1.2.3 From 16cd12151e1f53a689a8d6e5b4444b9bf0742abc Mon Sep 17 00:00:00 2001 From: Kate Ward Date: Wed, 17 Jan 2018 00:11:33 +0100 Subject: Removed glob tests from testItemInList() as they don't work on zsh. --- shflags_private_test.sh | 3 --- 1 file changed, 3 deletions(-) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index f15f627..50ea4e2 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -106,9 +106,6 @@ test_partial_te te ${FLAGS_FALSE} test_partial_es es ${FLAGS_FALSE} test_partial_st st ${FLAGS_FALSE} empty_item '' ${FLAGS_FALSE} -glob_star t*s ${FLAGS_TRUE} -glob_star_missing foo*bar ${FLAGS_FALSE} -glob_question t??s ${FLAGS_TRUE} EOF _flags_itemInList 'item' '' -- cgit v1.2.3 From 5704f9257937531f50be756063dbfe482135c077 Mon Sep 17 00:00:00 2001 From: Kate Ward Date: Thu, 18 Jan 2018 00:20:48 +0100 Subject: Fixed issues preventing tests from running with /bin/sh on Solaris 8. --- shflags_private_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index 50ea4e2..b80c177 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -69,7 +69,7 @@ _testGenOptStr() { short=$1 long=$2 - result=$(_flags_genOptStr "${__FLAGS_OPTSTR_SHORT}") + result=`_flags_genOptStr "${__FLAGS_OPTSTR_SHORT}"` assertTrue 'short option string generation failed' $? assertEquals "${short}" "${result}" -- cgit v1.2.3 From 8c168e58cadd5bf92ed5bfc02c159b9251cf3eea Mon Sep 17 00:00:00 2001 From: Kate Ward Date: Tue, 11 Feb 2020 04:18:45 +0100 Subject: Fixed recent shellcheck errors. --- shflags_private_test.sh | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index b80c177..6490a20 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -49,18 +49,23 @@ mock_getopt_enh() { echo ' --foo --'; return 0; } testGenOptStr() { _testGenOptStr '' '' + # shellcheck disable=SC2034 DEFINE_boolean bool false 'boolean value' b _testGenOptStr 'b' 'bool' + # shellcheck disable=SC2034 DEFINE_float float 0.0 'float value' f _testGenOptStr 'bf:' 'bool,float:' + # shellcheck disable=SC2034 DEFINE_integer int 0 'integer value' i _testGenOptStr 'bf:i:' 'bool,float:,int:' + # shellcheck disable=SC2034 DEFINE_string str 0 'string value' s _testGenOptStr 'bf:i:s:' 'bool,float:,int:,str:' + # shellcheck disable=SC2034 DEFINE_boolean help false 'show help' h _testGenOptStr 'bf:i:s:h' 'bool,float:,int:,str:,help' } -- cgit v1.2.3 From 1c69f4a11767d4d4e794bbfba24e6bf5591bbad8 Mon Sep 17 00:00:00 2001 From: Kate Ward Date: Sun, 12 Apr 2020 00:25:04 +0200 Subject: Fixed more set -e errors. --- shflags_private_test.sh | 145 +++++++++++++++++++++++++++++++----------------- 1 file changed, 95 insertions(+), 50 deletions(-) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index 6490a20..6435925 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -3,7 +3,7 @@ # # shFlags unit tests for the internal functions. # -# Copyright 2008-2018 Kate Ward. All Rights Reserved. +# Copyright 2008-2020 Kate Ward. All Rights Reserved. # Released under the Apache 2.0 license. # # Author: kate.ward@forestent.com (Kate Ward) @@ -86,35 +86,49 @@ _testGenOptStr() { testGetFlagInfo() { __flags_blah_foobar='1234' - rslt=`_flags_getFlagInfo 'blah' 'foobar'` - assertTrue 'request for valid flag info failed' $? - assertEquals 'invalid flag info returned' "${__flags_blah_foobar}" "${rslt}" - - rslt=`_flags_getFlagInfo 'blah' 'hubbabubba' >"${stdoutF}" 2>"${stderrF}"` - assertEquals 'invalid flag did not result in an error' "${FLAGS_ERROR}" $? - assertErrorMsg 'missing flag info variable' + desc='valid_flag' + if rslt="`_flags_getFlagInfo 'blah' 'foobar'`"; then + assertEquals "${desc}: invalid flag result" "${__flags_blah_foobar}" "${rslt}" + else + fail "${desc}: request for valid flag info failed" + fi + + desc='invalid_flag' + if rslt="`_flags_getFlagInfo 'blah' 'hubbabubba' >"${stdoutF}" 2>"${stderrF}"`"; then + fail "${desc}: expected invalid flag request to fail" + th_showOutput + else + assertEquals "${desc}: expected an error" "${FLAGS_ERROR}" $? + assertErrorMsg "missing flag info variable" + fi } testItemInList() { list='this is a test' # shellcheck disable=SC2162 while read desc item want; do - _flags_itemInList "${item}" "${list}" - got=$? - assertEquals "${desc}: itemInList(${item})" "${got}" "${want}" + if [ ${want} -eq ${FLAGS_TRUE} ]; then + continue + fi + got=${FLAGS_TRUE} + if ! _flags_itemInList "${item}" "${list}"; then + got=${FLAGS_FALSE} + fi + assertEquals "${desc}: itemInList(${item})" "${want}" "${got}" done </dev/null 2>&1; then + got=${FLAGS_FALSE} + fi + assertFalse 'missing math succeeded' "${got}" } testMathBuiltin() { -- cgit v1.2.3 From 6d54e984aabc59f204db8d6b51a50bc8dae929bd Mon Sep 17 00:00:00 2001 From: Kate Ward Date: Sun, 12 Apr 2020 00:36:03 +0200 Subject: Fixed shellcheck errors. --- shflags_private_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'shflags_private_test.sh') diff --git a/shflags_private_test.sh b/shflags_private_test.sh index 6435925..86e4fdd 100755 --- a/shflags_private_test.sh +++ b/shflags_private_test.sh @@ -107,7 +107,7 @@ testItemInList() { list='this is a test' # shellcheck disable=SC2162 while read desc item want; do - if [ ${want} -eq ${FLAGS_TRUE} ]; then + if [ "${want}" -eq "${FLAGS_TRUE}" ]; then continue fi got=${FLAGS_TRUE} -- cgit v1.2.3