rb8-trepanning 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +18 -4
- data/ChangeLog +100 -87
- data/Makefile +23 -4
- data/README.textile +3 -3
- data/Rakefile +26 -20
- data/app/complete.rb +13 -13
- data/app/default.rb +8 -8
- data/app/display.rb +7 -7
- data/app/frame.rb +8 -8
- data/app/irb.rb +15 -15
- data/app/options.rb +25 -25
- data/app/run.rb +16 -8
- data/app/util.rb +7 -7
- data/bin/trepan8 +2 -2
- data/check-filter.rb +21 -0
- data/interface.rb +4 -4
- data/interface/user.rb +11 -11
- data/io.rb +18 -19
- data/io/input.rb +14 -12
- data/lib/debugger.rb +3 -1
- data/lib/trepanning.rb +30 -28
- data/processor.rb +41 -38
- data/processor/command.rb +9 -9
- data/processor/command/alias.rb +6 -6
- data/processor/command/down.rb +1 -2
- data/processor/command/edit.rb +12 -8
- data/processor/command/eval.rb +7 -7
- data/processor/command/info_subcmd/macro.rb +6 -6
- data/processor/command/info_subcmd/program.rb +5 -1
- data/processor/command/macro.rb +6 -6
- data/processor/command/show_subcmd/abbrev.rb +2 -2
- data/processor/command/up.rb +1 -2
- data/processor/complete.rb +120 -0
- data/processor/default.rb +13 -9
- data/processor/load_cmds.rb +18 -97
- data/processor/location.rb +34 -31
- data/processor/msg.rb +5 -5
- data/processor/validate.rb +44 -35
- data/test/data/break_loop_bug.right +2 -2
- data/test/data/edit.cmd +1 -1
- data/test/data/edit.right +7 -1
- data/test/data/printvar.right +2 -2
- data/test/data/raise.right +0 -1
- data/test/data/trace-mingw.right +28 -0
- data/test/integration/.gitignore +1 -0
- data/test/integration/test-raise.rb +10 -1
- data/test/integration/test-trace.rb +10 -6
- data/test/unit/test-app-options.rb +9 -3
- data/test/unit/test-app-run.rb +8 -1
- data/test/unit/test-cmd-alias.rb +2 -2
- data/test/unit/test-proc-default.rb +34 -0
- metadata +10 -6
@@ -5,11 +5,11 @@ debugger testing is on.
|
|
5
5
|
Breakpoint 1 file bp_loop_issue.rb, line 2
|
6
6
|
+ break_loop_bug.cmd line 3: cont
|
7
7
|
Breakpoint 1 at bp_loop_issue.rb:2
|
8
|
-
|
8
|
+
xx (bp_loop_issue.rb:2)
|
9
9
|
sleep 0.01
|
10
10
|
+ break_loop_bug.cmd line 4: cont
|
11
11
|
Breakpoint 1 at bp_loop_issue.rb:2
|
12
|
-
|
12
|
+
xx (bp_loop_issue.rb:2)
|
13
13
|
sleep 0.01
|
14
14
|
+ break_loop_bug.cmd line 5: cont
|
15
15
|
trepan8: That's all, folks...
|
data/test/data/edit.cmd
CHANGED
data/test/data/edit.right
CHANGED
@@ -3,22 +3,28 @@ def gcd(a, b)
|
|
3
3
|
debugger testing is on.
|
4
4
|
+ edit.cmd line 5: # Edit using current line position.
|
5
5
|
+ edit.cmd line 6: edit
|
6
|
+
*** Editor echo FAKE-EDITOR is not executable. Trying anyway...
|
6
7
|
Running echo FAKE-EDITOR +4 "gcd.rb"...
|
7
8
|
FAKE-EDITOR +4 gcd.rb
|
8
9
|
+ edit.cmd line 7: edit 7
|
10
|
+
*** Editor echo FAKE-EDITOR is not executable. Trying anyway...
|
9
11
|
Running echo FAKE-EDITOR +7 "gcd.rb"...
|
10
12
|
FAKE-EDITOR +7 gcd.rb
|
11
13
|
+ edit.cmd line 8: edit ../example/gcd.rb 5
|
14
|
+
*** Editor echo FAKE-EDITOR is not executable. Trying anyway...
|
12
15
|
Running echo FAKE-EDITOR +5 "gcd.rb"...
|
13
16
|
FAKE-EDITOR +5 gcd.rb
|
14
17
|
+ edit.cmd line 9: # File should not exist
|
15
18
|
+ edit.cmd line 10: edit foo
|
19
|
+
*** Editor echo FAKE-EDITOR is not executable. Trying anyway...
|
16
20
|
*** File "foo" is not readable.
|
17
21
|
+ edit.cmd line 11: # Add space to the end of 'edit'
|
18
|
-
+ edit.cmd line 12: edit
|
22
|
+
+ edit.cmd line 12: edit
|
23
|
+
*** Editor echo FAKE-EDITOR is not executable. Trying anyway...
|
19
24
|
Running echo FAKE-EDITOR +4 "gcd.rb"...
|
20
25
|
FAKE-EDITOR +4 gcd.rb
|
21
26
|
+ edit.cmd line 13: edit ../example/gcd.rb
|
27
|
+
*** Editor echo FAKE-EDITOR is not executable. Trying anyway...
|
22
28
|
Running echo FAKE-EDITOR +1 "gcd.rb"...
|
23
29
|
FAKE-EDITOR +1 gcd.rb
|
24
30
|
+ edit.cmd line 14: quit!
|
data/test/data/printvar.right
CHANGED
@@ -11,7 +11,7 @@ basename is on.
|
|
11
11
|
Breakpoint 1 file gcd.rb, line 6
|
12
12
|
+ printvar.cmd line 10: continue
|
13
13
|
Breakpoint 1 at gcd.rb:6
|
14
|
-
|
14
|
+
xx (gcd.rb:6)
|
15
15
|
if a > b
|
16
16
|
+ printvar.cmd line 11: pr a
|
17
17
|
3
|
@@ -19,7 +19,7 @@ if a > b
|
|
19
19
|
[3, 5]
|
20
20
|
+ printvar.cmd line 13: continue
|
21
21
|
Breakpoint 1 at gcd.rb:6
|
22
|
-
|
22
|
+
xx (gcd.rb:6)
|
23
23
|
if a > b
|
24
24
|
+ printvar.cmd line 14: eval [a,b]
|
25
25
|
[2, 3]
|
data/test/data/raise.right
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
-- (gcd.rb:4 @2)
|
2
|
+
def gcd(a, b)
|
3
|
+
-- (gcd.rb:18 @2)
|
4
|
+
a, b = ARGV[0..1].map {|arg| arg.to_i}
|
5
|
+
-- (gcd.rb:19 @45)
|
6
|
+
puts "The GCD of %d and %d is %d" % [a, b, gcd(a, b)]
|
7
|
+
-- (gcd.rb:6 @4)
|
8
|
+
if a > b
|
9
|
+
-- (gcd.rb:12 @40)
|
10
|
+
if a == 1 or b-a == 0
|
11
|
+
METHOD Object#gcd(a, b)
|
12
|
+
-> (gcd.rb:4 @2)
|
13
|
+
def gcd(a, b)
|
14
|
+
-- (gcd.rb:10 @24)
|
15
|
+
return nil if a <= 0
|
16
|
+
-- (gcd.rb:15 @71)
|
17
|
+
return gcd(b-a, a)
|
18
|
+
-- (gcd.rb:6 @4)
|
19
|
+
if a > b
|
20
|
+
-- (gcd.rb:12 @40)
|
21
|
+
if a == 1 or b-a == 0
|
22
|
+
<- (gcd.rb:13 @68)
|
23
|
+
R=> 1
|
24
|
+
return a
|
25
|
+
<- (gcd.rb:16 @88)
|
26
|
+
R=> 1
|
27
|
+
end
|
28
|
+
The GCD of 3 and 5 is 1
|
data/test/integration/.gitignore
CHANGED
@@ -14,8 +14,17 @@ class TestRaise < Test::Unit::TestCase
|
|
14
14
|
RUBY_VERSION =~ /1.9/
|
15
15
|
common_setup(__FILE__)
|
16
16
|
Dir.chdir(@srcdir) do
|
17
|
+
filter = Proc.new{|got_lines, correct_lines|
|
18
|
+
new_lines = []
|
19
|
+
got_lines.each do |s|
|
20
|
+
new_lines << s unless s == 'x'
|
21
|
+
end
|
22
|
+
got_lines[0..-1] = new_lines[0..-1]
|
23
|
+
}
|
17
24
|
assert_equal(true,
|
18
|
-
run_debugger(@testname,
|
25
|
+
run_debugger(@testname,
|
26
|
+
@prefix + '../example/raise.rb',
|
27
|
+
nil, filter))
|
19
28
|
end
|
20
29
|
end
|
21
30
|
end
|
@@ -2,15 +2,19 @@
|
|
2
2
|
require 'test/unit'
|
3
3
|
require 'rubygems'; require 'require_relative'
|
4
4
|
require_relative 'helper'
|
5
|
+
require 'rbconfig'
|
5
6
|
|
6
7
|
class TestTrace < Test::Unit::TestCase
|
7
8
|
include TestHelper
|
8
|
-
TREPAN_LOC
|
9
|
+
TREPAN_LOC =
|
10
|
+
if RbConfig::CONFIG['target_os'].start_with?('mingw')
|
11
|
+
/.. \((?:[A-Za-z]:)?.+:\d+( @\d+)?\)/
|
12
|
+
else
|
13
|
+
/.. \(.+:\d+( @\d+)?\)/
|
14
|
+
end
|
9
15
|
def test_trepan_trace
|
10
|
-
skip "We may get different results on an unpatched 1.9.2" if
|
11
|
-
RUBY_VERSION =~ /1.9/
|
12
16
|
common_setup(__FILE__)
|
13
|
-
Dir.chdir(@srcdir) do
|
17
|
+
Dir.chdir(@srcdir) do
|
14
18
|
last_line = nil
|
15
19
|
filter = Proc.new{|got_lines, correct_lines|
|
16
20
|
got_lines.each_with_index do |line, i|
|
@@ -23,8 +27,8 @@ class TestTrace < Test::Unit::TestCase
|
|
23
27
|
got_lines[last_line..-1] = got_lines[last_line] if last_line
|
24
28
|
}
|
25
29
|
rightfile = File.join(%W(.. data #{@testname}))
|
26
|
-
assert_equal(true, run_debugger(@testname,
|
27
|
-
"-x #{@prefix}../example/gcd.rb 3 5",
|
30
|
+
assert_equal(true, run_debugger(@testname,
|
31
|
+
"-x #{@prefix}../example/gcd.rb 3 5",
|
28
32
|
nil, filter, nil, rightfile))
|
29
33
|
end
|
30
34
|
end
|
@@ -31,7 +31,13 @@ class TestAppOptions < Test::Unit::TestCase
|
|
31
31
|
assert_equal(orig_cd, @options[:chdir])
|
32
32
|
assert_not_equal('', @stderr.string)
|
33
33
|
assert_equal('', @stdout.string)
|
34
|
-
|
34
|
+
# Looks like on various MinGW systems Tempfile and tf.path and unlike don't
|
35
|
+
# work together
|
36
|
+
begin
|
37
|
+
File.unlink tf.path
|
38
|
+
rescue
|
39
|
+
end
|
40
|
+
|
35
41
|
# FIXME: add test where directory isn't executable.
|
36
42
|
end
|
37
43
|
|
@@ -53,7 +59,7 @@ class TestAppOptions < Test::Unit::TestCase
|
|
53
59
|
end
|
54
60
|
|
55
61
|
def no_test_help_and_version_opts
|
56
|
-
omit unless Process.respond_to?(:fork)
|
62
|
+
omit unless Process.respond_to?(:fork)
|
57
63
|
Process.fork {
|
58
64
|
%w(help version).each do |name|
|
59
65
|
setup
|
@@ -88,7 +94,7 @@ class TestAppOptions < Test::Unit::TestCase
|
|
88
94
|
assert_equal(true, @options[:client])
|
89
95
|
## FIXME - reinstate
|
90
96
|
## assert_equal(false, @options[:server])
|
91
|
-
|
97
|
+
|
92
98
|
end
|
93
99
|
|
94
100
|
end
|
data/test/unit/test-app-run.rb
CHANGED
@@ -6,7 +6,14 @@ require_relative '../../app/run'
|
|
6
6
|
class TestAppRun < Test::Unit::TestCase
|
7
7
|
include Trepan
|
8
8
|
def test_whence
|
9
|
-
|
9
|
+
resolved_file = whence_file('irb')
|
10
|
+
if RbConfig::CONFIG['target_os'].start_with?('mingw')
|
11
|
+
assert_equal(true, File.readable?(resolved_file),
|
12
|
+
"file #{resolved_file} should be readable")
|
13
|
+
else
|
14
|
+
assert_equal(true, File.executable?(resolved_file),
|
15
|
+
"file #{resolved_file} should be executable")
|
16
|
+
end
|
10
17
|
ng = whence_file('probably-does-not-exist')
|
11
18
|
assert_equal(true, File.executable?(ng) || ng == 'probably-does-not-exist')
|
12
19
|
end
|
data/test/unit/test-cmd-alias.rb
CHANGED
@@ -33,8 +33,8 @@ class TestCommandAliasUnalias < Test::Unit::TestCase
|
|
33
33
|
def alias_defined?(alias_name)
|
34
34
|
@cmdproc.aliases.member?(alias_name)
|
35
35
|
end
|
36
|
-
|
37
|
-
def
|
36
|
+
|
37
|
+
def test_alias_unalias_command
|
38
38
|
|
39
39
|
assert_equal(false, @cmdproc.aliases.empty?,
|
40
40
|
'There should be some aliases defined')
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
# Test Trepan::CmdProcessor::Default
|
5
|
+
class TestProcDefault < Test::Unit::TestCase
|
6
|
+
|
7
|
+
DIR = File.dirname(__FILE__)
|
8
|
+
DEFAULT_RBFILE = File.join(%W(#{DIR} .. .. processor default.rb))
|
9
|
+
|
10
|
+
def test_maxwidth_setting
|
11
|
+
ENV['COLUMNS'] = '50'
|
12
|
+
Trepan::CmdProcessor.send(:remove_const, 'DEFAULT_SETTINGS') if
|
13
|
+
Trepan::CmdProcessor.const_defined?('DEFAULT_SETTINGS')
|
14
|
+
load DEFAULT_RBFILE
|
15
|
+
assert_equal(50, Trepan::CmdProcessor::DEFAULT_SETTINGS[:maxwidth],
|
16
|
+
'Pick up COLUMNS environment')
|
17
|
+
|
18
|
+
Trepan::CmdProcessor.send(:remove_const, 'DEFAULT_SETTINGS')
|
19
|
+
load DEFAULT_RBFILE
|
20
|
+
|
21
|
+
ENV['COLUMNS'] = '0'
|
22
|
+
assert_operator(Trepan::CmdProcessor::DEFAULT_SETTINGS[:maxwidth],
|
23
|
+
:>=, 10,
|
24
|
+
'Change too small COLUMNS environment value')
|
25
|
+
|
26
|
+
Trepan::CmdProcessor.send(:remove_const, 'DEFAULT_SETTINGS')
|
27
|
+
load DEFAULT_RBFILE
|
28
|
+
|
29
|
+
ENV['COLUMNS'] = 'non-numeric-string'
|
30
|
+
assert_operator(Trepan::CmdProcessor::DEFAULT_SETTINGS[:maxwidth],
|
31
|
+
:>=, 10,
|
32
|
+
'Change too small COLUMNS environment value')
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rb8-trepanning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- R. Bernstein
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-03-31 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rbx-require-relative
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- app/util.rb
|
106
106
|
- bin/.gitignore
|
107
107
|
- bin/trepan8
|
108
|
+
- check-filter.rb
|
108
109
|
- data/.gitignore
|
109
110
|
- data/irbrc
|
110
111
|
- data/perldb.bindings
|
@@ -266,6 +267,7 @@ files:
|
|
266
267
|
- processor/command/unalias.rb
|
267
268
|
- processor/command/undisplay.rb
|
268
269
|
- processor/command/up.rb
|
270
|
+
- processor/complete.rb
|
269
271
|
- processor/default.rb
|
270
272
|
- processor/display.rb
|
271
273
|
- processor/eval.rb
|
@@ -306,6 +308,7 @@ files:
|
|
306
308
|
- test/data/stepping-1.9.right
|
307
309
|
- test/data/stepping.cmd
|
308
310
|
- test/data/stepping.right
|
311
|
+
- test/data/trace-mingw.right
|
309
312
|
- test/data/trace.cmd
|
310
313
|
- test/data/trace.right
|
311
314
|
- test/data/trepan8-save.1
|
@@ -362,6 +365,7 @@ files:
|
|
362
365
|
- test/unit/test-io-tcpclient.rb
|
363
366
|
- test/unit/test-io-tcpfns.rb
|
364
367
|
- test/unit/test-io-tcpserver.rb
|
368
|
+
- test/unit/test-proc-default.rb
|
365
369
|
- test/unit/test-proc-eval.rb
|
366
370
|
- test/unit/test-proc-hook.rb
|
367
371
|
- test/unit/test-proc-load_cmds.rb
|
@@ -374,7 +378,7 @@ licenses:
|
|
374
378
|
post_install_message:
|
375
379
|
rdoc_options:
|
376
380
|
- --title
|
377
|
-
- Trepan 0.1.
|
381
|
+
- Trepan 0.1.6 Documentation
|
378
382
|
require_paths:
|
379
383
|
- lib
|
380
384
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -398,7 +402,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
398
402
|
requirements: []
|
399
403
|
|
400
404
|
rubyforge_project:
|
401
|
-
rubygems_version: 1.8.
|
405
|
+
rubygems_version: 1.8.24
|
402
406
|
signing_key:
|
403
407
|
specification_version: 3
|
404
408
|
summary: Ruby Trepanning Debugger using ruby-debug-base
|