]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - tests/func.tests
bash-5.2 distribution sources and documentation
[thirdparty/bash.git] / tests / func.tests
index 8abf4ce03567b670fd818c3363ab21c75833562b..e35ec2b85260e17c4cd91505400fc1b4c416cc7e 100644 (file)
@@ -1,3 +1,22 @@
+#   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 <http://www.gnu.org/licenses/>.
+#
+# since we look at functions below, remove all functions now 
+funcs=$(compgen -A function)
+if [ -n "$funcs" ]; then
+        unset -f $funcs
+fi
+
 a()
 {
        x=$((x - 1))
@@ -117,3 +136,63 @@ declare -f f1      # should print the definition, too
 # no functions should be exported, right?
 declare -xF
 declare -xf
+
+# FUNCNAME tests
+func2()
+{
+       echo FUNCNAME = $FUNCNAME
+}
+
+func()
+{
+       echo before: FUNCNAME = $FUNCNAME
+       func2
+       echo after: FUNCNAME = $FUNCNAME
+}
+
+echo before: try to assign to FUNCNAME
+FUNCNAME=7
+
+echo outside: FUNCNAME = $FUNCNAME
+func
+echo outside2: FUNCNAME = $FUNCNAME
+
+# test exported functions (and cached exportstr)
+zf()
+{
+       echo this is zf
+}
+export -f zf
+
+${THIS_SH} -c 'type -t zf'
+${THIS_SH} -c 'type zf'
+
+${THIS_SH} ./func1.sub
+
+# tests for functions whose bodies are not group commands, with and without
+# attached redirections
+${THIS_SH} ./func2.sub
+
+# test for some posix-specific function behavior
+${THIS_SH} ./func3.sub
+
+# FUNCNEST testing
+${THIS_SH} ./func4.sub
+
+unset -f myfunction
+myfunction() {
+    echo "bad shell function redirection"
+} >> /dev/null
+
+myfunction
+myfunction | cat
+
+segv()
+{
+       echo foo | return 5
+}
+
+segv
+echo $?
+
+exit 0