rb8-trepanning 0.1.3

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.
Files changed (274) hide show
  1. data/.gitignore +3 -0
  2. data/CHANGES +34 -0
  3. data/ChangeLog +875 -0
  4. data/README.textile +59 -0
  5. data/Rakefile +215 -0
  6. data/app/.gitignore +1 -0
  7. data/app/cmd_parse.kpeg +241 -0
  8. data/app/cmd_parse.rb +212 -0
  9. data/app/cmd_parser.rb +1948 -0
  10. data/app/complete.rb +79 -0
  11. data/app/default.rb +90 -0
  12. data/app/display.rb +148 -0
  13. data/app/eventbuffer.rb +147 -0
  14. data/app/frame.rb +166 -0
  15. data/app/irb.rb +114 -0
  16. data/app/options.rb +200 -0
  17. data/app/run.rb +74 -0
  18. data/app/util.rb +65 -0
  19. data/bin/.gitignore +1 -0
  20. data/bin/trepan8 +115 -0
  21. data/data/.gitignore +1 -0
  22. data/data/irbrc +41 -0
  23. data/interface/.gitignore +1 -0
  24. data/interface/base_intf.rb +109 -0
  25. data/interface/client.rb +82 -0
  26. data/interface/comcodes.rb +20 -0
  27. data/interface/script.rb +110 -0
  28. data/interface/server.rb +147 -0
  29. data/interface/user.rb +165 -0
  30. data/io/base_io.rb +148 -0
  31. data/io/input.rb +158 -0
  32. data/io/null_output.rb +46 -0
  33. data/io/string_array.rb +156 -0
  34. data/io/tcpclient.rb +129 -0
  35. data/io/tcpfns.rb +33 -0
  36. data/io/tcpserver.rb +141 -0
  37. data/lib/debugger.rb +8 -0
  38. data/lib/trepanning.rb +283 -0
  39. data/processor/.gitignore +1 -0
  40. data/processor/command-ruby-debug/breakpoints.rb +155 -0
  41. data/processor/command-ruby-debug/catchpoint.rb +55 -0
  42. data/processor/command-ruby-debug/condition.rb +49 -0
  43. data/processor/command-ruby-debug/control.rb +31 -0
  44. data/processor/command-ruby-debug/display.rb +120 -0
  45. data/processor/command-ruby-debug/enable.rb +202 -0
  46. data/processor/command-ruby-debug/frame.rb +199 -0
  47. data/processor/command-ruby-debug/help.rb +63 -0
  48. data/processor/command-ruby-debug/info.rb +359 -0
  49. data/processor/command-ruby-debug/method.rb +84 -0
  50. data/processor/command-ruby-debug/reload.rb +40 -0
  51. data/processor/command-ruby-debug/save.rb +90 -0
  52. data/processor/command-ruby-debug/set.rb +237 -0
  53. data/processor/command-ruby-debug/show.rb +251 -0
  54. data/processor/command-ruby-debug/source.rb +36 -0
  55. data/processor/command-ruby-debug/threads.rb +189 -0
  56. data/processor/command-ruby-debug/trace.rb +57 -0
  57. data/processor/command-ruby-debug/variables.rb +199 -0
  58. data/processor/command.rb +270 -0
  59. data/processor/command/.gitignore +1 -0
  60. data/processor/command/alias.rb +54 -0
  61. data/processor/command/backtrace.rb +123 -0
  62. data/processor/command/base/cmd.rb +177 -0
  63. data/processor/command/base/subcmd.rb +230 -0
  64. data/processor/command/base/submgr.rb +188 -0
  65. data/processor/command/base/subsubcmd.rb +128 -0
  66. data/processor/command/base/subsubmgr.rb +199 -0
  67. data/processor/command/break.rb +114 -0
  68. data/processor/command/catch.rb +71 -0
  69. data/processor/command/complete.rb +39 -0
  70. data/processor/command/continue.rb +57 -0
  71. data/processor/command/directory.rb +50 -0
  72. data/processor/command/disable.rb +85 -0
  73. data/processor/command/display.rb +78 -0
  74. data/processor/command/down.rb +54 -0
  75. data/processor/command/edit.rb +79 -0
  76. data/processor/command/enable.rb +48 -0
  77. data/processor/command/eval.rb +90 -0
  78. data/processor/command/exit.rb +66 -0
  79. data/processor/command/finish.rb +59 -0
  80. data/processor/command/frame.rb +97 -0
  81. data/processor/command/help.rb +230 -0
  82. data/processor/command/help/.gitignore +1 -0
  83. data/processor/command/help/README +10 -0
  84. data/processor/command/help/command.txt +58 -0
  85. data/processor/command/help/examples.txt +16 -0
  86. data/processor/command/help/filename.txt +40 -0
  87. data/processor/command/help/location.txt +37 -0
  88. data/processor/command/help/suffixes.txt +17 -0
  89. data/processor/command/info.rb +28 -0
  90. data/processor/command/info_subcmd/.gitignore +1 -0
  91. data/processor/command/info_subcmd/args.rb +39 -0
  92. data/processor/command/info_subcmd/breakpoints.rb +80 -0
  93. data/processor/command/info_subcmd/catch.rb +36 -0
  94. data/processor/command/info_subcmd/files.rb +39 -0
  95. data/processor/command/info_subcmd/globals.rb +64 -0
  96. data/processor/command/info_subcmd/line.rb +30 -0
  97. data/processor/command/info_subcmd/locals.rb +69 -0
  98. data/processor/command/info_subcmd/macro.rb +62 -0
  99. data/processor/command/info_subcmd/program.rb +51 -0
  100. data/processor/command/info_subcmd/ruby.rb +57 -0
  101. data/processor/command/info_subcmd/source.rb +74 -0
  102. data/processor/command/info_subcmd/stack.rb +25 -0
  103. data/processor/command/info_subcmd/threads.rb +75 -0
  104. data/processor/command/kill.rb +78 -0
  105. data/processor/command/list.rb +117 -0
  106. data/processor/command/macro.rb +68 -0
  107. data/processor/command/next.rb +79 -0
  108. data/processor/command/parsetree.rb +56 -0
  109. data/processor/command/pp.rb +40 -0
  110. data/processor/command/pr.rb +37 -0
  111. data/processor/command/ps.rb +40 -0
  112. data/processor/command/restart.rb +86 -0
  113. data/processor/command/save.rb +58 -0
  114. data/processor/command/set.rb +47 -0
  115. data/processor/command/set_subcmd/.gitignore +1 -0
  116. data/processor/command/set_subcmd/abbrev.rb +25 -0
  117. data/processor/command/set_subcmd/auto.rb +27 -0
  118. data/processor/command/set_subcmd/auto_subcmd/.gitignore +1 -0
  119. data/processor/command/set_subcmd/auto_subcmd/eval.rb +53 -0
  120. data/processor/command/set_subcmd/auto_subcmd/irb.rb +33 -0
  121. data/processor/command/set_subcmd/auto_subcmd/list.rb +33 -0
  122. data/processor/command/set_subcmd/basename.rb +25 -0
  123. data/processor/command/set_subcmd/callstyle.rb +46 -0
  124. data/processor/command/set_subcmd/confirm.rb +24 -0
  125. data/processor/command/set_subcmd/debug.rb +47 -0
  126. data/processor/command/set_subcmd/different.rb +61 -0
  127. data/processor/command/set_subcmd/highlight.rb +43 -0
  128. data/processor/command/set_subcmd/max.rb +26 -0
  129. data/processor/command/set_subcmd/max_subcmd/list.rb +49 -0
  130. data/processor/command/set_subcmd/max_subcmd/stack.rb +50 -0
  131. data/processor/command/set_subcmd/max_subcmd/string.rb +76 -0
  132. data/processor/command/set_subcmd/max_subcmd/width.rb +49 -0
  133. data/processor/command/set_subcmd/reload.rb +42 -0
  134. data/processor/command/set_subcmd/timer.rb +58 -0
  135. data/processor/command/set_subcmd/trace.rb +37 -0
  136. data/processor/command/set_subcmd/trace_subcmd/buffer.rb +42 -0
  137. data/processor/command/set_subcmd/trace_subcmd/print.rb +41 -0
  138. data/processor/command/shell.rb +139 -0
  139. data/processor/command/show.rb +39 -0
  140. data/processor/command/show_subcmd/.gitignore +1 -0
  141. data/processor/command/show_subcmd/abbrev.rb +20 -0
  142. data/processor/command/show_subcmd/alias.rb +46 -0
  143. data/processor/command/show_subcmd/args.rb +34 -0
  144. data/processor/command/show_subcmd/auto.rb +28 -0
  145. data/processor/command/show_subcmd/auto_subcmd/eval.rb +27 -0
  146. data/processor/command/show_subcmd/auto_subcmd/irb.rb +23 -0
  147. data/processor/command/show_subcmd/auto_subcmd/list.rb +22 -0
  148. data/processor/command/show_subcmd/basename.rb +20 -0
  149. data/processor/command/show_subcmd/callstyle.rb +22 -0
  150. data/processor/command/show_subcmd/confirm.rb +18 -0
  151. data/processor/command/show_subcmd/debug.rb +26 -0
  152. data/processor/command/show_subcmd/debug_subcmd/dbgr.rb +21 -0
  153. data/processor/command/show_subcmd/debug_subcmd/skip.rb +22 -0
  154. data/processor/command/show_subcmd/debug_subcmd/step.rb +22 -0
  155. data/processor/command/show_subcmd/different.rb +26 -0
  156. data/processor/command/show_subcmd/directories.rb +22 -0
  157. data/processor/command/show_subcmd/highlight.rb +24 -0
  158. data/processor/command/show_subcmd/max.rb +27 -0
  159. data/processor/command/show_subcmd/max_subcmd/list.rb +38 -0
  160. data/processor/command/show_subcmd/max_subcmd/stack.rb +36 -0
  161. data/processor/command/show_subcmd/max_subcmd/string.rb +42 -0
  162. data/processor/command/show_subcmd/max_subcmd/width.rb +37 -0
  163. data/processor/command/show_subcmd/reload.rb +18 -0
  164. data/processor/command/show_subcmd/timer.rb +18 -0
  165. data/processor/command/show_subcmd/trace.rb +29 -0
  166. data/processor/command/show_subcmd/trace_subcmd/buffer.rb +65 -0
  167. data/processor/command/show_subcmd/trace_subcmd/print.rb +23 -0
  168. data/processor/command/show_subcmd/version.rb +23 -0
  169. data/processor/command/source.rb +134 -0
  170. data/processor/command/step.rb +81 -0
  171. data/processor/command/tbreak.rb +19 -0
  172. data/processor/command/unalias.rb +44 -0
  173. data/processor/command/undisplay.rb +59 -0
  174. data/processor/command/up.rb +72 -0
  175. data/processor/default.rb +56 -0
  176. data/processor/display.rb +17 -0
  177. data/processor/eval.rb +113 -0
  178. data/processor/eventbuf.rb +105 -0
  179. data/processor/frame.rb +172 -0
  180. data/processor/help.rb +92 -0
  181. data/processor/helper.rb +76 -0
  182. data/processor/hook.rb +134 -0
  183. data/processor/load_cmds.rb +258 -0
  184. data/processor/location.rb +174 -0
  185. data/processor/main.rb +455 -0
  186. data/processor/mock.rb +136 -0
  187. data/processor/msg.rb +61 -0
  188. data/processor/processor.rb +674 -0
  189. data/processor/running.rb +168 -0
  190. data/processor/stepping.rb +18 -0
  191. data/processor/subcmd.rb +161 -0
  192. data/processor/validate.rb +355 -0
  193. data/processor/virtual.rb +34 -0
  194. data/test/data/.gitignore +1 -0
  195. data/test/data/break_bad.cmd +19 -0
  196. data/test/data/break_bad.right +29 -0
  197. data/test/data/break_loop_bug.cmd +5 -0
  198. data/test/data/break_loop_bug.right +15 -0
  199. data/test/data/dollar-0.right +2 -0
  200. data/test/data/dollar-0a.right +2 -0
  201. data/test/data/dollar-0b.right +2 -0
  202. data/test/data/edit.cmd +14 -0
  203. data/test/data/edit.right +24 -0
  204. data/test/data/file-with-space.cmd +6 -0
  205. data/test/data/file-with-space.right +4 -0
  206. data/test/data/printvar.cmd +17 -0
  207. data/test/data/printvar.right +31 -0
  208. data/test/data/raise.cmd +11 -0
  209. data/test/data/raise.right +19 -0
  210. data/test/data/source.cmd +5 -0
  211. data/test/data/source.right +18 -0
  212. data/test/data/stepping-1.9.right +50 -0
  213. data/test/data/stepping.cmd +21 -0
  214. data/test/data/stepping.right +48 -0
  215. data/test/data/trepan8-save.1 +6 -0
  216. data/test/example/bp_loop_issue.rb +3 -0
  217. data/test/example/break-bug.rb +7 -0
  218. data/test/example/brkpt-class-bug.rb +8 -0
  219. data/test/example/classes.rb +11 -0
  220. data/test/example/dollar-0.rb +5 -0
  221. data/test/example/except-bug1.rb +4 -0
  222. data/test/example/except-bug2.rb +7 -0
  223. data/test/example/file with space.rb +1 -0
  224. data/test/example/gcd.rb +18 -0
  225. data/test/example/info-var-bug.rb +47 -0
  226. data/test/example/info-var-bug2.rb +2 -0
  227. data/test/example/null.rb +1 -0
  228. data/test/example/pm-bug.rb +3 -0
  229. data/test/example/pm.rb +11 -0
  230. data/test/example/raise.rb +3 -0
  231. data/test/integration/.gitignore +4 -0
  232. data/test/integration/config.yaml +8 -0
  233. data/test/integration/helper.rb +154 -0
  234. data/test/integration/test-break_bad.rb +26 -0
  235. data/test/integration/test-dollar-0.rb +31 -0
  236. data/test/integration/test-edit.rb +17 -0
  237. data/test/integration/test-file-with-space.rb +26 -0
  238. data/test/integration/test-printvar.rb +17 -0
  239. data/test/integration/test-raise.rb +21 -0
  240. data/test/integration/test-source.rb +16 -0
  241. data/test/integration/test-stepping.rb +24 -0
  242. data/test/unit/.gitignore +1 -0
  243. data/test/unit/cmd-helper.rb +52 -0
  244. data/test/unit/mock-helper.rb +12 -0
  245. data/test/unit/test-app-cmd_parse.rb +97 -0
  246. data/test/unit/test-app-cmd_parser.rb +23 -0
  247. data/test/unit/test-app-complete.rb +39 -0
  248. data/test/unit/test-app-frame.rb +32 -0
  249. data/test/unit/test-app-options.rb +92 -0
  250. data/test/unit/test-app-run.rb +14 -0
  251. data/test/unit/test-app-util.rb +44 -0
  252. data/test/unit/test-base-cmd.rb +45 -0
  253. data/test/unit/test-base-subcmd.rb +57 -0
  254. data/test/unit/test-base-submgr.rb +23 -0
  255. data/test/unit/test-base-subsubcmd.rb +17 -0
  256. data/test/unit/test-cmd-alias.rb +48 -0
  257. data/test/unit/test-cmd-exit.rb +27 -0
  258. data/test/unit/test-cmd-help.rb +104 -0
  259. data/test/unit/test-cmd-kill.rb +46 -0
  260. data/test/unit/test-cmd-source.rb +34 -0
  261. data/test/unit/test-completion.rb +42 -0
  262. data/test/unit/test-intf-user.rb +46 -0
  263. data/test/unit/test-io-input.rb +27 -0
  264. data/test/unit/test-io-tcp.rb +33 -0
  265. data/test/unit/test-io-tcpclient.rb +54 -0
  266. data/test/unit/test-io-tcpfns.rb +17 -0
  267. data/test/unit/test-io-tcpserver.rb +50 -0
  268. data/test/unit/test-proc-eval.rb +36 -0
  269. data/test/unit/test-proc-hook.rb +30 -0
  270. data/test/unit/test-proc-load_cmds.rb +50 -0
  271. data/test/unit/test-proc-location.rb +79 -0
  272. data/test/unit/test-subcmd-help.rb +44 -0
  273. data/trepan8.gemspec +52 -0
  274. metadata +391 -0
@@ -0,0 +1,11 @@
1
+ class Mine
2
+ def initialize
3
+ @myvar = 'init'
4
+ end
5
+ def mymethod(a, b=5, &block)
6
+ end
7
+ def self.classmeth
8
+ end
9
+ end
10
+ me = Mine.new
11
+ metoo = Mine(new)
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # A test to see that rdebug set's $0 properly.
3
+ puts $0
4
+ puts __FILE__
5
+
@@ -0,0 +1,4 @@
1
+ def foo(n)
2
+ 1/0
3
+ end
4
+ foo(5)
@@ -0,0 +1,7 @@
1
+ begin
2
+ exit
3
+ sleep 20
4
+ rescue SystemExit
5
+ printf("Exception caught\n")
6
+ end
7
+ puts "You can't debug here"
@@ -0,0 +1 @@
1
+ puts 'Ha!'
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # GCD. We assume positive numbers
4
+ def gcd(a, b)
5
+ # Make: a <= b
6
+ if a > b
7
+ a, b = [b, a]
8
+ end
9
+
10
+ return nil if a <= 0
11
+
12
+ if a == 1 or b-a == 0
13
+ return a
14
+ end
15
+ return gcd(b-a, a)
16
+ end
17
+
18
+ gcd(3,5)
@@ -0,0 +1,47 @@
1
+ class Lousy_inspect
2
+ attr_accessor :var
3
+ def inspect # An unhelpful inspect
4
+ throw "Foo" # Raises an exception
5
+ end
6
+ def initialize
7
+ @var = 'initialized'
8
+ end
9
+ end
10
+ class Lousy_inspect_and_to_s
11
+ attr_accessor :var
12
+ def inspect # An unhelpful inspect
13
+ throw "Foo" # Raises an exception
14
+ end
15
+ def to_s # An unhelpful to_s
16
+ throw "bar" # Raises an exception
17
+ end
18
+ def initialize
19
+ @var = 'initialized' # Something to inspect
20
+ end
21
+ end
22
+
23
+ # Something that will be passed objects with
24
+ # bad inspect or to_s methods
25
+ class UnsuspectingClass
26
+ @@Const = 'A constant'
27
+ @@var = 'a class variable'
28
+ def initialize(a)
29
+ @a = a # "info locals" will try to use
30
+ # inspect or to_s here
31
+ @b = 5
32
+ end
33
+ end
34
+ def test_Lousy_inspect
35
+ x = Lousy_inspect.new
36
+ return x
37
+ end
38
+ def test_lousy_inspect_and_to_s
39
+ x = Lousy_inspect_and_to_s.new
40
+ return x
41
+ end
42
+ x = test_Lousy_inspect
43
+ y = test_lousy_inspect_and_to_s
44
+ UnsuspectingClass.new(10)
45
+ UnsuspectingClass.new(x)
46
+ UnsuspectingClass.new(y)
47
+ y = 2
@@ -0,0 +1,2 @@
1
+ s = '<%= PRODUCT[:name] %>'
2
+ y = 0
@@ -0,0 +1 @@
1
+ # Nothing here. Move along.
@@ -0,0 +1,3 @@
1
+ a = 1
2
+ @x = 2
3
+ raise
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # Test Debugger.catchpoint and post-mortem handling
3
+ def zero_div
4
+ x = 5
5
+ 1/0
6
+ end
7
+ x = 2
8
+ zero_div
9
+ raise RuntimeError
10
+ x = 3
11
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ raise ZeroDivisionError
@@ -0,0 +1,4 @@
1
+
2
+ /*.out
3
+ /*~
4
+ /.ruby_inline
@@ -0,0 +1,8 @@
1
+ # Do not commit personal changes here back to the repository. Create
2
+ # config.private.yaml which, if exists, is preferred to this one.
3
+
4
+ # either should be on the $PATH or use full path
5
+ ruby: ruby
6
+
7
+ # possibility to specify interpreter parameters
8
+ #ruby_params: -w
@@ -0,0 +1,154 @@
1
+ # Some common routines used in testing.
2
+ require 'test/unit'
3
+ require 'fileutils'
4
+ require 'yaml'
5
+ # require 'diff/lcs'
6
+ # require 'diff/lcs/hunk'
7
+
8
+ # begin require 'rubygems' rescue LoadError end
9
+ # require 'ruby-debug'; Debugger.start
10
+
11
+ module TestHelper
12
+
13
+ module_function
14
+ def common_setup(file, testname=nil)
15
+ @srcdir = File.dirname(file)
16
+ @testname = testname || File.basename(file, '.rb').split(/-/)[1]
17
+ @script = File.join(%W(.. data #{@testname}.cmd))
18
+ @prefix = "--script #{@script} --nx --basename -- "
19
+ end
20
+
21
+ # FIXME: turn args into a hash.
22
+ def run_debugger(testname, args='', outfile=nil, filter=nil, old_code=false,
23
+ debug_pgm='tdebug.rb', rightfile=nil)
24
+ rightfile ||= File.join(%W(.. data #{testname}.right))
25
+
26
+ outfile = "#{testname}.out" unless outfile
27
+
28
+ if File.exists?(outfile)
29
+ FileUtils.rm(outfile)
30
+ end
31
+
32
+ ENV['TREPAN8'] = debug_pgm
33
+ ENV['TERM'] = ''
34
+
35
+ # The EMACS environment variable(s) cause output to
36
+ # get prefaced with null which will mess up file compares.
37
+ # So turn off EMACS output processing.
38
+ ENV['EMACS'] = ENV['INSIDE_EMACS'] = nil
39
+
40
+ cmd = "#{load_ruby} #{load_params} " +
41
+ "../../bin/trepan8 #{args} >#{outfile}"
42
+ puts "'#{cmd}'" if $DEBUG
43
+ output = `#{cmd}`
44
+
45
+ got_lines = File.read(outfile).split(/\n/)
46
+ correct_lines = File.read(rightfile).split(/\n/)
47
+ filter.call(got_lines, correct_lines) if filter
48
+ if cheap_diff(got_lines, correct_lines)
49
+ FileUtils.rm(outfile)
50
+ return true
51
+ end
52
+ return false
53
+ end
54
+
55
+ def cheap_diff(got_lines, correct_lines)
56
+ if $DEBUG
57
+ got_lines.each_with_index do |line, i|
58
+ printf "%3d %s\n", i+1, line
59
+ end
60
+ end
61
+ correct_lines.each_with_index do |line, i|
62
+ correct_lines[i].chomp!
63
+ if got_lines[i] != correct_lines[i]
64
+ puts "difference found at line #{i+1}"
65
+ puts "got : #{got_lines[i]}"
66
+ puts "need: #{correct_lines[i]}"
67
+ return false
68
+ end
69
+ end
70
+ if correct_lines.size != got_lines.size
71
+ puts("difference in number of lines: " +
72
+ "#{correct_lines.size} vs. #{got_lines.size}")
73
+ return false
74
+ end
75
+ return true
76
+ end
77
+
78
+ # FIXME: using this causes the same test to get run several times
79
+ # and some tests fail probably because of a lack of environment isolation.
80
+ # Many tests follow a basic pattern: run the debugger with a given
81
+ # debugger script and compare output produced. The following creates
82
+ # this kind of test.
83
+ def add_test(base_name, src_dir, script_name=nil, cmd=nil, test_name=nil)
84
+ puts "+++ Adding #{base_name} ++++" if $DEBUG
85
+ test_name = File.join('.', 'example', base_name) unless test_name
86
+ script_name = File.join(%W(.. data ../#{test_name}.cmd)) unless script_name
87
+ p script_name
88
+ cmd = 'gcd.rb 3 5' unless cmd
89
+ eval <<-EOF
90
+ def test_#{test_name}
91
+ Dir.chdir(\"#{src_dir}\") do
92
+ assert_equal(true,
93
+ run_debugger(\"#{base_name}\",
94
+ \"--script #{script_name} -- #{cmd}\"))
95
+ end
96
+ end
97
+ EOF
98
+ end
99
+ module_function :add_test
100
+
101
+ # Adapted from the Ruby Cookbook, Section 6.10: Comparing two files.
102
+ # def diff_as_string(rightfile, checkfile, format=:unified, context_lines=3)
103
+ # right_data = File.read(rightfile)
104
+ # check_data = File.read(checkfile)
105
+ # output = ''
106
+ # diffs = Diff::LCS.diff(right_data, check_data)
107
+ # return output if diffs.empty?
108
+ # oldhunk = hunk = nil
109
+ # file_length_difference = 0
110
+ # diffs.each do |piece|
111
+ # begin
112
+ # hunk = Diff::LCS::Hunk.new(right_data, check_data, piece,
113
+ # context_lines, file_length_difference)
114
+ # next unless oldhunk
115
+ #
116
+ # # Hunks may overlap, which is why we need to be careful when our
117
+ # # diff includes lines of context. Otherwise, we might print
118
+ # # redundant lines.
119
+ # if (context_lines > 0) and hunk.overlaps?(oldhunk)
120
+ # hunk.unshift(oldhunk)
121
+ # else
122
+ # output << oldhunk.diff(format)
123
+ # end
124
+ # ensure
125
+ # oldhunk = hunk
126
+ # output << '\n'
127
+ # end
128
+ # end
129
+
130
+ # # Handle the last remaining hunk
131
+ # output << oldhunk.diff(format) << '\n'
132
+ # end
133
+
134
+ # Loads key from the _config_._yaml_ file.
135
+ def config_load(key, may_be_nil=false, default_value='')
136
+ conf = File.join('config.private.yaml') # try private first
137
+ conf = File.join('config.yaml') unless File.exists?(conf)
138
+ value = YAML.load_file(conf)[key]
139
+ assert_not_nil(value, "#{key} is set in config.yaml") unless may_be_nil
140
+ value || default_value
141
+ end
142
+ module_function :config_load
143
+
144
+ def load_ruby
145
+ config_load('ruby', true)
146
+ end
147
+ module_function :load_ruby
148
+
149
+ def load_params
150
+ config_load('ruby_params', true)
151
+ end
152
+ module_function :load_params
153
+ end
154
+
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'; require 'require_relative'
3
+ # require_relative '../../lib/trepanning'
4
+ require_relative 'helper'
5
+
6
+ # Test (mostly) invalid breakpoint commands
7
+ class TestBadBreak < Test::Unit::TestCase
8
+ include TestHelper
9
+ def test_basic
10
+ common_setup(__FILE__)
11
+ Dir.chdir(@srcdir) do
12
+ assert_equal(true,
13
+ run_debugger(@testname, @prefix + '../example/gcd.rb 3 5'))
14
+ end
15
+ end
16
+
17
+ def test_break_loop
18
+ common_setup(__FILE__, 'break_loop_bug')
19
+ Dir.chdir(@srcdir) do
20
+ assert_equal(true,
21
+ run_debugger(@testname, @prefix +
22
+ '../example/bp_loop_issue.rb'))
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'; require 'require_relative'
3
+ # require_relative '../../lib/trepanning'
4
+ require_relative 'helper'
5
+
6
+ # Test --no-stop and $0 setting.
7
+ class TestDollar0 < Test::Unit::TestCase
8
+ include TestHelper
9
+ def test_basic
10
+ common_setup(__FILE__)
11
+ Dir.chdir(@srcdir) do
12
+ home_save = ENV['HOME']
13
+ ENV['HOME'] = '.'
14
+ filter = Proc.new{|got_lines, correct_lines|
15
+ [got_lines, correct_lines].flatten.each do |s|
16
+ s.gsub!(/.*dollar-0.rb$/, 'dollar-0.rb')
17
+ end
18
+ }
19
+
20
+ @prefix = '--nx --basename --no-stop '
21
+ %w(dollar-0 dollar-0a dollar-0b).each do |testname|
22
+ assert_equal(true,
23
+ run_debugger(testname,
24
+ @prefix +
25
+ File.join(%w(.. example dollar-0.rb)),
26
+ nil, filter, false, '../bin/trepan8'))
27
+ end
28
+ ENV['HOME'] = home_save
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'; require 'require_relative'
3
+ # require_relative '../../lib/trepanning'
4
+ require_relative 'helper'
5
+
6
+ # Test 'edit' command handling.
7
+ class TestEdit < Test::Unit::TestCase
8
+ include TestHelper
9
+ def test_basic
10
+ common_setup(__FILE__)
11
+ Dir.chdir(@srcdir) do
12
+ ENV['EDITOR']='echo FAKE-EDITOR '
13
+ assert_equal(true,
14
+ run_debugger(@testname, @prefix + '../example/gcd.rb 3 5'))
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'; require 'require_relative'
3
+ # require_relative '../../lib/trepanning'
4
+ require_relative 'helper'
5
+
6
+ # Test Running a program wiht an embedded space
7
+ class TestFileWithSpace < Test::Unit::TestCase
8
+ include TestHelper
9
+
10
+ def test_basic
11
+ testname='file-with-space'
12
+ common_setup(__FILE__)
13
+ Dir.chdir(@srcdir) do
14
+ script = File.join(%W(.. data #{testname}.cmd))
15
+ # filter = Proc.new{|got_lines, correct_lines|
16
+ # [got_lines[0], correct_lines[0]].each do |s|
17
+ # s.sub!(/tdebug.rb:\d+/, 'rdebug:999')
18
+ # end
19
+ # }
20
+ assert_equal(true,
21
+ run_debugger(testname,
22
+ "--script #{script} --nx --basename -- " +
23
+ "'../example/file with space.rb'"))
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'; require 'require_relative'
3
+ # require_relative '../../lib/trepanning'
4
+ require_relative 'helper'
5
+
6
+ # Test printing (evaluation) of variables
7
+ class TestPrintVar < Test::Unit::TestCase
8
+ include TestHelper
9
+ # Test commands in stepping.rb
10
+ def test_basic
11
+ common_setup(__FILE__)
12
+ Dir.chdir(@srcdir) do
13
+ assert_equal(true,
14
+ run_debugger(@testname, @prefix + '../example/gcd.rb 3 5'))
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'; require 'require_relative'
3
+ # require_relative '../../lib/trepanning'
4
+ require_relative 'helper'
5
+
6
+ # begin require 'rubygems' rescue LoadError end
7
+ # require 'ruby-debug'; Debugger.start
8
+
9
+ # Test Debugger.load handles uncaught exceptions in the debugged program.
10
+ class TestRaise < Test::Unit::TestCase
11
+ include TestHelper
12
+ def test_basic
13
+ skip "We get a SEGV here on an unpatched 1.9.2" if
14
+ RUBY_VERSION =~ /1.9/
15
+ common_setup(__FILE__)
16
+ Dir.chdir(@srcdir) do
17
+ assert_equal(true,
18
+ run_debugger(@testname, @prefix + '../example/raise.rb'))
19
+ end
20
+ end
21
+ end