#! /bin/sh
# Unit tests for funclib.sh
#
# Copyright (C) 2015 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# 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 3 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 . */
. "$abs_aux_dir"/funclib.sh || exit 1
. "$abs_aux_dir"/options-parser || exit 1
scriptversion='test-version'
func_help ()
{
$ECHO "HELP"
exit 0
}
# Make sure that setting _result has no effect if we return non-zero
# return value.
test_prep_do_nothing ()
{
test_prep_do_nothing_result=
false
}
func_add_hook func_options_prep test_prep_do_nothing
test_prep_shortcuts ()
{
debug_on=
test x--debug = "x$1" && debug_on=--debug && shift
case $1 in
short|shortc|shortcu|shortcut)
shift
func_quote eval --test SHORTCUT $debug_on ${1+"$@"}
test_prep_shortcuts_result=$func_quote_result
;;
*)
false
;;
esac
}
func_add_hook func_options_prep test_prep_shortcuts
test_parse_split_short ()
{
while test $# -gt 0
do
_G_opt=$1 ; shift
case $_G_opt in
-t?*)
func_split_short_opt "$_G_opt"
set dummy "$func_split_short_opt_name" \
"$func_split_short_opt_arg" ${1+"$@"}
shift
;;
*)
set dummy "$_G_opt" ${1+"$@"} ; shift
;;
esac
break
done
func_quote eval ${1+"$@"}
test_parse_split_short_result=$func_quote_result
:
}
func_add_hook func_parse_options test_parse_split_short
test_parse_subst_equal_signs ()
{
_G_opt=$1 ; shift
case $_G_opt in
--*=*)
func_split_equals "$_G_opt"
set dummy "$func_split_equals_lhs" \
"$func_split_equals_rhs" ${1+"$@"}
shift
func_quote eval ${1+"$@"}
test_parse_subst_equal_signs_result=$func_quote_result
;;
*)
false
;;
esac
}
func_add_hook func_parse_options test_parse_subst_equal_signs
test_parse_do_nothing ()
{
test_parse_do_nothing_result=
false
}
func_add_hook func_parse_options test_parse_do_nothing
test_parse_eat_test ()
{
_t_parse_match=false
_G_opt=$1 ; shift
case $_G_opt in
--test|-t)
test $# = 0 && func_missing_arg $_G_opt
_t_parse_match=:
opt_test=$1
shift
;;
esac
$_t_parse_match && {
func_quote eval ${1+"$@"}
test_parse_eat_test_result=$func_quote_result
}
}
func_add_hook func_parse_options test_parse_eat_test
test_validate_do_nothing ()
{
test_validate_do_nothing_result=
false
}
func_add_hook func_validate_options test_validate_do_nothing
test_validate_eat_sth ()
{
if test validate_out = "$1"; then
shift
func_quote eval ${1+"$@"}
test_validate_eat_sth_result=$func_quote_result
else
false
fi
}
func_add_hook func_validate_options test_validate_eat_sth
unset_test_opt ()
{
case $# in
0)
$ECHO UNSET_TEST
;;
1)
$ECHO "ONE_ARG $*"
;;
2)
case $1 in
eval)
eval "$2"
exit $?
;;
esac
;;
3)
$ECHO THREE_ARGS
;;
*)
$ECHO MORE_ARGS
;;
esac
}
func_options ${1+"$@"}
eval set dummy "$func_options_result"; shift
case ${opt_test-unset} in
'')
$ECHO "EMPTY_TEST"
;;
unset)
unset_test_opt ${1+"$@"}
;;
false)
$ECHO "FALSE_TEST"
exit 1
;;
*)
$ECHO $opt_test
;;
esac
: