/
test-fns.sh.in
executable file
·140 lines (120 loc) · 3.34 KB
/
test-fns.sh.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!@SH_PROG@
# -*- shell-script -*-
test_fns_copies()
{
typeset result='bogus'
# _Dbg_copies 'a' 'b'
# assertFalse '_Dbg_copies "a" "b" should fail' "$?"
_Dbg_copies 'a' -1
assertFalse '_Dbg_copies "a" -1 should fail' "$?"
_Dbg_copies 'a' 3
assertTrue '_Dbg_copies "a" 3 should succeed' "$?"
assertEquals 'aaa' "$result"
_Dbg_copies ' ab' 4
assertTrue '_Dbg_copies " ab" 4 should succeed' "$?"
assertEquals ' ab ab ab ab' "$result"
}
# Test _Dbg_eqs_dq
test_fns_esc_dq_function()
{
check_esc_dq () {
local orig="$1"
local transform="$(_Dbg_esc_dq "$orig")"
eval 'got=$(echo "$1")'
assertEquals "$orig" "$got"
}
check_esc_dq 'Now is the time'
check_esc_dq '"Now is the time"'
check_esc_dq 'Make $$'
assertEquals 'abc' $(_Dbg_esc_dq abc)
assertEquals '\\\"abc\\\"' $(_Dbg_esc_dq '\"abc\"')
assertEquals '\\\"a\\bc\\\"' $(_Dbg_esc_dq '\"a\bc\"')
}
# Test _Dbg_set_entry and _Dbg_set_to_return_from_debugger
test_fns_esc_dbg_enter_return() {
local old_IFS="$IFS"
local old_PS4="$PS4"
local myps4="Well, isn't that just dandy."
IFS='hi there'
PS4="$myps4"
_Dbg_set_debugger_entry
_Dbg_restore_user_vars
IFS=$old_IFS
assertEquals "$myps4" "$PS4"
PS4=$old_PS4
}
# Test _Dbg_defined
test_fns_defined()
{
_Dbg_defined
assertFalse 'No variable given; is_function should report false' $?
unset xxx
_Dbg_defined xxx
assertFalse 'variable xxx should not be defined' $?
typeset xxx=1
_Dbg_defined xxx
assertTrue 'variable xxx should be defined' $?
}
test_fns_parse_linespec()
{
typeset word
_Dbg_frame_last_filename='foo'
_Dbg_parse_linespec 123
assertEquals 0 $?
result=${word[@]}
assertEquals '123 0 foo' "$result"
_Dbg_parse_linespec
assertEquals 1 $?
_Dbg_parse_linespec abc.txt:456
assertEquals 0 $?
result=${word[@]}
assertEquals '456 0 abc.txt' "$result"
_Dbg_parse_linespec :4
assertEquals 1 $?
_Dbg_parse_linespec a:
assertEquals 1 $?
_Dbg_parse_linespec test_fns_parse_linespec
assertEquals 0 $?
assertEquals 1 ${word[1]}
}
# Test _Dbg_set_dol_q
test_fns_set_q()
{
_Dbg_set_dol_q 1
assertFalse '$? should have been set to 1==false' $?
_Dbg_set_dol_q 0
assertTrue '$? should have been set to 0==true' $?
# # Test without giving a parameter
# local _Ddg_debugged_exit_code=0
# _Dbg_set_dol_q
# assertTrue '$? should be set true via _Dbg_debugged_exit_code' $?
# _Ddg_debugged_exit_code=1
# _Dbg_set_dol_q
# assertFalse '$? should be set false via _Dbg_debugged_exit_code' $?
}
# Test _Dbg_split
test_fns_split()
{
setopt ksharrays
typeset -a words
_Dbg_split 'foo.c:5' ':'
assertEquals 'foo.c' ${split_result[0]}
assertEquals '5' ${split_result[1]}
}
if [ '@abs_top_srcdir@' = '' ] ; then
echo "Something is wrong abs_top_srcdir is not set."
exit 1
fi
abs_top_srcdir=@abs_top_srcdir@
# Make sure @abs_top_srcdir@ has a trailing slash
abs_top_srcdir=${abs_top_srcdir%%/}/
. ${abs_top_srcdir}test/unit/helper.sh
. ${abs_top_srcdir}dbg-pre.sh
. ${abs_top_srcdir}lib/fns.sh
. ${abs_top_srcdir}lib/frame.sh
. ${abs_top_srcdir}lib/journal.sh
. ${abs_top_srcdir}lib/save-restore.sh
. ${abs_top_srcdir}lib/validate.sh
set -- # reset $# so shunit2 doesn't get confused.
SHUNIT_PARENT=$0
[[ @CMDLINE_INVOKED@ ]] && . ${shunit_file}