Imported from ../bash-3.0.tar.gz.
This commit is contained in:
parent
7117c2d221
commit
b80f6443b6
400 changed files with 69247 additions and 13346 deletions
139
tests/dbg-support.tests
Executable file
139
tests/dbg-support.tests
Executable file
|
|
@ -0,0 +1,139 @@
|
|||
#!../bash
|
||||
#
|
||||
# Test correct functioning bash debug support not via the bashdb
|
||||
# debugger but merely by printing via print_trap()
|
||||
# $Id: dbg-support.tests,v 1.13 2003/02/17 22:02:25 rockyb Exp $
|
||||
shopt -s extdebug
|
||||
print_debug_trap() {
|
||||
echo "debug lineno: $1 ${FUNCNAME[1]}"
|
||||
return
|
||||
}
|
||||
|
||||
print_return_trap() {
|
||||
echo "return lineno: $1 ${FUNCNAME[1]}"
|
||||
return
|
||||
}
|
||||
|
||||
fn1() {
|
||||
echo "LINENO $LINENO"
|
||||
echo "LINENO $LINENO"
|
||||
echo "BASH_SOURCE[0]" ${BASH_SOURCE[0]}
|
||||
echo "FUNCNAME[0]" ${FUNCNAME[0]}
|
||||
echo `caller`
|
||||
echo `caller 0`
|
||||
echo `caller 1`
|
||||
echo `caller foo`
|
||||
}
|
||||
|
||||
fn2() {
|
||||
echo "fn2 here. Calling fn1..."
|
||||
fn1
|
||||
}
|
||||
|
||||
fn3() {
|
||||
echo "LINENO $LINENO"
|
||||
echo "BASH_SOURCE[0]" ${BASH_SOURCE[0]}
|
||||
|
||||
# Print a stack trace
|
||||
declare -i n
|
||||
n=${#FUNCNAME[@]}
|
||||
for (( i=0 ; (( i < $n )) ; i++ )) ; do
|
||||
local -i j=i+1
|
||||
[ $j -eq $n ] && j=i # main()'s file is the same as the first caller
|
||||
echo "${FUNCNAME[$i]} called from file " \
|
||||
"\`${BASH_SOURCE[$j]}' at line ${BASH_LINENO[$j]}"
|
||||
done
|
||||
source ./dbg-support.sub
|
||||
}
|
||||
|
||||
fn4() {
|
||||
echo "fn4 here. Calling fn3..."
|
||||
fn3
|
||||
}
|
||||
|
||||
|
||||
#!../bash
|
||||
#
|
||||
# Test of support for debugging facilities in bash
|
||||
#
|
||||
# Test debugger set option fntrace - set on. Not in vanilla Bash 2.05
|
||||
#
|
||||
set -o functrace
|
||||
trap 'print_debug_trap $LINENO' DEBUG
|
||||
trap 'print_return_trap $LINENO' RETURN
|
||||
|
||||
# Funcname is now an array. Vanilla Bash 2.05 doesn't have FUNCNAME array.
|
||||
echo "FUNCNAME" ${FUNCNAME[0]}
|
||||
|
||||
# We should trace into the below.
|
||||
# Start easy with a simple function.
|
||||
fn1
|
||||
fn2
|
||||
fn3
|
||||
source ./dbg-support.sub
|
||||
|
||||
# Test debugger set option fntrace - set off
|
||||
set +T
|
||||
|
||||
# We should not trace into this.
|
||||
fn1
|
||||
fn2
|
||||
fn3
|
||||
fn4
|
||||
source ./dbg-support.sub
|
||||
|
||||
# Another way to say: set -o fntrace
|
||||
set -T
|
||||
|
||||
# We should trace into this.
|
||||
source ./dbg-support.sub
|
||||
set +T
|
||||
|
||||
# Test that the line numbers in the presence of conditionals are correct.
|
||||
for (( i=0 ; (( i <= 2 )) ; i++ )) ; do
|
||||
if [ $i -eq 2 ] ; then
|
||||
echo "Hit 2"
|
||||
fi
|
||||
j=4
|
||||
done
|
||||
|
||||
#
|
||||
# Check line numbers in command substitution
|
||||
#
|
||||
echo $(sourced_fn)
|
||||
echo `sourced_fn`
|
||||
x=$((sourced_fn))
|
||||
x={ sourced_fn }
|
||||
|
||||
# Make sure we step into sourced_fn as a comand when we request to do so.
|
||||
# Vanilla bash 2.0 doesn't do.
|
||||
set -o functrace
|
||||
x={ sourced_fn }
|
||||
|
||||
# Should see line number of xyzzy below. Vanilla bash 2.05b doesn't do
|
||||
case xyzzy in
|
||||
a )
|
||||
x=5
|
||||
;;
|
||||
xyzz? )
|
||||
case 3 in
|
||||
2 )
|
||||
x=6 ;;
|
||||
3 )
|
||||
echo "got it" ;;
|
||||
* ) echo "no good" ;;
|
||||
esac
|
||||
;;
|
||||
* )
|
||||
esac
|
||||
|
||||
# Should see line numbers for initial for lines.
|
||||
for i in 0 1 ; do
|
||||
for j in 3 4 ; do
|
||||
((x=i+j))
|
||||
done
|
||||
done
|
||||
#;;; Local Variables: ***
|
||||
#;;; mode:shell-script ***
|
||||
#;;; eval: (sh-set-shell "bash") ***
|
||||
#;;; End: ***
|
||||
Loading…
Add table
Add a link
Reference in a new issue