byebug 1.5.0 → 1.6.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +0 -1
- data/CHANGELOG.md +8 -0
- data/GUIDE.md +52 -32
- data/README.md +6 -0
- data/ext/byebug/byebug.c +19 -3
- data/ext/byebug/byebug.h +4 -3
- data/ext/byebug/context.c +21 -5
- data/lib/byebug.rb +5 -14
- data/lib/byebug/command.rb +1 -1
- data/lib/byebug/commands/frame.rb +28 -44
- data/lib/byebug/commands/info.rb +2 -1
- data/lib/byebug/commands/list.rb +1 -1
- data/lib/byebug/commands/repl.rb +7 -21
- data/lib/byebug/commands/set.rb +4 -9
- data/lib/byebug/commands/trace.rb +2 -2
- data/lib/byebug/context.rb +7 -16
- data/lib/byebug/processor.rb +16 -18
- data/lib/byebug/version.rb +1 -1
- data/old_doc/byebug.texi +12 -17
- data/test/breakpoints_test.rb +75 -61
- data/test/conditions_test.rb +7 -7
- data/test/continue_test.rb +5 -5
- data/test/display_test.rb +6 -6
- data/test/edit_test.rb +2 -2
- data/test/examples/{breakpoint1.rb → breakpoint.rb} +0 -0
- data/test/examples/breakpoint_deep.rb +24 -0
- data/test/finish_test.rb +5 -5
- data/test/frame_test.rb +27 -38
- data/test/jump_test.rb +6 -7
- data/test/list_test.rb +1 -1
- data/test/post_mortem_test.rb +1 -1
- data/test/repl_test.rb +4 -40
- data/test/set_test.rb +3 -3
- data/test/show_test.rb +1 -1
- data/test/stepping_test.rb +15 -16
- data/test/support/test_dsl.rb +9 -16
- data/test/trace_test.rb +2 -2
- metadata +6 -6
- data/test/support/mocha_extensions.rb +0 -71
data/test/conditions_test.rb
CHANGED
@@ -14,12 +14,12 @@ class TestConditions < TestDsl::TestCase
|
|
14
14
|
|
15
15
|
it 'must stop at the breakpoint if condition is true' do
|
16
16
|
enter ->{ "cond #{Byebug.breakpoints.first.id} b == 5" }, 'cont'
|
17
|
-
debug_file('conditions') { state.line.must_equal 3 }
|
17
|
+
debug_file('conditions') { $state.line.must_equal 3 }
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'must work with full command name too' do
|
21
21
|
enter ->{ "condition #{Byebug.breakpoints.first.id} b == 5" }, 'cont'
|
22
|
-
debug_file('conditions') { state.line.must_equal 3 }
|
22
|
+
debug_file('conditions') { $state.line.must_equal 3 }
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -28,7 +28,7 @@ class TestConditions < TestDsl::TestCase
|
|
28
28
|
|
29
29
|
it 'must not stop at the breakpoint if condition is false' do
|
30
30
|
enter ->{ "cond #{Byebug.breakpoints.first.id} b == 3" }, 'cont'
|
31
|
-
debug_file('conditions') { state.line.must_equal 4 }
|
31
|
+
debug_file('conditions') { $state.line.must_equal 4 }
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'must assign expression to breakpoint in spite of incorrect syntax' do
|
@@ -39,7 +39,7 @@ class TestConditions < TestDsl::TestCase
|
|
39
39
|
|
40
40
|
it 'must ignore the condition if when incorrect syntax' do
|
41
41
|
enter ->{ "cond #{Byebug.breakpoints.first.id} b ==" }, 'cont'
|
42
|
-
debug_file('conditions') { state.line.must_equal 4 }
|
42
|
+
debug_file('conditions') { $state.line.must_equal 4 }
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -53,7 +53,7 @@ class TestConditions < TestDsl::TestCase
|
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'must unconditionally stop on the breakpoint' do
|
56
|
-
debug_file('conditions') { state.line.must_equal 3 }
|
56
|
+
debug_file('conditions') { $state.line.must_equal 3 }
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -66,7 +66,7 @@ class TestConditions < TestDsl::TestCase
|
|
66
66
|
|
67
67
|
it 'must not set breakpoint condition if breakpoint id is incorrect' do
|
68
68
|
enter 'break 3', 'cond 8 b == 3', 'cont'
|
69
|
-
debug_file('conditions') { state.line.must_equal 3 }
|
69
|
+
debug_file('conditions') { $state.line.must_equal 3 }
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
@@ -74,7 +74,7 @@ class TestConditions < TestDsl::TestCase
|
|
74
74
|
it 'must be able to set conditions in post-mortem mode' do
|
75
75
|
enter 'cont', 'break 12', ->{ "cond #{Byebug.breakpoints.first.id} true" },
|
76
76
|
'cont'
|
77
|
-
debug_file('post_mortem') { state.line.must_equal 12 }
|
77
|
+
debug_file('post_mortem') { $state.line.must_equal 12 }
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
data/test/continue_test.rb
CHANGED
@@ -5,29 +5,29 @@ class TestContinue < TestDsl::TestCase
|
|
5
5
|
describe "successful" do
|
6
6
|
it "must continue up to breakpoint if no line specified" do
|
7
7
|
enter 'break 4', 'continue'
|
8
|
-
debug_file('continue') { state.line.must_equal 4 }
|
8
|
+
debug_file('continue') { $state.line.must_equal 4 }
|
9
9
|
end
|
10
10
|
|
11
11
|
it "must work in abbreviated mode too" do
|
12
12
|
enter 'break 4', 'cont'
|
13
|
-
debug_file('continue') { state.line.must_equal 4 }
|
13
|
+
debug_file('continue') { $state.line.must_equal 4 }
|
14
14
|
end
|
15
15
|
|
16
16
|
it "must continue up to specified line" do
|
17
17
|
enter 'cont 4'
|
18
|
-
debug_file('continue') { state.line.must_equal 4 }
|
18
|
+
debug_file('continue') { $state.line.must_equal 4 }
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
describe "unsuccessful" do
|
23
23
|
it "must ignore the command if specified line is not valid" do
|
24
24
|
enter 'cont 123'
|
25
|
-
debug_file('continue') { state.line.must_equal 2 }
|
25
|
+
debug_file('continue') { $state.line.must_equal 2 }
|
26
26
|
end
|
27
27
|
|
28
28
|
it "must show error if specified line is not valid" do
|
29
29
|
enter 'cont 123'
|
30
|
-
debug_file
|
30
|
+
debug_file 'continue'
|
31
31
|
check_output_includes "Line 123 is not a stopping point in file " \
|
32
32
|
"\"#{fullpath('continue')}\"", interface.error_queue
|
33
33
|
end
|
data/test/display_test.rb
CHANGED
@@ -16,7 +16,7 @@ class TestDisplay < TestDsl::TestCase
|
|
16
16
|
|
17
17
|
it 'must save displayed expressions' do
|
18
18
|
enter 'display d + 1'
|
19
|
-
debug_file('display') { state.display.must_equal [[true, 'd + 1']] }
|
19
|
+
debug_file('display') { $state.display.must_equal [[true, 'd + 1']] }
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'displays all expressions available' do
|
@@ -47,7 +47,7 @@ class TestDisplay < TestDsl::TestCase
|
|
47
47
|
|
48
48
|
it 'must set all expressions saved to "false"' do
|
49
49
|
debug_file('display') {
|
50
|
-
|
50
|
+
$state.display.must_equal [[false, 'abc'], [false, 'd']] }
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'must not show any output' do
|
@@ -61,7 +61,7 @@ class TestDisplay < TestDsl::TestCase
|
|
61
61
|
|
62
62
|
it 'must set all expressions saved to "false"' do
|
63
63
|
debug_file('display') {
|
64
|
-
|
64
|
+
$state.display.must_equal [[true, 'abc'], [true, 'd']] }
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'must not show any output' do
|
@@ -81,7 +81,7 @@ class TestDisplay < TestDsl::TestCase
|
|
81
81
|
|
82
82
|
it 'must set inactive positions' do
|
83
83
|
debug_file('display') {
|
84
|
-
|
84
|
+
$state.display.must_equal [[nil, 'abc'], [true, 'd']] }
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'must display only the active position' do
|
@@ -99,7 +99,7 @@ class TestDisplay < TestDsl::TestCase
|
|
99
99
|
describe 'disable' do
|
100
100
|
it 'must disable a position' do
|
101
101
|
enter 'display d', 'disable display 1'
|
102
|
-
debug_file('display') { state.display.must_equal [[false, 'd']] }
|
102
|
+
debug_file('display') { $state.display.must_equal [[false, 'd']] }
|
103
103
|
end
|
104
104
|
|
105
105
|
it 'must show an error if no displays are set' do
|
@@ -120,7 +120,7 @@ class TestDisplay < TestDsl::TestCase
|
|
120
120
|
describe 'enable' do
|
121
121
|
it 'must enable a position' do
|
122
122
|
enter 'display d', 'disable display 1', 'enable display 1'
|
123
|
-
debug_file('display') { state.display.must_equal [[true, 'd']] }
|
123
|
+
debug_file('display') { $state.display.must_equal [[true, 'd']] }
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
data/test/edit_test.rb
CHANGED
@@ -29,8 +29,8 @@ class TestEdit < TestDsl::TestCase
|
|
29
29
|
|
30
30
|
it 'must open specified line in specified file with configured editor' do
|
31
31
|
Byebug::Edit.any_instance.expects(:system).
|
32
|
-
with("editr +3 #{fullpath('
|
33
|
-
enter "edit #{fullpath('
|
32
|
+
with("editr +3 #{fullpath('breakpoint')}")
|
33
|
+
enter "edit #{fullpath('breakpoint')}:3"
|
34
34
|
debug_file 'edit'
|
35
35
|
end
|
36
36
|
end
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class SteppingExample
|
2
|
+
def a
|
3
|
+
z = 2
|
4
|
+
b
|
5
|
+
end
|
6
|
+
|
7
|
+
def b
|
8
|
+
v2 = 5 if 1 == 2 ; [1,2,3].map { |a| a.to_f }
|
9
|
+
c
|
10
|
+
end
|
11
|
+
|
12
|
+
def c
|
13
|
+
z = 4
|
14
|
+
5
|
15
|
+
byebug
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
ex = SteppingExample.new.a
|
20
|
+
2.times do
|
21
|
+
ex += 1
|
22
|
+
end
|
23
|
+
|
24
|
+
ex
|
data/test/finish_test.rb
CHANGED
@@ -4,22 +4,22 @@ class TestFinish < TestDsl::TestCase
|
|
4
4
|
|
5
5
|
it 'must stop at the next frame by default' do
|
6
6
|
enter 'break 16', 'cont', 'finish'
|
7
|
-
debug_file('finish') { state.line.must_equal 13 }
|
7
|
+
debug_file('finish') { $state.line.must_equal 13 }
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'must stop at the #0 frame by default' do
|
11
11
|
enter 'break 16', 'cont', 'finish 0'
|
12
|
-
debug_file('finish') { state.line.must_equal 13 }
|
12
|
+
debug_file('finish') { $state.line.must_equal 13 }
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'must stop at the specified frame' do
|
16
16
|
enter 'break 16', 'cont', 'finish 1'
|
17
|
-
debug_file('finish') { state.line.must_equal 9 }
|
17
|
+
debug_file('finish') { $state.line.must_equal 9 }
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'must stop at the next frame if the current frame was changed' do
|
21
21
|
enter 'break 16', 'cont', 'up', 'finish'
|
22
|
-
debug_file('finish') { state.line.must_equal 9 }
|
22
|
+
debug_file('finish') { $state.line.must_equal 9 }
|
23
23
|
end
|
24
24
|
|
25
25
|
describe 'not a number is specified for frame' do
|
@@ -31,7 +31,7 @@ class TestFinish < TestDsl::TestCase
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'must be on the same line' do
|
34
|
-
debug_file('finish') { state.line.must_equal 16 }
|
34
|
+
debug_file('finish') { $state.line.must_equal 16 }
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
data/test/frame_test.rb
CHANGED
@@ -4,32 +4,32 @@ class TestFrame < TestDsl::TestCase
|
|
4
4
|
|
5
5
|
it 'must go up' do
|
6
6
|
enter 'break 16', 'cont', 'up'
|
7
|
-
debug_file('frame') { state.line.must_equal 12 }
|
7
|
+
debug_file('frame') { $state.line.must_equal 12 }
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'must go up by specific number of frames' do
|
11
11
|
enter 'break 16', 'cont', 'up 2'
|
12
|
-
debug_file('frame') { state.line.must_equal 8 }
|
12
|
+
debug_file('frame') { $state.line.must_equal 8 }
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'must go down' do
|
16
16
|
enter 'break 16', 'cont', 'up', 'down'
|
17
|
-
debug_file('frame') { state.line.must_equal 16 }
|
17
|
+
debug_file('frame') { $state.line.must_equal 16 }
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'must go down by specific number of frames' do
|
21
21
|
enter 'break 16', 'cont', 'up 3', 'down 2'
|
22
|
-
debug_file('frame') { state.line.must_equal 12 }
|
22
|
+
debug_file('frame') { $state.line.must_equal 12 }
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'must set frame' do
|
26
26
|
enter 'break 16', 'cont', 'frame 2'
|
27
|
-
debug_file('frame') { state.line.must_equal 8 }
|
27
|
+
debug_file('frame') { $state.line.must_equal 8 }
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'must set frame to the first one by default' do
|
31
31
|
enter 'break 16', 'cont', 'up', 'frame'
|
32
|
-
debug_file('frame') { state.line.must_equal 16 }
|
32
|
+
debug_file('frame') { $state.line.must_equal 16 }
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'must print current stack frame when without arguments' do
|
@@ -40,29 +40,27 @@ class TestFrame < TestDsl::TestCase
|
|
40
40
|
|
41
41
|
it 'must set frame to the first one' do
|
42
42
|
enter 'break 16', 'cont', 'up', 'frame 0'
|
43
|
-
debug_file('frame') { state.line.must_equal 16 }
|
43
|
+
debug_file('frame') { $state.line.must_equal 16 }
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'must set frame to the last one' do
|
47
47
|
enter 'break 16', 'cont', 'bt', 'frame -1'
|
48
|
-
debug_file('frame') { state.file.must_match /minitest\/unit.rb/ }
|
48
|
+
debug_file('frame') { $state.file.must_match /minitest\/unit.rb/ }
|
49
49
|
check_output_doesnt_include "at #{fullpath('frame')}:"
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'must not set frame if the frame number is too low' do
|
53
53
|
enter 'break 16', 'cont', 'down'
|
54
|
-
debug_file('frame') { state.line.must_equal 16 }
|
54
|
+
debug_file('frame') { $state.line.must_equal 16 }
|
55
55
|
check_output_includes \
|
56
|
-
'Adjusting would put us beyond the newest
|
57
|
-
interface.error_queue
|
56
|
+
'Adjusting would put us beyond the newest frame.', interface.error_queue
|
58
57
|
end
|
59
58
|
|
60
59
|
it 'must not set frame if the frame number is too high' do
|
61
60
|
enter 'break 16', 'cont', 'up 100'
|
62
|
-
debug_file('frame') { state.line.must_equal 16 }
|
61
|
+
debug_file('frame') { $state.line.must_equal 16 }
|
63
62
|
check_output_includes \
|
64
|
-
'Adjusting would put us beyond the oldest
|
65
|
-
interface.error_queue
|
63
|
+
'Adjusting would put us beyond the oldest frame.', interface.error_queue
|
66
64
|
end
|
67
65
|
|
68
66
|
describe 'when byebug is started deep in the callstack' do
|
@@ -77,17 +75,17 @@ class TestFrame < TestDsl::TestCase
|
|
77
75
|
|
78
76
|
it 'must go up' do
|
79
77
|
enter 'break 16', 'cont', 'up'
|
80
|
-
debug_file('frame_deep') { state.line.must_equal 13 }
|
78
|
+
debug_file('frame_deep') { $state.line.must_equal 13 }
|
81
79
|
end
|
82
80
|
|
83
81
|
it 'must go down' do
|
84
82
|
enter 'break 16', 'cont', 'up', 'down'
|
85
|
-
debug_file('frame_deep') { state.line.must_equal 16 }
|
83
|
+
debug_file('frame_deep') { $state.line.must_equal 16 }
|
86
84
|
end
|
87
85
|
|
88
86
|
it 'must set frame' do
|
89
87
|
enter 'break 16', 'cont', 'frame 2'
|
90
|
-
debug_file('frame_deep') { state.line.must_equal 8 }
|
88
|
+
debug_file('frame_deep') { $state.line.must_equal 8 }
|
91
89
|
end
|
92
90
|
|
93
91
|
it 'must eval properly when scaling the stack' do
|
@@ -131,17 +129,17 @@ class TestFrame < TestDsl::TestCase
|
|
131
129
|
end
|
132
130
|
|
133
131
|
describe 'callstyle' do
|
134
|
-
describe '
|
135
|
-
temporary_change_hash Byebug::Command.settings, :callstyle, :
|
132
|
+
describe 'long' do
|
133
|
+
temporary_change_hash Byebug::Command.settings, :callstyle, :long
|
136
134
|
|
137
|
-
it 'displays current backtrace with callstyle "
|
135
|
+
it 'displays current backtrace with callstyle "long"' do
|
138
136
|
enter 'break 16', 'cont', 'where'
|
139
137
|
debug_file 'frame'
|
140
138
|
check_output_includes \
|
141
|
-
/--> #0
|
142
|
-
/#1
|
143
|
-
/#2
|
144
|
-
/#3
|
139
|
+
/--> #0 A.d(e#String) at #{fullpath('frame')}:16/x,
|
140
|
+
/#1 A.c at #{fullpath('frame')}:12/x ,
|
141
|
+
/#2 A.b at #{fullpath('frame')}:8/x ,
|
142
|
+
/#3 A.a at #{fullpath('frame')}:5/x
|
145
143
|
end
|
146
144
|
end
|
147
145
|
|
@@ -151,19 +149,10 @@ class TestFrame < TestDsl::TestCase
|
|
151
149
|
it 'displays current backtrace with callstyle "short"' do
|
152
150
|
enter 'break 16', 'cont', 'where'
|
153
151
|
debug_file 'frame'
|
154
|
-
check_output_includes /--> #0
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
describe 'tracked' do
|
162
|
-
temporary_change_hash Byebug::Command.settings, :callstyle, :tracked
|
163
|
-
|
164
|
-
it 'displays current backtrace with callstyle "tracked"' do
|
165
|
-
skip 'XXX: Style supported but not working....'
|
166
|
-
debug_file 'frame'
|
152
|
+
check_output_includes /--> #0 d(e) at #{fullpath('frame')}:16/x,
|
153
|
+
/#1 c at #{fullpath('frame')}:12/x,
|
154
|
+
/#2 b at #{fullpath('frame')}:8/x,
|
155
|
+
/#3 a at #{fullpath('frame')}:5/x
|
167
156
|
end
|
168
157
|
end
|
169
158
|
end
|
@@ -171,7 +160,7 @@ class TestFrame < TestDsl::TestCase
|
|
171
160
|
describe 'Post Mortem' do
|
172
161
|
it 'must work in post-mortem mode' do
|
173
162
|
enter 'cont', 'frame'
|
174
|
-
debug_file('post_mortem') { state.line.must_equal 8 }
|
163
|
+
debug_file('post_mortem') { $state.line.must_equal 8 }
|
175
164
|
end
|
176
165
|
end
|
177
166
|
|
data/test/jump_test.rb
CHANGED
@@ -6,7 +6,7 @@ class TestJump < TestDsl::TestCase
|
|
6
6
|
it "must jump with absolute line number" do
|
7
7
|
skip("No jumping for now")
|
8
8
|
enter 'break 6', 'cont', "jump 8 #{fullpath('jump')}"
|
9
|
-
debug_file('jump') { state.line.must_equal 8 }
|
9
|
+
debug_file('jump') { $state.line.must_equal 8 }
|
10
10
|
end
|
11
11
|
|
12
12
|
it "must not initialize skipped variables during jump" do
|
@@ -20,13 +20,13 @@ class TestJump < TestDsl::TestCase
|
|
20
20
|
it "must jump with relative line number (-)" do
|
21
21
|
skip("No jumping for now")
|
22
22
|
enter 'break 8', 'cont', "jump -2 #{fullpath('jump')}"
|
23
|
-
debug_file('jump') { state.line.must_equal 6 }
|
23
|
+
debug_file('jump') { $state.line.must_equal 6 }
|
24
24
|
end
|
25
25
|
|
26
26
|
it "must jump with relative line number (+)" do
|
27
27
|
skip("No jumping for now")
|
28
28
|
enter 'break 8', 'cont', "jump +2 #{fullpath('jump')}"
|
29
|
-
debug_file('jump') { state.line.must_equal 10 }
|
29
|
+
debug_file('jump') { $state.line.must_equal 10 }
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -50,7 +50,7 @@ class TestJump < TestDsl::TestCase
|
|
50
50
|
it "must not jump to there" do
|
51
51
|
skip("No jumping for now")
|
52
52
|
enter "jump 13 #{fullpath('jump')}"
|
53
|
-
debug_file('jump') { state.line.must_equal 3 }
|
53
|
+
debug_file('jump') { $state.line.must_equal 3 }
|
54
54
|
end
|
55
55
|
|
56
56
|
it "must show an error" do
|
@@ -68,11 +68,10 @@ class TestJump < TestDsl::TestCase
|
|
68
68
|
it "must work in post-mortem mode" do
|
69
69
|
skip 'No jumping for now plus this test fails with "Segmentation ' \
|
70
70
|
'fault". Probably need to fix it somehow or forbid this command ' \
|
71
|
-
'in post mortem mode. Seems like state.context.frame_file and '
|
72
|
-
'state.context.frame_line cause that.'
|
71
|
+
'in post mortem mode. Seems like $state.context.frame_file and ' \
|
72
|
+
'$state.context.frame_line cause that.'
|
73
73
|
enter 'cont', 'jump 12'
|
74
74
|
debug_file 'post_mortem'
|
75
75
|
end
|
76
76
|
end
|
77
|
-
|
78
77
|
end
|
data/test/list_test.rb
CHANGED
@@ -161,7 +161,7 @@ class TestList < TestDsl::TestCase
|
|
161
161
|
end
|
162
162
|
|
163
163
|
it 'must show an error when there is no such file' do
|
164
|
-
enter ->{state.file = 'blabla'; 'list 4-4'}
|
164
|
+
enter -> { $state.file = 'blabla'; 'list 4-4' }
|
165
165
|
debug_file 'list'
|
166
166
|
check_output_includes 'No sourcefile available for blabla',
|
167
167
|
interface.error_queue
|
data/test/post_mortem_test.rb
CHANGED
@@ -9,7 +9,7 @@ class TestPostMortem < TestDsl::TestCase
|
|
9
9
|
|
10
10
|
it 'must stop at the correct line' do
|
11
11
|
enter 'cont'
|
12
|
-
debug_file('post_mortem') { state.line.must_equal 8 }
|
12
|
+
debug_file('post_mortem') { $state.line.must_equal 8 }
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'must exit from post mortem mode after stepping command' do
|
data/test/repl_test.rb
CHANGED
@@ -13,19 +13,19 @@ class TestRepl < TestDsl::TestCase
|
|
13
13
|
it 'must support next command' do
|
14
14
|
irb.stubs(:eval_input).throws(:IRB_EXIT, :next)
|
15
15
|
enter 'irb'
|
16
|
-
debug_file('repl') { state.line.must_equal 3 }
|
16
|
+
debug_file('repl') { $state.line.must_equal 3 }
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'must support step command' do
|
20
20
|
irb.stubs(:eval_input).throws(:IRB_EXIT, :step)
|
21
21
|
enter 'irb'
|
22
|
-
debug_file('repl') { state.line.must_equal 3 }
|
22
|
+
debug_file('repl') { $state.line.must_equal 3 }
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'must support cont command' do
|
26
26
|
irb.stubs(:eval_input).throws(:IRB_EXIT, :cont)
|
27
27
|
enter 'break 4', 'irb'
|
28
|
-
debug_file('repl') { state.line.must_equal 4 }
|
28
|
+
debug_file('repl') { $state.line.must_equal 4 }
|
29
29
|
end
|
30
30
|
|
31
31
|
describe 'autoirb' do
|
@@ -36,31 +36,11 @@ class TestRepl < TestDsl::TestCase
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
describe 'setting context to $byebug_state' do
|
40
|
-
temporary_change_hash Byebug::Command.settings, :testing, false
|
41
|
-
|
42
|
-
it 'must set $byebug_state if irb is in the debug mode' do
|
43
|
-
byebug_state = nil
|
44
|
-
irb.stubs(:eval_input).calls { byebug_state = $byebug_state }
|
45
|
-
enter 'irb -d'
|
46
|
-
debug_file 'repl'
|
47
|
-
byebug_state.must_be_kind_of Byebug::CommandProcessor::State
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'must not set $byebug_state if irb is not in the debug mode' do
|
51
|
-
byebug_state = nil
|
52
|
-
irb.stubs(:eval_input).calls { byebug_state = $byebug_state }
|
53
|
-
enter 'irb'
|
54
|
-
debug_file 'repl'
|
55
|
-
byebug_state.must_be_nil
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
39
|
describe 'Post Mortem' do
|
60
40
|
it 'must work in post-mortem mode' do
|
61
41
|
irb.stubs(:eval_input).throws(:IRB_EXIT, :cont)
|
62
42
|
enter 'cont', 'break 12', 'irb'
|
63
|
-
debug_file('post_mortem') { state.line.must_equal 12 }
|
43
|
+
debug_file('post_mortem') { $state.line.must_equal 12 }
|
64
44
|
end
|
65
45
|
end
|
66
46
|
end
|
@@ -86,22 +66,6 @@ class TestRepl < TestDsl::TestCase
|
|
86
66
|
end
|
87
67
|
end
|
88
68
|
|
89
|
-
describe 'setting context to $byebug_state' do
|
90
|
-
temporary_change_hash Byebug::Command.settings, :testing, false
|
91
|
-
|
92
|
-
it 'must set $byebug_state if irb is in the debug mode' do
|
93
|
-
enter 'pry -d'
|
94
|
-
debug_file 'repl'
|
95
|
-
$byebug_state.must_be_kind_of Byebug::CommandProcessor::State
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'must not set $byebug_state if irb is not in the debug mode' do
|
99
|
-
enter 'pry'
|
100
|
-
debug_file 'repl'
|
101
|
-
$byebug_state.must_be_nil
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
69
|
describe 'Post Mortem' do
|
106
70
|
it 'must work in post-mortem mode' do
|
107
71
|
skip 'TODO'
|