byebug 1.8.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/GUIDE.md +14 -22
- data/README.md +69 -6
- data/bin/byebug +3 -20
- data/ext/byebug/breakpoint.c +185 -101
- data/ext/byebug/byebug.c +393 -214
- data/ext/byebug/byebug.h +34 -15
- data/ext/byebug/context.c +327 -102
- data/ext/byebug/extconf.rb +1 -1
- data/ext/byebug/locker.c +54 -0
- data/ext/byebug/threads.c +113 -0
- data/lib/byebug.rb +19 -58
- data/lib/byebug/command.rb +18 -19
- data/lib/byebug/commands/breakpoints.rb +1 -4
- data/lib/byebug/commands/catchpoint.rb +1 -1
- data/lib/byebug/commands/condition.rb +1 -1
- data/lib/byebug/commands/control.rb +2 -3
- data/lib/byebug/commands/display.rb +2 -7
- data/lib/byebug/commands/edit.rb +1 -1
- data/lib/byebug/commands/enable.rb +12 -12
- data/lib/byebug/commands/eval.rb +4 -4
- data/lib/byebug/commands/finish.rb +1 -1
- data/lib/byebug/commands/frame.rb +12 -8
- data/lib/byebug/commands/info.rb +20 -52
- data/lib/byebug/commands/kill.rb +1 -5
- data/lib/byebug/commands/list.rb +2 -1
- data/lib/byebug/commands/quit.rb +1 -1
- data/lib/byebug/commands/repl.rb +2 -2
- data/lib/byebug/commands/save.rb +1 -1
- data/lib/byebug/commands/set.rb +84 -90
- data/lib/byebug/commands/show.rb +44 -53
- data/lib/byebug/commands/skip.rb +1 -1
- data/lib/byebug/commands/stepping.rb +5 -4
- data/lib/byebug/commands/threads.rb +202 -0
- data/lib/byebug/commands/trace.rb +1 -1
- data/lib/byebug/helper.rb +3 -3
- data/lib/byebug/interface.rb +2 -20
- data/lib/byebug/processor.rb +21 -100
- data/lib/byebug/remote.rb +3 -3
- data/lib/byebug/version.rb +1 -1
- data/old_doc/byebug.1 +0 -6
- data/old_doc/byebug.texi +29 -46
- data/test/breakpoints_test.rb +44 -65
- data/test/conditions_test.rb +0 -9
- data/test/continue_test.rb +2 -2
- data/test/display_test.rb +4 -23
- data/test/edit_test.rb +2 -16
- data/test/eval_test.rb +4 -13
- data/test/examples/thread.rb +32 -0
- data/test/finish_test.rb +1 -13
- data/test/frame_test.rb +5 -12
- data/test/help_test.rb +2 -12
- data/test/info_test.rb +8 -18
- data/test/kill_test.rb +1 -10
- data/test/list_test.rb +5 -14
- data/test/method_test.rb +1 -10
- data/test/post_mortem_test.rb +247 -14
- data/test/quit_test.rb +0 -9
- data/test/reload_test.rb +1 -15
- data/test/repl_test.rb +1 -9
- data/test/restart_test.rb +3 -18
- data/test/save_test.rb +1 -13
- data/test/set_test.rb +35 -32
- data/test/show_test.rb +8 -27
- data/test/source_test.rb +1 -8
- data/test/stepping_test.rb +65 -96
- data/test/support/test_dsl.rb +12 -17
- data/test/test_helper.rb +1 -1
- data/test/thread_test.rb +106 -0
- data/test/trace_test.rb +5 -17
- data/test/variables_test.rb +1 -10
- metadata +9 -7
- data/lib/byebug/commands/jump.rb +0 -52
- data/test/jump_test.rb +0 -77
- data/test/support/context.rb +0 -15
data/test/conditions_test.rb
CHANGED
@@ -69,13 +69,4 @@ class TestConditions < TestDsl::TestCase
|
|
69
69
|
debug_file('conditions') { $state.line.must_equal 3 }
|
70
70
|
end
|
71
71
|
end
|
72
|
-
|
73
|
-
describe 'Post Mortem' do
|
74
|
-
it 'must be able to set conditions in post-mortem mode' do
|
75
|
-
enter 'cont', 'break 12', ->{ "cond #{Byebug.breakpoints.first.id} true" },
|
76
|
-
'cont'
|
77
|
-
debug_file('post_mortem') { $state.line.must_equal 12 }
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
72
|
end
|
data/test/continue_test.rb
CHANGED
@@ -28,8 +28,8 @@ class TestContinue < TestDsl::TestCase
|
|
28
28
|
it "must show error if specified line is not valid" do
|
29
29
|
enter 'cont 123'
|
30
30
|
debug_file 'continue'
|
31
|
-
|
32
|
-
|
31
|
+
check_error_includes \
|
32
|
+
"Line 123 is not a stopping point in file \"#{fullpath('continue')}\""
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
data/test/display_test.rb
CHANGED
@@ -24,7 +24,7 @@ class TestDisplay < TestDsl::TestCase
|
|
24
24
|
Byebug.handler.display.concat([[true, 'abc'], [true, 'd']]); 'display'
|
25
25
|
end
|
26
26
|
debug_file 'display'
|
27
|
-
check_output_includes '1: ', 'abc = ', '2: ', 'd = 4'
|
27
|
+
check_output_includes '1: ', 'abc = nil', '2: ', 'd = 4'
|
28
28
|
end
|
29
29
|
|
30
30
|
describe 'undisplay' do
|
@@ -52,7 +52,7 @@ class TestDisplay < TestDsl::TestCase
|
|
52
52
|
|
53
53
|
it 'must not show any output' do
|
54
54
|
debug_file 'display'
|
55
|
-
check_output_doesnt_include '1: ', 'abc = ', '2: ', 'd = 4'
|
55
|
+
check_output_doesnt_include '1: ', 'abc = nil', '2: ', 'd = 4'
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -66,7 +66,7 @@ class TestDisplay < TestDsl::TestCase
|
|
66
66
|
|
67
67
|
it 'must not show any output' do
|
68
68
|
debug_file 'display'
|
69
|
-
check_output_includes '1: ', 'abc = ', '2: ', 'd = 4'
|
69
|
+
check_output_includes '1: ', 'abc = nil', '2: ', 'd = 4'
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -113,7 +113,7 @@ class TestDisplay < TestDsl::TestCase
|
|
113
113
|
enter 'display d', 'disable display 4'
|
114
114
|
debug_file 'display'
|
115
115
|
check_output_includes \
|
116
|
-
'
|
116
|
+
'"disable display" argument "4" needs to be at most 1.'
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
@@ -123,23 +123,4 @@ class TestDisplay < TestDsl::TestCase
|
|
123
123
|
debug_file('display') { $state.display.must_equal [[true, 'd']] }
|
124
124
|
end
|
125
125
|
end
|
126
|
-
|
127
|
-
describe 'annotate' do
|
128
|
-
after { Byebug.annotate = 0 }
|
129
|
-
|
130
|
-
it 'must show display expression in annotation' do
|
131
|
-
enter 'display 2 + 2', 'set annotate 3', 'next', 'next'
|
132
|
-
debug_file 'display'
|
133
|
-
check_output_includes "\u001A\u001Adisplay", '1:', '2 + 2 = 4'
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
describe 'Post Mortem' do
|
138
|
-
it 'must be able to set display expressions in post-mortem mode' do
|
139
|
-
enter 'cont', 'display 2 + 2'
|
140
|
-
debug_file 'post_mortem'
|
141
|
-
check_output_includes '1:', '2 + 2 = 4'
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
126
|
end
|
data/test/edit_test.rb
CHANGED
@@ -38,26 +38,12 @@ class TestEdit < TestDsl::TestCase
|
|
38
38
|
it 'must show an error if there is no such line' do
|
39
39
|
enter "edit #{fullpath('edit3')}:6"
|
40
40
|
debug_file 'edit'
|
41
|
-
|
42
|
-
"File \"#{fullpath('edit3')}\" is not readable.", interface.error_queue
|
41
|
+
check_error_includes "File \"#{fullpath('edit3')}\" is not readable."
|
43
42
|
end
|
44
43
|
|
45
44
|
it 'must show an error if there is incorrect syntax' do
|
46
45
|
enter 'edit blabla'
|
47
46
|
debug_file 'edit'
|
48
|
-
|
49
|
-
'Invalid file/line number specification: blabla', interface.error_queue
|
47
|
+
check_error_includes 'Invalid file/line number specification: blabla'
|
50
48
|
end
|
51
|
-
|
52
|
-
describe 'Post Mortem' do
|
53
|
-
temporary_change_hash ENV, 'EDITOR', 'editr'
|
54
|
-
|
55
|
-
it 'must work in post-mortem mode' do
|
56
|
-
Byebug::Edit.any_instance.expects(:system).
|
57
|
-
with("editr +2 #{fullpath('edit')}")
|
58
|
-
enter 'cont', "edit #{fullpath('edit')}:2", 'cont'
|
59
|
-
debug_file 'post_mortem'
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
49
|
end
|
data/test/eval_test.rb
CHANGED
@@ -38,7 +38,7 @@ class TestEval < TestDsl::TestCase
|
|
38
38
|
|
39
39
|
describe 'stack trace on error' do
|
40
40
|
describe 'when enabled' do
|
41
|
-
temporary_change_hash Byebug
|
41
|
+
temporary_change_hash Byebug.settings, :stack_trace_on_error, true
|
42
42
|
|
43
43
|
it 'must show a stack trace' do
|
44
44
|
enter 'eval 2 / 0'
|
@@ -49,7 +49,7 @@ class TestEval < TestDsl::TestCase
|
|
49
49
|
end
|
50
50
|
|
51
51
|
describe 'when disabled' do
|
52
|
-
temporary_change_hash Byebug
|
52
|
+
temporary_change_hash Byebug.settings, :stack_trace_on_error, false
|
53
53
|
|
54
54
|
it 'must only show exception' do
|
55
55
|
enter 'eval 2 / 0'
|
@@ -69,7 +69,7 @@ class TestEval < TestDsl::TestCase
|
|
69
69
|
end
|
70
70
|
|
71
71
|
describe 'putl' do
|
72
|
-
temporary_change_hash Byebug
|
72
|
+
temporary_change_hash Byebug.settings, :width, 20
|
73
73
|
|
74
74
|
it 'must print expression and columnize the result' do
|
75
75
|
enter 'putl [1, 2, 3, 4, 5, 9, 8, 7, 6]'
|
@@ -79,7 +79,7 @@ class TestEval < TestDsl::TestCase
|
|
79
79
|
end
|
80
80
|
|
81
81
|
describe 'ps' do
|
82
|
-
temporary_change_hash Byebug
|
82
|
+
temporary_change_hash Byebug.settings, :width, 20
|
83
83
|
|
84
84
|
it 'must print expression and sort and columnize the result' do
|
85
85
|
enter 'ps [1, 2, 3, 4, 5, 9, 8, 7, 6]'
|
@@ -87,13 +87,4 @@ class TestEval < TestDsl::TestCase
|
|
87
87
|
check_output_includes "1 3 5 7 9\n2 4 6 8"
|
88
88
|
end
|
89
89
|
end
|
90
|
-
|
91
|
-
describe 'Post Mortem' do
|
92
|
-
it 'must work in post-mortem mode' do
|
93
|
-
enter 'cont', 'eval 2 + 2'
|
94
|
-
debug_file 'post_mortem'
|
95
|
-
check_output_includes '4'
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
90
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
byebug
|
2
|
+
class ThreadExample
|
3
|
+
def initialize
|
4
|
+
Thread.main[:should_break] = false
|
5
|
+
end
|
6
|
+
|
7
|
+
def launch
|
8
|
+
@t1 = Thread.new do
|
9
|
+
while true
|
10
|
+
break if Thread.main[:should_break]
|
11
|
+
sleep 0.02
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
@t2 = Thread.new do
|
16
|
+
while true
|
17
|
+
sleep 0.02
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
@t1.join
|
22
|
+
Thread.main[:should_break]
|
23
|
+
end
|
24
|
+
|
25
|
+
def kill
|
26
|
+
@t2.kill
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
t = ThreadExample.new
|
31
|
+
t.launch
|
32
|
+
t.kill
|
data/test/finish_test.rb
CHANGED
@@ -27,23 +27,11 @@ class TestFinish < TestDsl::TestCase
|
|
27
27
|
|
28
28
|
it 'must show an error' do
|
29
29
|
debug_file('finish')
|
30
|
-
check_output_includes '
|
30
|
+
check_output_includes '"finish" argument "foo" needs to be a number.'
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'must be on the same line' do
|
34
34
|
debug_file('finish') { $state.line.must_equal 16 }
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
38
|
-
describe 'Post Mortem' do
|
39
|
-
temporary_change_hash Byebug::Command.settings, :autoeval, false
|
40
|
-
|
41
|
-
it 'must not work in post-mortem mode' do
|
42
|
-
enter 'cont', 'finish'
|
43
|
-
debug_file 'post_mortem'
|
44
|
-
check_output_includes \
|
45
|
-
'Unknown command: "finish". Try "help".', interface.error_queue
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
37
|
end
|
data/test/frame_test.rb
CHANGED
@@ -44,9 +44,8 @@ class TestFrame < TestDsl::TestCase
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'must set frame to the last one' do
|
47
|
-
enter '
|
47
|
+
enter 'frame -1'
|
48
48
|
debug_file('frame') { $state.file.must_match /minitest\/unit.rb/ }
|
49
|
-
check_output_doesnt_include "at #{@tst_file}:"
|
50
49
|
end
|
51
50
|
|
52
51
|
it 'must not set frame if the frame number is too low' do
|
@@ -70,7 +69,7 @@ class TestFrame < TestDsl::TestCase
|
|
70
69
|
end
|
71
70
|
|
72
71
|
describe 'when set' do
|
73
|
-
temporary_change_hash Byebug
|
72
|
+
temporary_change_hash Byebug.settings, :fullpath, true
|
74
73
|
|
75
74
|
it 'must display current backtrace with fullpaths' do
|
76
75
|
enter 'where'
|
@@ -83,7 +82,7 @@ class TestFrame < TestDsl::TestCase
|
|
83
82
|
end
|
84
83
|
|
85
84
|
describe 'when unset' do
|
86
|
-
temporary_change_hash Byebug
|
85
|
+
temporary_change_hash Byebug.settings, :fullpath, false
|
87
86
|
|
88
87
|
it 'must display current backtrace with shortpaths' do
|
89
88
|
enter 'where'
|
@@ -99,7 +98,7 @@ class TestFrame < TestDsl::TestCase
|
|
99
98
|
|
100
99
|
describe 'callstyle' do
|
101
100
|
describe 'long' do
|
102
|
-
temporary_change_hash Byebug
|
101
|
+
temporary_change_hash Byebug.settings, :callstyle, :long
|
103
102
|
|
104
103
|
it 'displays current backtrace with callstyle "long"' do
|
105
104
|
enter 'where'
|
@@ -113,7 +112,7 @@ class TestFrame < TestDsl::TestCase
|
|
113
112
|
end
|
114
113
|
|
115
114
|
describe 'short' do
|
116
|
-
temporary_change_hash Byebug
|
115
|
+
temporary_change_hash Byebug.settings, :callstyle, :short
|
117
116
|
|
118
117
|
it 'displays current backtrace with callstyle "short"' do
|
119
118
|
enter 'where'
|
@@ -195,10 +194,4 @@ class TestFrame < TestDsl::TestCase
|
|
195
194
|
end
|
196
195
|
end
|
197
196
|
|
198
|
-
describe 'Post Mortem' do
|
199
|
-
it 'must work in post-mortem mode' do
|
200
|
-
enter 'cont', 'frame'
|
201
|
-
debug_file('post_mortem') { $state.line.must_equal 8 }
|
202
|
-
end
|
203
|
-
end
|
204
197
|
end
|
data/test/help_test.rb
CHANGED
@@ -7,7 +7,7 @@ class TestHelp < TestDsl::TestCase
|
|
7
7
|
Byebug::Command.commands.select(&:event).map(&:names).flatten.uniq.sort }
|
8
8
|
|
9
9
|
describe 'when typed alone' do
|
10
|
-
temporary_change_hash Byebug
|
10
|
+
temporary_change_hash Byebug.settings, :width, 50
|
11
11
|
|
12
12
|
it 'must show self help when typed alone' do
|
13
13
|
enter 'help'
|
@@ -29,8 +29,7 @@ class TestHelp < TestDsl::TestCase
|
|
29
29
|
it 'must show an error if an undefined command is specified' do
|
30
30
|
enter 'help foobar'
|
31
31
|
debug_file 'help'
|
32
|
-
|
33
|
-
'Undefined command: "foobar". Try "help".', interface.error_queue
|
32
|
+
check_error_includes 'Undefined command: "foobar". Try "help".'
|
34
33
|
end
|
35
34
|
|
36
35
|
it "must show a command's help" do
|
@@ -53,13 +52,4 @@ class TestHelp < TestDsl::TestCase
|
|
53
52
|
"With an integer argument, list info on that breakpoint."
|
54
53
|
end
|
55
54
|
end
|
56
|
-
|
57
|
-
describe 'Post Mortem' do
|
58
|
-
it 'must work in post-mortem mode' do
|
59
|
-
enter 'cont', 'help'
|
60
|
-
debug_file 'post_mortem'
|
61
|
-
check_output_includes 'Available commands:'
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
55
|
end
|
data/test/info_test.rb
CHANGED
@@ -4,7 +4,7 @@ class TestInfo < TestDsl::TestCase
|
|
4
4
|
include Columnize
|
5
5
|
|
6
6
|
describe 'Args info' do
|
7
|
-
temporary_change_hash Byebug
|
7
|
+
temporary_change_hash Byebug.settings, :width, 15
|
8
8
|
|
9
9
|
it 'must show info about all args' do
|
10
10
|
enter 'break 3', 'cont', 'info args'
|
@@ -39,8 +39,7 @@ class TestInfo < TestDsl::TestCase
|
|
39
39
|
it 'must show an error if no breakpoints are found' do
|
40
40
|
enter 'break 7', 'info breakpoints 123'
|
41
41
|
debug_file 'info'
|
42
|
-
|
43
|
-
'No breakpoints found among list given.', interface.error_queue
|
42
|
+
check_error_includes 'No breakpoints found among list given.'
|
44
43
|
end
|
45
44
|
|
46
45
|
it 'must show hit count' do
|
@@ -99,7 +98,7 @@ class TestInfo < TestDsl::TestCase
|
|
99
98
|
let(:sha1) { LineCache.sha1(file) }
|
100
99
|
let(:breakpoint_line_numbers) {
|
101
100
|
columnize(LineCache.trace_line_numbers(file).to_a.sort,
|
102
|
-
Byebug
|
101
|
+
Byebug.settings[:width]) }
|
103
102
|
|
104
103
|
it 'must show basic info about the file' do
|
105
104
|
enter "info file #{file} basic"
|
@@ -155,7 +154,7 @@ class TestInfo < TestDsl::TestCase
|
|
155
154
|
it 'must not show any info if the parameter is invalid' do
|
156
155
|
enter "info file #{file} blabla"
|
157
156
|
debug_file 'info'
|
158
|
-
|
157
|
+
check_error_includes 'Invalid parameter blabla'
|
159
158
|
end
|
160
159
|
end
|
161
160
|
|
@@ -176,18 +175,18 @@ class TestInfo < TestDsl::TestCase
|
|
176
175
|
end
|
177
176
|
|
178
177
|
describe 'Locals info' do
|
179
|
-
temporary_change_hash Byebug
|
178
|
+
temporary_change_hash Byebug.settings, :width, 28
|
180
179
|
|
181
180
|
it 'must show the current local variables' do
|
182
181
|
enter 'break 21', 'cont', 'info locals'
|
183
182
|
debug_file 'info'
|
184
|
-
check_output_includes 'a = "
|
183
|
+
check_output_includes 'a = "11111111111111111111...', 'b = 2'
|
185
184
|
end
|
186
185
|
|
187
186
|
it 'must fail if local variable doesn\'t respond to #to_s or to #inspect' do
|
188
187
|
enter 'break 26', 'cont', 'info locals'
|
189
188
|
debug_file 'info'
|
190
|
-
check_output_includes '*Error in evaluation*'
|
189
|
+
check_output_includes 'a = *Error in evaluation*'
|
191
190
|
end
|
192
191
|
end
|
193
192
|
|
@@ -248,7 +247,7 @@ class TestInfo < TestDsl::TestCase
|
|
248
247
|
end
|
249
248
|
|
250
249
|
describe 'Variables info' do
|
251
|
-
temporary_change_hash Byebug
|
250
|
+
temporary_change_hash Byebug.settings, :width, 30
|
252
251
|
|
253
252
|
it 'must show all variables' do
|
254
253
|
enter 'break 21', 'cont', 'info variables'
|
@@ -283,13 +282,4 @@ class TestInfo < TestDsl::TestCase
|
|
283
282
|
check_output_includes /List of "info" subcommands:/
|
284
283
|
end
|
285
284
|
end
|
286
|
-
|
287
|
-
describe 'Post Mortem' do
|
288
|
-
it 'must work in post-mortem mode' do
|
289
|
-
enter 'cont', 'info line'
|
290
|
-
debug_file 'post_mortem'
|
291
|
-
check_output_includes "Line 8 of \"#{fullpath('post_mortem')}\""
|
292
|
-
end
|
293
|
-
end
|
294
|
-
|
295
285
|
end
|
data/test/kill_test.rb
CHANGED
@@ -32,16 +32,7 @@ class TestKill < TestDsl::TestCase
|
|
32
32
|
it 'must show an error' do
|
33
33
|
enter 'kill BLA'
|
34
34
|
debug_file('kill')
|
35
|
-
|
36
|
-
'signal name BLA is not a signal I know about', interface.error_queue
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe 'Post Mortem' do
|
41
|
-
it 'must work in post-mortem mode' do
|
42
|
-
Process.expects(:kill).with('USR1', Process.pid)
|
43
|
-
enter 'cont', 'kill USR1'
|
44
|
-
debug_file 'post_mortem'
|
35
|
+
check_error_includes 'signal name BLA is not a signal I know about'
|
45
36
|
end
|
46
37
|
end
|
47
38
|
end
|
data/test/list_test.rb
CHANGED
@@ -28,7 +28,7 @@ class TestList < TestDsl::TestCase
|
|
28
28
|
end
|
29
29
|
|
30
30
|
describe 'very large' do
|
31
|
-
temporary_change_hash Byebug
|
31
|
+
temporary_change_hash Byebug.settings, :listsize, 50
|
32
32
|
|
33
33
|
it 'must list whole file if number of lines is smaller than listsize' do
|
34
34
|
enter 'break 3', 'cont'
|
@@ -57,7 +57,7 @@ class TestList < TestDsl::TestCase
|
|
57
57
|
end
|
58
58
|
|
59
59
|
describe 'list backwards' do
|
60
|
-
temporary_change_hash Byebug
|
60
|
+
temporary_change_hash Byebug.settings, :autolist, 0
|
61
61
|
|
62
62
|
it 'must show surrounding lines with the first call' do
|
63
63
|
enter 'break 15', 'cont', 'list -'
|
@@ -77,7 +77,7 @@ class TestList < TestDsl::TestCase
|
|
77
77
|
end
|
78
78
|
|
79
79
|
describe 'list surrounding' do
|
80
|
-
temporary_change_hash Byebug
|
80
|
+
temporary_change_hash Byebug.settings, :autolist, 0
|
81
81
|
|
82
82
|
it 'must show the surrounding lines with =' do
|
83
83
|
enter 'break 5', 'cont', 'list ='
|
@@ -140,7 +140,7 @@ class TestList < TestDsl::TestCase
|
|
140
140
|
after { change_line_in_file(fullpath('list'), 4, 'a = 4') }
|
141
141
|
|
142
142
|
describe 'when autoreload is false' do
|
143
|
-
temporary_change_hash Byebug
|
143
|
+
temporary_change_hash Byebug.settings, :autoreload, false
|
144
144
|
|
145
145
|
it 'must not reload listing with file changes' do
|
146
146
|
enter -> { change_line_in_file fullpath('list'), 4, 'a = 100' ;
|
@@ -163,8 +163,7 @@ class TestList < TestDsl::TestCase
|
|
163
163
|
it 'must show an error when there is no such file' do
|
164
164
|
enter -> { $state.file = 'blabla'; 'list 4-4' }
|
165
165
|
debug_file 'list'
|
166
|
-
|
167
|
-
interface.error_queue
|
166
|
+
check_error_includes 'No sourcefile available for blabla'
|
168
167
|
end
|
169
168
|
|
170
169
|
it 'must correctly print lines containing % sign' do
|
@@ -172,12 +171,4 @@ class TestList < TestDsl::TestCase
|
|
172
171
|
debug_file 'list'
|
173
172
|
check_output_includes "23: a = '%23'"
|
174
173
|
end
|
175
|
-
|
176
|
-
describe 'Post Mortem' do
|
177
|
-
it 'must work in post-mortem mode' do
|
178
|
-
enter 'cont'
|
179
|
-
debug_file 'post_mortem'
|
180
|
-
check_output_includes "[3, 12] in #{fullpath('post_mortem')}"
|
181
|
-
end
|
182
|
-
end
|
183
174
|
end
|