#! /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 :