pry-byebug 1.1.0 → 1.1.1
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.
- checksums.yaml +4 -4
- data/.travis.yml +6 -0
- data/CHANGELOG.md +7 -1
- data/README.md +5 -1
- data/Rakefile +0 -2
- data/lib/pry-byebug/commands.rb +3 -5
- data/lib/pry-byebug/processor.rb +44 -53
- data/lib/pry-byebug/pry_ext.rb +1 -1
- data/lib/pry-byebug/version.rb +1 -1
- data/pry-byebug.gemspec +3 -3
- data/test/base_test.rb +3 -4
- data/test/breakpoints_test.rb +3 -3
- data/test/commands_test.rb +68 -2
- data/test/examples/stepping.rb +25 -0
- data/test/processor_test.rb +2 -6
- data/test/pry_ext_test.rb +2 -2
- data/test/pry_remote_ext_test.rb +2 -2
- data/test/test_helper.rb +34 -5
- metadata +9 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1e394709d63ed2099ec627d75981a29885c9641
|
4
|
+
data.tar.gz: 1a79cdd78a21fde30ff264adcbeeec8c96af877c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 083288cd0f862524132bda50de9ac708ee173e39718bb0594ca176c043cfc49cd35eca27c8ed69b67d3ad70c5d5a3d2ff10e99ffd89c77f4ba509beb2ee7e0ff
|
7
|
+
data.tar.gz: 3c0224f0d2895b5f60745ef89d672fc0cc11ac260ddb19ce81ac139f5c9146d3b8615d1ddb9a6610150a01225e832884f541ce91fd77f7720828a9e85fc9db22
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
-
## 1.1.
|
1
|
+
## 1.1.1 (2013-02-07)
|
2
|
+
|
3
|
+
* Adds some initial tests to the test suite
|
4
|
+
* Fixes bug when doing "step n" or "next n" where n > 1 right after binding.pry
|
2
5
|
|
6
|
+
|
7
|
+
## 1.1.0 (2013-06-06)
|
8
|
+
|
3
9
|
* Adds a test suite (thanks @teeparham!)
|
4
10
|
* Uses byebug ~> 1.4.0
|
5
11
|
* Uses s, n, f and c aliases by default (thanks @jgakos!)
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
pry-byebug
|
1
|
+
pry-byebug [![Gem Version][1]][2] [![Build Status][3]][4]
|
2
2
|
============
|
3
3
|
|
4
4
|
_Fast execution control in Pry_
|
@@ -112,3 +112,7 @@ file an [issue][issues]. [Project changelog][changelog].
|
|
112
112
|
[issues]: https://github.com/deivid-rodriguez/pry-byebug/issues
|
113
113
|
[changelog]: https://github.com/deivid-rodriguez/pry-byebug/blob/master/CHANGELOG.md
|
114
114
|
[pry-nav]: https://github.com/nixme/pry-nav
|
115
|
+
[1]: https://badge.fury.io/rb/pry-byebug.png
|
116
|
+
[2]: http://badge.fury.io/rb/pry-byebug
|
117
|
+
[3]: https://secure.travis-ci.org/deivid-rodriguez/pry-byebug.png
|
118
|
+
[4]: http://travis-ci.org/deivid-rodriguez/pry-byebug
|
data/Rakefile
CHANGED
data/lib/pry-byebug/commands.rb
CHANGED
@@ -48,7 +48,6 @@ module PryByebug
|
|
48
48
|
end
|
49
49
|
alias_command 'n', 'next'
|
50
50
|
|
51
|
-
|
52
51
|
create_command 'finish' do
|
53
52
|
description 'Execute until current stack frame returns.'
|
54
53
|
|
@@ -215,12 +214,11 @@ module PryByebug
|
|
215
214
|
end
|
216
215
|
alias_command 'breaks', 'breakpoints'
|
217
216
|
|
218
|
-
|
219
217
|
helpers do
|
220
218
|
def breakout_navigation(action, times = nil)
|
221
|
-
_pry_.binding_stack.clear
|
222
|
-
throw :breakout_nav, {
|
223
|
-
:action => action,
|
219
|
+
_pry_.binding_stack.clear # Clear the binding stack.
|
220
|
+
throw :breakout_nav, { # Break out of the REPL loop and signal tracer
|
221
|
+
:action => action,
|
224
222
|
:times => times,
|
225
223
|
:pry => _pry_
|
226
224
|
}
|
data/lib/pry-byebug/processor.rb
CHANGED
@@ -14,6 +14,7 @@ module PryByebug
|
|
14
14
|
# Wrap a Pry REPL to catch navigational commands and act on them.
|
15
15
|
def run(initial = true, &block)
|
16
16
|
return_value = nil
|
17
|
+
|
17
18
|
command = catch(:breakout_nav) do # Throws from PryByebug::Commands
|
18
19
|
return_value = yield
|
19
20
|
{} # Nothing thrown == no navigational command
|
@@ -31,18 +32,16 @@ module PryByebug
|
|
31
32
|
# inside Byebug. If we step normally, it'll stop inside this
|
32
33
|
# Processor. So jump out and stop at the above frame, then step/next
|
33
34
|
# from our callback.
|
34
|
-
finish
|
35
35
|
@delayed[command[:action]] = times
|
36
|
-
|
37
|
-
|
38
|
-
if :next == command[:action]
|
36
|
+
step_out 2
|
37
|
+
elsif :next == command[:action]
|
39
38
|
step_over times
|
40
39
|
|
41
40
|
elsif :step == command[:action]
|
42
|
-
|
41
|
+
step_into times
|
43
42
|
|
44
43
|
elsif :finish == command[:action]
|
45
|
-
|
44
|
+
step_out
|
46
45
|
end
|
47
46
|
else
|
48
47
|
stop
|
@@ -64,30 +63,24 @@ module PryByebug
|
|
64
63
|
end
|
65
64
|
end
|
66
65
|
|
67
|
-
|
68
66
|
# --- Callbacks from byebug C extension ---
|
69
|
-
|
70
67
|
def at_line(context, file, line)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
@delayed = Hash.new(0) unless :step == context.stop_reason
|
68
|
+
# If any delayed nexts/steps, do 'em.
|
69
|
+
if @delayed[:next] > 1
|
70
|
+
step_over @delayed[:next] - 1
|
75
71
|
|
76
|
-
|
77
|
-
|
78
|
-
@delayed = Hash.new(0)
|
72
|
+
elsif @delayed[:step] > 1
|
73
|
+
step_into @delayed[:step] - 1
|
79
74
|
|
80
|
-
elsif @delayed[:
|
81
|
-
|
82
|
-
@delayed = Hash.new(0)
|
75
|
+
elsif @delayed[:finish] > 1
|
76
|
+
step_out @delayed[:finish] - 1
|
83
77
|
|
84
|
-
|
85
|
-
|
86
|
-
@delayed = Hash.new(0)
|
87
|
-
|
88
|
-
else # Otherwise, resume the pry session at the stopped line.
|
78
|
+
# Otherwise, resume the pry session at the stopped line.
|
79
|
+
else
|
89
80
|
resume_pry context
|
90
81
|
end
|
82
|
+
|
83
|
+
@delayed = Hash.new(0)
|
91
84
|
end
|
92
85
|
|
93
86
|
# Called when a breakpoint is triggered. Note: `at_line`` is called
|
@@ -99,7 +92,7 @@ module PryByebug
|
|
99
92
|
"Hit #{breakpoint.hit_count} times." )
|
100
93
|
if (expr = breakpoint.expr)
|
101
94
|
@pry.output.print Pry::Helpers::Text.bold("Condition: ")
|
102
|
-
@pry.output.puts
|
95
|
+
@pry.output.puts expr
|
103
96
|
end
|
104
97
|
end
|
105
98
|
|
@@ -107,42 +100,40 @@ module PryByebug
|
|
107
100
|
# TODO
|
108
101
|
end
|
109
102
|
|
103
|
+
private
|
110
104
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
new_binding = context.frame_binding(0)
|
117
|
-
Byebug.stop unless @always_enabled
|
105
|
+
# Resume an existing Pry REPL at the paused point.
|
106
|
+
# Binding extracted from Byebug::Context
|
107
|
+
def resume_pry(context)
|
108
|
+
new_binding = context.frame_binding(0)
|
109
|
+
Byebug.stop unless @always_enabled
|
118
110
|
|
119
|
-
|
120
|
-
|
121
|
-
|
111
|
+
run(false) do
|
112
|
+
@pry.repl new_binding
|
113
|
+
end
|
122
114
|
end
|
123
|
-
end
|
124
115
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
116
|
+
# Move execution forward.
|
117
|
+
def step_into(times)
|
118
|
+
Byebug.context.step_into times
|
119
|
+
end
|
129
120
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
121
|
+
# Move execution forward a number of lines in the same frame.
|
122
|
+
def step_over(lines)
|
123
|
+
Byebug.context.step_over lines, 0
|
124
|
+
end
|
134
125
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
126
|
+
# Execute until specified frame returns.
|
127
|
+
def step_out(frame = 0)
|
128
|
+
Byebug.context.step_out frame
|
129
|
+
end
|
139
130
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
131
|
+
# Cleanup when debugging is stopped and execution continues.
|
132
|
+
def stop
|
133
|
+
Byebug.stop if !@always_enabled && Byebug.started?
|
134
|
+
if PryByebug.current_remote_server # Cleanup DRb remote if running
|
135
|
+
PryByebug.current_remote_server.teardown
|
136
|
+
end
|
145
137
|
end
|
146
|
-
end
|
147
138
|
end
|
148
139
|
end
|
data/lib/pry-byebug/pry_ext.rb
CHANGED
@@ -9,7 +9,7 @@ class << Pry
|
|
9
9
|
@processor ||= PryByebug::Processor.new
|
10
10
|
|
11
11
|
if target.is_a?(Binding) && PryByebug.check_file_context(target)
|
12
|
-
# Wrap the
|
12
|
+
# Wrap the processor around the usual Pry.start to catch navigation
|
13
13
|
# commands.
|
14
14
|
@processor.run(true) do
|
15
15
|
start_without_pry_byebug(target, options)
|
data/lib/pry-byebug/version.rb
CHANGED
data/pry-byebug.gemspec
CHANGED
@@ -13,15 +13,15 @@ Gem::Specification.new do |gem|
|
|
13
13
|
|
14
14
|
gem.files = `git ls-files`.split("\n")
|
15
15
|
gem.test_files = `git ls-files -- test/*`.split("\n")
|
16
|
+
gem.require_paths = ['lib']
|
16
17
|
|
17
18
|
# Dependencies
|
18
19
|
gem.required_ruby_version = '>= 2.0.0'
|
19
20
|
|
20
21
|
gem.add_runtime_dependency 'pry', '~> 0.9.12'
|
21
|
-
gem.add_runtime_dependency 'byebug', '~> 1.
|
22
|
+
gem.add_runtime_dependency 'byebug', '~> 1.5.0'
|
22
23
|
|
23
24
|
gem.add_development_dependency 'bundler', '~> 1.3.5'
|
24
|
-
gem.add_development_dependency 'rake', '~> 10.0
|
25
|
-
gem.add_development_dependency 'minitest', '~> 5.0.3'
|
25
|
+
gem.add_development_dependency 'rake', '~> 10.1.0'
|
26
26
|
gem.add_development_dependency 'mocha', '~> 0.14.0'
|
27
27
|
end
|
data/test/base_test.rb
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class BaseTest <
|
3
|
+
class BaseTest < MiniTest::Spec
|
4
4
|
def test_main_file_context
|
5
5
|
Pry.stubs eval_path: "<main>"
|
6
6
|
assert PryByebug.check_file_context(TOPLEVEL_BINDING)
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def test_other_file_context
|
10
10
|
Pry.stubs eval_path: "something"
|
11
|
-
refute PryByebug.check_file_context(TOPLEVEL_BINDING)
|
11
|
+
refute PryByebug.check_file_context(TOPLEVEL_BINDING)
|
12
12
|
end
|
13
|
-
|
14
13
|
end
|
15
14
|
|
data/test/breakpoints_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class BreakpointsTest <
|
4
|
-
|
3
|
+
class BreakpointsTest < MiniTest::Spec
|
4
|
+
|
5
5
|
def test_add_raises_argument_error
|
6
6
|
Pry.stubs eval_path: "something"
|
7
7
|
File.stubs :exist?
|
@@ -9,6 +9,6 @@ class BreakpointsTest < Minitest::Test
|
|
9
9
|
PryByebug::Breakpoints.add("file", 1)
|
10
10
|
end
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
end
|
14
14
|
|
data/test/commands_test.rb
CHANGED
@@ -1,6 +1,72 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class CommandsTest <
|
4
|
-
|
3
|
+
class CommandsTest < MiniTest::Spec
|
4
|
+
let(:step_file) do
|
5
|
+
(Pathname.new(__FILE__) + "../examples/stepping.rb").cleanpath.to_s
|
6
|
+
end
|
7
|
+
|
8
|
+
before do
|
9
|
+
Pry.color = false
|
10
|
+
Pry.pager = false
|
11
|
+
Pry.hooks = Pry::DEFAULT_HOOKS
|
12
|
+
@output = StringIO.new
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'Step Command' do
|
16
|
+
describe 'single step' do
|
17
|
+
before do
|
18
|
+
@input = InputTester.new('step')
|
19
|
+
redirect_pry_io(@input, @output) do
|
20
|
+
load step_file
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'shows current line' do
|
25
|
+
@output.string.must_match /\=> 3:/
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'multiple step' do
|
30
|
+
before do
|
31
|
+
@input = InputTester.new('step 2')
|
32
|
+
redirect_pry_io(@input, @output) do
|
33
|
+
load step_file
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'shows current line' do
|
38
|
+
@output.string.must_match /\=> 4:/
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'Next Command' do
|
44
|
+
describe 'single step' do
|
45
|
+
before do
|
46
|
+
@input = InputTester.new('next')
|
47
|
+
redirect_pry_io(@input, @output) do
|
48
|
+
load step_file
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'shows current line' do
|
53
|
+
@output.string.must_match /\=> 3:/
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe 'multiple step' do
|
58
|
+
before do
|
59
|
+
@input = InputTester.new('next 2')
|
60
|
+
redirect_pry_io(@input, @output) do
|
61
|
+
load step_file
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'shows current line' do
|
66
|
+
@output.string.must_match /\=> 20:/
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
5
71
|
end
|
6
72
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
binding.pry
|
2
|
+
|
3
|
+
class SteppingExample
|
4
|
+
def a
|
5
|
+
z = 2
|
6
|
+
b
|
7
|
+
end
|
8
|
+
|
9
|
+
def b
|
10
|
+
v2 = 5 if 1 == 2 ; [1,2,3].map { |a| a.to_f }
|
11
|
+
c
|
12
|
+
end
|
13
|
+
|
14
|
+
def c
|
15
|
+
z = 4
|
16
|
+
5
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
ex = SteppingExample.new.a
|
21
|
+
2.times do
|
22
|
+
ex += 1
|
23
|
+
end
|
24
|
+
|
25
|
+
ex
|
data/test/processor_test.rb
CHANGED
data/test/pry_ext_test.rb
CHANGED
data/test/pry_remote_ext_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,5 +1,34 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
|
1
|
+
require 'pry/test/helper'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'pry-byebug'
|
4
|
+
require 'mocha/setup'
|
5
|
+
|
6
|
+
# Set I/O streams. Out defaults to an anonymous StringIO.
|
7
|
+
def redirect_pry_io(new_in, new_out = StringIO.new)
|
8
|
+
old_in = Pry.input
|
9
|
+
old_out = Pry.output
|
10
|
+
|
11
|
+
Pry.input = new_in
|
12
|
+
Pry.output = new_out
|
13
|
+
begin
|
14
|
+
yield
|
15
|
+
ensure
|
16
|
+
Pry.input = old_in
|
17
|
+
Pry.output = old_out
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class InputTester
|
22
|
+
def initialize(*actions)
|
23
|
+
@orig_actions = actions.dup
|
24
|
+
@actions = actions
|
25
|
+
end
|
26
|
+
|
27
|
+
def readline(*)
|
28
|
+
@actions.shift
|
29
|
+
end
|
30
|
+
|
31
|
+
def rewind
|
32
|
+
@actions = @orig_actions.dup
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-byebug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Rodríguez
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
34
|
+
version: 1.5.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ~>
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
41
|
+
version: 1.5.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: bundler
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,28 +59,14 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ~>
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 10.0
|
62
|
+
version: 10.1.0
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 10.0
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: minitest
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 5.0.3
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ~>
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 5.0.3
|
69
|
+
version: 10.1.0
|
84
70
|
- !ruby/object:Gem::Dependency
|
85
71
|
name: mocha
|
86
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,6 +91,7 @@ extra_rdoc_files: []
|
|
105
91
|
files:
|
106
92
|
- .gitignore
|
107
93
|
- .ruby-gemset
|
94
|
+
- .travis.yml
|
108
95
|
- CHANGELOG.md
|
109
96
|
- Gemfile
|
110
97
|
- LICENSE
|
@@ -122,6 +109,7 @@ files:
|
|
122
109
|
- test/base_test.rb
|
123
110
|
- test/breakpoints_test.rb
|
124
111
|
- test/commands_test.rb
|
112
|
+
- test/examples/stepping.rb
|
125
113
|
- test/processor_test.rb
|
126
114
|
- test/pry_ext_test.rb
|
127
115
|
- test/pry_remote_ext_test.rb
|
@@ -154,8 +142,8 @@ test_files:
|
|
154
142
|
- test/base_test.rb
|
155
143
|
- test/breakpoints_test.rb
|
156
144
|
- test/commands_test.rb
|
145
|
+
- test/examples/stepping.rb
|
157
146
|
- test/processor_test.rb
|
158
147
|
- test/pry_ext_test.rb
|
159
148
|
- test/pry_remote_ext_test.rb
|
160
149
|
- test/test_helper.rb
|
161
|
-
has_rdoc:
|