debugger 1.2.4 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +14 -0
- data/.travis.yml +0 -1
- data/CHANGELOG.md +9 -0
- data/Gemfile +3 -0
- data/README.md +2 -0
- data/Rakefile +3 -55
- data/debugger.gemspec +2 -0
- data/lib/debugger/version.rb +1 -1
- data/lib/ruby-debug-base.rb +3 -1
- data/lib/ruby-debug/commands/irb.rb +1 -1
- data/lib/ruby-debug/commands/jump.rb +1 -1
- data/lib/ruby-debug/commands/method.rb +1 -1
- data/lib/ruby-debug/commands/show.rb +1 -1
- data/lib/ruby-debug/commands/trace.rb +2 -2
- data/lib/ruby-debug/commands/variables.rb +3 -3
- data/test/breakpoints_test.rb +365 -0
- data/test/conditions_test.rb +76 -0
- data/test/continue_test.rb +28 -0
- data/test/display_test.rb +141 -0
- data/test/edit_test.rb +55 -0
- data/test/eval_test.rb +92 -0
- data/test/examples/breakpoint1.rb +15 -0
- data/test/examples/breakpoint2.rb +7 -0
- data/test/examples/conditions.rb +4 -0
- data/test/examples/continue.rb +4 -0
- data/test/examples/display.rb +5 -0
- data/test/examples/edit.rb +3 -0
- data/test/examples/edit2.rb +3 -0
- data/test/examples/eval.rb +4 -0
- data/test/examples/finish.rb +20 -0
- data/test/examples/frame.rb +31 -0
- data/test/examples/help.rb +2 -0
- data/test/examples/info.rb +48 -0
- data/test/examples/info2.rb +3 -0
- data/test/examples/irb.rb +6 -0
- data/test/examples/jump.rb +14 -0
- data/test/examples/kill.rb +2 -0
- data/test/examples/list.rb +12 -0
- data/test/examples/method.rb +15 -0
- data/test/examples/post_mortem.rb +19 -0
- data/test/examples/quit.rb +2 -0
- data/test/examples/reload.rb +6 -0
- data/test/examples/restart.rb +6 -0
- data/test/examples/save.rb +3 -0
- data/test/examples/set.rb +3 -0
- data/test/examples/set_annotate.rb +12 -0
- data/test/examples/settings.rb +1 -0
- data/test/examples/show.rb +2 -0
- data/test/examples/source.rb +3 -0
- data/test/examples/stepping.rb +21 -0
- data/test/examples/thread.rb +32 -0
- data/test/examples/tmate.rb +10 -0
- data/test/examples/trace.rb +7 -0
- data/test/examples/trace_threads.rb +20 -0
- data/test/examples/variables.rb +26 -0
- data/test/finish_test.rb +48 -0
- data/test/frame_test.rb +140 -0
- data/test/help_test.rb +50 -0
- data/test/info_test.rb +325 -0
- data/test/irb_test.rb +81 -0
- data/test/jump_test.rb +70 -0
- data/test/kill_test.rb +47 -0
- data/test/list_test.rb +145 -0
- data/test/method_test.rb +70 -0
- data/test/post_mortem_test.rb +25 -0
- data/test/quit_test.rb +55 -0
- data/test/reload_test.rb +43 -0
- data/test/restart_test.rb +143 -0
- data/test/save_test.rb +92 -0
- data/test/set_test.rb +163 -0
- data/test/show_test.rb +292 -0
- data/test/source_test.rb +44 -0
- data/test/stepping_test.rb +118 -0
- data/test/support/breakpoint.rb +12 -0
- data/test/support/context.rb +14 -0
- data/test/support/matchers.rb +67 -0
- data/test/support/mocha_extensions.rb +71 -0
- data/test/support/processor.rb +7 -0
- data/test/support/test_dsl.rb +205 -0
- data/test/support/test_interface.rb +66 -0
- data/test/test_helper.rb +8 -0
- data/test/thread_test.rb +122 -0
- data/test/tmate_test.rb +43 -0
- data/test/trace_test.rb +154 -0
- data/test/variables_test.rb +114 -0
- metadata +107 -158
- data/test/base/base.rb +0 -71
- data/test/base/binding.rb +0 -24
- data/test/base/catchpoint.rb +0 -22
- data/test/base/load.rb +0 -36
- data/test/bp_loop_issue.rb +0 -3
- data/test/classes.rb +0 -11
- data/test/config.yaml +0 -8
- data/test/data/annotate.cmd +0 -29
- data/test/data/annotate.right +0 -139
- data/test/data/break_bad.cmd +0 -18
- data/test/data/break_bad.right +0 -28
- data/test/data/break_loop_bug.cmd +0 -5
- data/test/data/break_loop_bug.right +0 -15
- data/test/data/breakpoints.cmd +0 -38
- data/test/data/breakpoints.right +0 -98
- data/test/data/catch.cmd +0 -20
- data/test/data/catch.right +0 -49
- data/test/data/catch2.cmd +0 -19
- data/test/data/catch2.right +0 -65
- data/test/data/catch3.cmd +0 -11
- data/test/data/catch3.right +0 -37
- data/test/data/condition.cmd +0 -28
- data/test/data/condition.right +0 -65
- data/test/data/ctrl.cmd +0 -23
- data/test/data/ctrl.right +0 -70
- data/test/data/display.cmd +0 -24
- data/test/data/display.right +0 -44
- data/test/data/dollar-0.right +0 -2
- data/test/data/dollar-0a.right +0 -2
- data/test/data/dollar-0b.right +0 -2
- data/test/data/edit.cmd +0 -12
- data/test/data/edit.right +0 -19
- data/test/data/emacs_basic.cmd +0 -43
- data/test/data/emacs_basic.right +0 -106
- data/test/data/enable.cmd +0 -20
- data/test/data/enable.right +0 -36
- data/test/data/finish.cmd +0 -16
- data/test/data/finish.right +0 -31
- data/test/data/frame.cmd +0 -26
- data/test/data/frame.right +0 -55
- data/test/data/help.cmd +0 -20
- data/test/data/help.right +0 -21
- data/test/data/history.right +0 -7
- data/test/data/info-thread.cmd +0 -13
- data/test/data/info-thread.right +0 -37
- data/test/data/info-var-bug2.cmd +0 -5
- data/test/data/info-var-bug2.right +0 -10
- data/test/data/info-var.cmd +0 -23
- data/test/data/info-var.right +0 -52
- data/test/data/info.cmd +0 -21
- data/test/data/info.right +0 -65
- data/test/data/jump.cmd +0 -16
- data/test/data/jump.right +0 -56
- data/test/data/jump2.cmd +0 -16
- data/test/data/jump2.right +0 -44
- data/test/data/linetrace.cmd +0 -6
- data/test/data/linetrace.right +0 -23
- data/test/data/list.cmd +0 -19
- data/test/data/list.right +0 -127
- data/test/data/method.cmd +0 -10
- data/test/data/method.right +0 -21
- data/test/data/methodsig.cmd +0 -10
- data/test/data/methodsig.right +0 -20
- data/test/data/next.cmd +0 -22
- data/test/data/next.right +0 -61
- data/test/data/noquit.right +0 -1
- data/test/data/output.cmd +0 -6
- data/test/data/output.right +0 -31
- data/test/data/pm-bug.cmd +0 -7
- data/test/data/pm-bug.right +0 -12
- data/test/data/post-mortem-next.cmd +0 -8
- data/test/data/post-mortem-next.right +0 -14
- data/test/data/post-mortem-osx.right +0 -31
- data/test/data/post-mortem.cmd +0 -13
- data/test/data/post-mortem.right +0 -32
- data/test/data/quit.cmd +0 -6
- data/test/data/quit.right +0 -0
- data/test/data/raise.cmd +0 -11
- data/test/data/raise.right +0 -23
- data/test/data/save.cmd +0 -34
- data/test/data/save.right +0 -59
- data/test/data/scope-var.cmd +0 -42
- data/test/data/scope-var.right +0 -587
- data/test/data/setshow.cmd +0 -56
- data/test/data/setshow.right +0 -98
- data/test/data/source.cmd +0 -5
- data/test/data/source.right +0 -15
- data/test/data/stepping.cmd +0 -21
- data/test/data/stepping.right +0 -50
- data/test/data/test-init-cygwin.right +0 -7
- data/test/data/test-init-osx.right +0 -4
- data/test/data/test-init.right +0 -5
- data/test/data/trace.right +0 -14
- data/test/dollar-0.rb +0 -5
- data/test/gcd-dbg-nox.rb +0 -30
- data/test/gcd-dbg.rb +0 -29
- data/test/gcd.rb +0 -18
- data/test/helper.rb +0 -142
- data/test/info-var-bug.rb +0 -47
- data/test/info-var-bug2.rb +0 -2
- data/test/jump.rb +0 -14
- data/test/jump2.rb +0 -27
- data/test/lib/commands/catchpoint_test.rb +0 -28
- data/test/lib/commands/unit/regexp.rb +0 -38
- data/test/next.rb +0 -18
- data/test/null.rb +0 -1
- data/test/output.rb +0 -2
- data/test/pm-base.rb +0 -17
- data/test/pm-bug.rb +0 -3
- data/test/pm-catch.rb +0 -12
- data/test/pm-catch2.rb +0 -27
- data/test/pm-catch3.rb +0 -47
- data/test/pm.rb +0 -11
- data/test/raise.rb +0 -3
- data/test/rdebug-save.1 +0 -7
- data/test/runall +0 -12
- data/test/scope-var.rb +0 -29
- data/test/tdebug.rb +0 -246
- data/test/test-annotate.rb +0 -24
- data/test/test-break-bad.rb +0 -36
- data/test/test-breakpoints.rb +0 -24
- data/test/test-catch.rb +0 -24
- data/test/test-catch2.rb +0 -24
- data/test/test-catch3.rb +0 -24
- data/test/test-condition.rb +0 -24
- data/test/test-ctrl.rb +0 -51
- data/test/test-display.rb +0 -25
- data/test/test-dollar-0.rb +0 -39
- data/test/test-edit.rb +0 -25
- data/test/test-emacs-basic.rb +0 -25
- data/test/test-enable.rb +0 -24
- data/test/test-finish.rb +0 -33
- data/test/test-frame.rb +0 -33
- data/test/test-help.rb +0 -54
- data/test/test-hist.rb +0 -65
- data/test/test-info-thread.rb +0 -31
- data/test/test-info-var.rb +0 -46
- data/test/test-info.rb +0 -25
- data/test/test-init.rb +0 -43
- data/test/test-jump.rb +0 -34
- data/test/test-list.rb +0 -24
- data/test/test-method.rb +0 -33
- data/test/test-next.rb +0 -24
- data/test/test-output.rb +0 -25
- data/test/test-quit.rb +0 -29
- data/test/test-raise.rb +0 -24
- data/test/test-remote.rb +0 -14
- data/test/test-save.rb +0 -30
- data/test/test-scope-var.rb +0 -24
- data/test/test-setshow.rb +0 -24
- data/test/test-source.rb +0 -24
- data/test/test-stepping.rb +0 -25
- data/test/test-trace.rb +0 -46
- data/test/thread1.rb +0 -25
- data/test/trunc-call.rb +0 -30
data/test/data/setshow.cmd
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
# This tests the functioning of some set/show debugger commands
|
2
|
-
set debuggertesting on
|
3
|
-
### *******************************
|
4
|
-
### *** Set/show commands ***
|
5
|
-
### *******************************
|
6
|
-
########################################
|
7
|
-
### test args and baseneme...
|
8
|
-
########################################
|
9
|
-
set args this is a test
|
10
|
-
show args
|
11
|
-
show basename
|
12
|
-
set basename foo
|
13
|
-
show base
|
14
|
-
set basename off
|
15
|
-
show basename
|
16
|
-
set basename 0
|
17
|
-
show basename
|
18
|
-
set basename 1
|
19
|
-
show basename
|
20
|
-
########################################
|
21
|
-
### test listsize tests...
|
22
|
-
########################################
|
23
|
-
show listsize
|
24
|
-
show listsi
|
25
|
-
set listsize abc
|
26
|
-
set listsize -20
|
27
|
-
########################################
|
28
|
-
### test linetrace...
|
29
|
-
########################################
|
30
|
-
set linetrace on
|
31
|
-
show linetrace
|
32
|
-
set linetrace off
|
33
|
-
show linetrace
|
34
|
-
########################################
|
35
|
-
### show history
|
36
|
-
########################################
|
37
|
-
set history
|
38
|
-
set history size 10
|
39
|
-
show history size
|
40
|
-
set history save off
|
41
|
-
show history save
|
42
|
-
set history save 1
|
43
|
-
show history save
|
44
|
-
#### Test 'autoeval'...
|
45
|
-
set autoeval on
|
46
|
-
puts 'printed via autoeval'
|
47
|
-
set autoeval off
|
48
|
-
puts 'autoeval should not run this'
|
49
|
-
#### Test 'callstyle'...
|
50
|
-
set callstyle
|
51
|
-
set callstyle short
|
52
|
-
set callstyle last
|
53
|
-
set callstyle tracked
|
54
|
-
set callstyle foo
|
55
|
-
|
56
|
-
|
data/test/data/setshow.right
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
gcd.rb:4
|
2
|
-
def gcd(a, b)
|
3
|
-
# # This tests the functioning of some set/show debugger commands
|
4
|
-
# set debuggertesting on
|
5
|
-
Currently testing the debugger is on.
|
6
|
-
# ### *******************************
|
7
|
-
# ### *** Set/show commands ***
|
8
|
-
# ### *******************************
|
9
|
-
# ########################################
|
10
|
-
# ### test args and baseneme...
|
11
|
-
# ########################################
|
12
|
-
# set args this is a test
|
13
|
-
Argument list to give program being debugged when it is started is "this is a test".
|
14
|
-
# show args
|
15
|
-
Argument list to give program being debugged when it is started is "this is a test".
|
16
|
-
# show basename
|
17
|
-
basename is on.
|
18
|
-
# set basename foo
|
19
|
-
Expecting 'on', 1, 'off', or 0. Got: foo.
|
20
|
-
# show base
|
21
|
-
basename is on.
|
22
|
-
# set basename off
|
23
|
-
basename is off.
|
24
|
-
# show basename
|
25
|
-
basename is off.
|
26
|
-
# set basename 0
|
27
|
-
basename is off.
|
28
|
-
# show basename
|
29
|
-
basename is off.
|
30
|
-
# set basename 1
|
31
|
-
basename is on.
|
32
|
-
# show basename
|
33
|
-
basename is on.
|
34
|
-
# ########################################
|
35
|
-
# ### test listsize tests...
|
36
|
-
# ########################################
|
37
|
-
# show listsize
|
38
|
-
Number of source lines to list by default is 10.
|
39
|
-
# show listsi
|
40
|
-
Number of source lines to list by default is 10.
|
41
|
-
# set listsize abc
|
42
|
-
Set listsize argument 'abc' needs to be a number.
|
43
|
-
# set listsize -20
|
44
|
-
Set listsize argument '-20' needs to at least 1.
|
45
|
-
# ########################################
|
46
|
-
# ### test linetrace...
|
47
|
-
# ########################################
|
48
|
-
# set linetrace on
|
49
|
-
line tracing is on.
|
50
|
-
# show linetrace
|
51
|
-
line tracing is on.
|
52
|
-
# set linetrace off
|
53
|
-
line tracing is off.
|
54
|
-
# show linetrace
|
55
|
-
line tracing is off.
|
56
|
-
# ########################################
|
57
|
-
# ### show history
|
58
|
-
# ########################################
|
59
|
-
# set history
|
60
|
-
Need two parameters for 'set history'; got 0.
|
61
|
-
# set history size 10
|
62
|
-
Debugger history size is 10
|
63
|
-
# show history size
|
64
|
-
Debugger history size is 10
|
65
|
-
# set history save off
|
66
|
-
Saving of history save is off.
|
67
|
-
# show history save
|
68
|
-
Saving of history save is off.
|
69
|
-
# set history save 1
|
70
|
-
Saving of history save is on.
|
71
|
-
# show history save
|
72
|
-
Saving of history save is on.
|
73
|
-
# #### Test 'autoeval'...
|
74
|
-
# set autoeval on
|
75
|
-
autoeval is on.
|
76
|
-
# puts 'printed via autoeval'
|
77
|
-
printed via autoeval
|
78
|
-
nil
|
79
|
-
# set autoeval off
|
80
|
-
autoeval is off.
|
81
|
-
# puts 'autoeval should not run this'
|
82
|
-
*** Unknown command: "puts 'autoeval should not run this'". Try "help".
|
83
|
-
# #### Test 'callstyle'...
|
84
|
-
# set callstyle
|
85
|
-
Invalid call style . Should be one of: 'short' or 'last'.
|
86
|
-
Frame call-display style is last.
|
87
|
-
# set callstyle short
|
88
|
-
Frame call-display style is short.
|
89
|
-
# set callstyle last
|
90
|
-
Frame call-display style is last.
|
91
|
-
# set callstyle tracked
|
92
|
-
Invalid call style tracked. Should be one of: 'short' or 'last'.
|
93
|
-
Frame call-display style is last.
|
94
|
-
# set callstyle foo
|
95
|
-
Invalid call style foo. Should be one of: 'short' or 'last'.
|
96
|
-
Frame call-display style is last.
|
97
|
-
#
|
98
|
-
#
|
data/test/data/source.cmd
DELETED
data/test/data/source.right
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
gcd.rb:4
|
2
|
-
def gcd(a, b)
|
3
|
-
# # Test the source command
|
4
|
-
# # rdebug-save has breakpoint commands
|
5
|
-
# set debuggertesting on
|
6
|
-
Currently testing the debugger is on.
|
7
|
-
# source ./rdebug-save.1
|
8
|
-
Breakpoint 1 file gcd.rb, line 10
|
9
|
-
Breakpoint 2 file gcd.rb, line 12
|
10
|
-
autoeval is on.
|
11
|
-
basename is off.
|
12
|
-
Currently testing the debugger is on.
|
13
|
-
autolist is off.
|
14
|
-
autoirb is off.
|
15
|
-
# quit
|
data/test/data/stepping.cmd
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# ***************************************************
|
2
|
-
# This tests step, next, finish and continue
|
3
|
-
# ***************************************************
|
4
|
-
set debuggertesting on
|
5
|
-
set callstyle last
|
6
|
-
next
|
7
|
-
where
|
8
|
-
step a
|
9
|
-
set forcestep on
|
10
|
-
step- ; step-
|
11
|
-
set forcestep off
|
12
|
-
where
|
13
|
-
next
|
14
|
-
step+
|
15
|
-
where
|
16
|
-
step 3
|
17
|
-
step+
|
18
|
-
where
|
19
|
-
next+
|
20
|
-
# finish
|
21
|
-
quit
|
data/test/data/stepping.right
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
gcd.rb:4
|
2
|
-
def gcd(a, b)
|
3
|
-
# # ***************************************************
|
4
|
-
# # This tests step, next, finish and continue
|
5
|
-
# # ***************************************************
|
6
|
-
# set debuggertesting on
|
7
|
-
Currently testing the debugger is on.
|
8
|
-
# set callstyle last
|
9
|
-
Frame call-display style is last.
|
10
|
-
# next
|
11
|
-
gcd.rb:18
|
12
|
-
gcd(3,5)
|
13
|
-
# where
|
14
|
-
--> #0 at line gcd.rb:18
|
15
|
-
# step a
|
16
|
-
Step argument 'a' needs to be a number.
|
17
|
-
# set forcestep on
|
18
|
-
force-stepping is on.
|
19
|
-
# step- ; step-
|
20
|
-
gcd.rb:6
|
21
|
-
if a > b
|
22
|
-
# set forcestep off
|
23
|
-
force-stepping is off.
|
24
|
-
# where
|
25
|
-
--> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:6
|
26
|
-
#1 at line gcd.rb:18
|
27
|
-
# next
|
28
|
-
gcd.rb:10
|
29
|
-
return nil if a <= 0
|
30
|
-
# step+
|
31
|
-
gcd.rb:12
|
32
|
-
if a == 1 or b-a == 0
|
33
|
-
# where
|
34
|
-
--> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:12
|
35
|
-
#1 at line gcd.rb:18
|
36
|
-
# step 3
|
37
|
-
gcd.rb:10
|
38
|
-
return nil if a <= 0
|
39
|
-
# step+
|
40
|
-
gcd.rb:12
|
41
|
-
if a == 1 or b-a == 0
|
42
|
-
# where
|
43
|
-
--> #0 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:12
|
44
|
-
#1 Object.gcd(a#Fixnum, b#Fixnum) at line gcd.rb:15
|
45
|
-
#2 at line gcd.rb:18
|
46
|
-
# next+
|
47
|
-
gcd.rb:15
|
48
|
-
gcd(b-a, a)
|
49
|
-
# # finish
|
50
|
-
# quit
|
data/test/data/test-init.right
DELETED
data/test/data/trace.right
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
Tracing(1):./gcd.rb:4 def gcd(a, b)
|
2
|
-
Tracing(1):./gcd.rb:18 gcd(3,5)
|
3
|
-
Tracing(1):./gcd.rb:6 if a > b
|
4
|
-
Tracing(1):./gcd.rb:10 return nil if a <= 0
|
5
|
-
Tracing(1):./gcd.rb:12 if a == 1 or b-a == 0
|
6
|
-
Tracing(1):./gcd.rb:15 gcd(b-a, a)
|
7
|
-
Tracing(1):./gcd.rb:6 if a > b
|
8
|
-
Tracing(1):./gcd.rb:10 return nil if a <= 0
|
9
|
-
Tracing(1):./gcd.rb:12 if a == 1 or b-a == 0
|
10
|
-
Tracing(1):./gcd.rb:15 gcd(b-a, a)
|
11
|
-
Tracing(1):./gcd.rb:6 if a > b
|
12
|
-
Tracing(1):./gcd.rb:10 return nil if a <= 0
|
13
|
-
Tracing(1):./gcd.rb:12 if a == 1 or b-a == 0
|
14
|
-
Tracing(1):./gcd.rb:13 return a
|
data/test/dollar-0.rb
DELETED
data/test/gcd-dbg-nox.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# This program is *NOT* supposed to be executable, but called
|
2
|
-
# via ruby (in order to test that restart provides a funky $:).
|
3
|
-
# This program is used to test that 'restart' works when we didn't call
|
4
|
-
# the debugger initially.
|
5
|
-
|
6
|
-
TOP_SRC_DIR = File.join(File.expand_path(File.dirname(__FILE__), '..')) unless
|
7
|
-
defined?(TOP_SRC_DIR)
|
8
|
-
|
9
|
-
$:.unshift File.join(TOP_SRC_DIR, 'ext')
|
10
|
-
$:.unshift File.join(TOP_SRC_DIR, 'lib')
|
11
|
-
require 'ruby-debug'
|
12
|
-
Debugger.init
|
13
|
-
|
14
|
-
# GCD. We assume positive numbers
|
15
|
-
def gcd(a, b)
|
16
|
-
# Make: a <= b
|
17
|
-
debugger
|
18
|
-
if a > b
|
19
|
-
a, b = [b, a]
|
20
|
-
end
|
21
|
-
|
22
|
-
return nil if a <= 0
|
23
|
-
|
24
|
-
if a == 1 or b-a == 0
|
25
|
-
return a
|
26
|
-
end
|
27
|
-
return gcd(b-a, a)
|
28
|
-
end
|
29
|
-
|
30
|
-
gcd(3,5)
|
data/test/gcd-dbg.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This program is used to test that 'restart' works when we didn't call
|
3
|
-
# the debugger initially.
|
4
|
-
|
5
|
-
TOP_SRC_DIR = File.join(File.expand_path(File.dirname(__FILE__), "..")) unless
|
6
|
-
defined?(TOP_SRC_DIR)
|
7
|
-
|
8
|
-
$:.unshift File.join(TOP_SRC_DIR, "ext")
|
9
|
-
$:.unshift File.join(TOP_SRC_DIR, "lib")
|
10
|
-
require 'ruby-debug'
|
11
|
-
|
12
|
-
|
13
|
-
# GCD. We assume positive numbers
|
14
|
-
def gcd(a, b)
|
15
|
-
# Make: a <= b
|
16
|
-
debugger
|
17
|
-
if a > b
|
18
|
-
a, b = [b, a]
|
19
|
-
end
|
20
|
-
|
21
|
-
return nil if a <= 0
|
22
|
-
|
23
|
-
if a == 1 or b-a == 0
|
24
|
-
return a
|
25
|
-
end
|
26
|
-
return gcd(b-a, a)
|
27
|
-
end
|
28
|
-
|
29
|
-
gcd(3,5)
|
data/test/gcd.rb
DELETED
data/test/helper.rb
DELETED
@@ -1,142 +0,0 @@
|
|
1
|
-
# Some common routines used in testing.
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
require 'yaml'
|
5
|
-
# require 'diff/lcs'
|
6
|
-
# require 'diff/lcs/hunk'
|
7
|
-
|
8
|
-
# require 'ruby-debug'; Debugger.start
|
9
|
-
|
10
|
-
module TestHelper
|
11
|
-
|
12
|
-
# FIXME: turn args into a hash.
|
13
|
-
def run_debugger(testname, args='', outfile=nil, filter=nil, old_code=false,
|
14
|
-
debug_pgm='tdebug.rb')
|
15
|
-
rightfile = File.join('data', "#{testname}.right")
|
16
|
-
|
17
|
-
outfile = "#{testname}.out" unless outfile
|
18
|
-
|
19
|
-
if File.exists?(outfile)
|
20
|
-
FileUtils.rm(outfile)
|
21
|
-
end
|
22
|
-
|
23
|
-
ENV['RDEBUG'] = debug_pgm
|
24
|
-
|
25
|
-
if old_code
|
26
|
-
cmd = "/bin/sh #{File.join('..', 'runner.sh')} #{args} >#{outfile}"
|
27
|
-
else
|
28
|
-
cmd = "#{"#{load_ruby} #{load_params} "}../rdbg.rb #{args} > #{outfile}"
|
29
|
-
end
|
30
|
-
puts "'#{cmd}'" if $DEBUG
|
31
|
-
output = `#{cmd}`
|
32
|
-
|
33
|
-
curr_path = Dir.pwd
|
34
|
-
got_lines = File.read(outfile).split(/\n/).map{|s| s.sub(curr_path, '.') }
|
35
|
-
correct_lines = File.read(rightfile).split(/\n/)
|
36
|
-
filter.call(got_lines, correct_lines) if filter
|
37
|
-
if cheap_diff(got_lines, correct_lines)
|
38
|
-
FileUtils.rm(outfile)
|
39
|
-
return true
|
40
|
-
end
|
41
|
-
return false
|
42
|
-
end
|
43
|
-
|
44
|
-
def cheap_diff(got_lines, correct_lines)
|
45
|
-
if $DEBUG
|
46
|
-
got_lines.each_with_index do |line, i|
|
47
|
-
printf "%3d %s\n", i+1, line
|
48
|
-
end
|
49
|
-
end
|
50
|
-
correct_lines.each_with_index do |line, i|
|
51
|
-
correct_lines[i].chomp!
|
52
|
-
if got_lines[i] != correct_lines[i]
|
53
|
-
puts "difference found at line #{i+1}"
|
54
|
-
puts "got : #{got_lines[i]}"
|
55
|
-
puts "need: #{correct_lines[i]}"
|
56
|
-
return false
|
57
|
-
end
|
58
|
-
end
|
59
|
-
if correct_lines.size != got_lines.size
|
60
|
-
puts("difference in number of lines: " +
|
61
|
-
"#{correct_lines.size} vs. #{got_lines.size}")
|
62
|
-
return false
|
63
|
-
end
|
64
|
-
return true
|
65
|
-
end
|
66
|
-
|
67
|
-
# FIXME: using this causes the same test to get run several times
|
68
|
-
# and some tests fail probably because of a lack of environment isolation.
|
69
|
-
# Many tests follow a basic pattern: run the debugger with a given
|
70
|
-
# debugger script and compare output produced. The following creates
|
71
|
-
# this kind of test.
|
72
|
-
def add_test(base_name, src_dir, script_name=nil, cmd=nil, test_name=nil)
|
73
|
-
puts "+++ Adding #{base_name} ++++" if $DEBUG
|
74
|
-
test_name = base_name unless test_name
|
75
|
-
script_name = File.join('data', test_name + '.cmd') unless script_name
|
76
|
-
cmd = 'gcd.rb 3 5' unless cmd
|
77
|
-
eval <<-EOF
|
78
|
-
def test_#{test_name}
|
79
|
-
Dir.chdir(\"#{src_dir}\") do
|
80
|
-
assert_equal(true,
|
81
|
-
run_debugger(\"#{base_name}\",
|
82
|
-
\"--script #{script_name} -- #{cmd}\"))
|
83
|
-
end
|
84
|
-
end
|
85
|
-
EOF
|
86
|
-
end
|
87
|
-
module_function :add_test
|
88
|
-
|
89
|
-
# Adapted from the Ruby Cookbook, Section 6.10: Comparing two files.
|
90
|
-
# def diff_as_string(rightfile, checkfile, format=:unified, context_lines=3)
|
91
|
-
# right_data = File.read(rightfile)
|
92
|
-
# check_data = File.read(checkfile)
|
93
|
-
# output = ''
|
94
|
-
# diffs = Diff::LCS.diff(right_data, check_data)
|
95
|
-
# return output if diffs.empty?
|
96
|
-
# oldhunk = hunk = nil
|
97
|
-
# file_length_difference = 0
|
98
|
-
# diffs.each do |piece|
|
99
|
-
# begin
|
100
|
-
# hunk = Diff::LCS::Hunk.new(right_data, check_data, piece,
|
101
|
-
# context_lines, file_length_difference)
|
102
|
-
# next unless oldhunk
|
103
|
-
#
|
104
|
-
# # Hunks may overlap, which is why we need to be careful when our
|
105
|
-
# # diff includes lines of context. Otherwise, we might print
|
106
|
-
# # redundant lines.
|
107
|
-
# if (context_lines > 0) and hunk.overlaps?(oldhunk)
|
108
|
-
# hunk.unshift(oldhunk)
|
109
|
-
# else
|
110
|
-
# output << oldhunk.diff(format)
|
111
|
-
# end
|
112
|
-
# ensure
|
113
|
-
# oldhunk = hunk
|
114
|
-
# output << '\n'
|
115
|
-
# end
|
116
|
-
# end
|
117
|
-
|
118
|
-
# # Handle the last remaining hunk
|
119
|
-
# output << oldhunk.diff(format) << '\n'
|
120
|
-
# end
|
121
|
-
|
122
|
-
# Loads key from the _config_._yaml_ file.
|
123
|
-
def config_load(key, may_be_nil=false, default_value='')
|
124
|
-
conf = File.join('config.private.yaml') # try private first
|
125
|
-
conf = File.join('config.yaml') unless File.exists?(conf)
|
126
|
-
value = YAML.load_file(conf)[key]
|
127
|
-
assert_not_nil(value, "#{key} is set in config.yaml") unless may_be_nil
|
128
|
-
value || default_value
|
129
|
-
end
|
130
|
-
module_function :config_load
|
131
|
-
|
132
|
-
def load_ruby
|
133
|
-
config_load('ruby', true)
|
134
|
-
end
|
135
|
-
module_function :load_ruby
|
136
|
-
|
137
|
-
def load_params
|
138
|
-
config_load('ruby_params', true)
|
139
|
-
end
|
140
|
-
module_function :load_params
|
141
|
-
|
142
|
-
end
|