byebug 1.0.3 → 1.1.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/CHANGELOG.md +5 -0
- data/README.md +13 -11
- data/Rakefile +0 -6
- data/bin/byebug +83 -136
- data/ext/byebug/byebug.c +182 -96
- data/ext/byebug/byebug.h +5 -7
- data/ext/byebug/context.c +52 -40
- data/lib/byebug.rb +81 -81
- data/lib/byebug/command.rb +18 -35
- data/lib/byebug/commands/control.rb +1 -1
- data/lib/byebug/commands/display.rb +0 -2
- data/lib/byebug/commands/enable.rb +4 -16
- data/lib/byebug/commands/eval.rb +5 -3
- data/lib/byebug/commands/frame.rb +68 -69
- data/lib/byebug/commands/help.rb +2 -1
- data/lib/byebug/commands/info.rb +43 -42
- data/lib/byebug/commands/method.rb +4 -3
- data/lib/byebug/commands/set.rb +10 -19
- data/lib/byebug/commands/show.rb +6 -13
- data/lib/byebug/interface.rb +1 -1
- data/lib/byebug/processor.rb +14 -17
- data/lib/byebug/version.rb +1 -2
- data/old_doc/byebug.texi +576 -847
- data/test/breakpoints_test.rb +0 -1
- data/test/conditions_test.rb +35 -33
- data/test/display_test.rb +14 -13
- data/test/edit_test.rb +28 -25
- data/test/eval_test.rb +0 -2
- data/test/finish_test.rb +4 -3
- data/test/frame_test.rb +20 -21
- data/test/help_test.rb +26 -23
- data/test/info_test.rb +105 -108
- data/test/irb_test.rb +26 -25
- data/test/kill_test.rb +19 -19
- data/test/list_test.rb +140 -156
- data/test/method_test.rb +21 -22
- data/test/post_mortem_test.rb +2 -5
- data/test/quit_test.rb +16 -17
- data/test/reload_test.rb +2 -2
- data/test/restart_test.rb +0 -1
- data/test/save_test.rb +31 -32
- data/test/set_test.rb +50 -47
- data/test/show_test.rb +67 -66
- data/test/source_test.rb +31 -34
- data/test/stepping_test.rb +32 -34
- data/test/support/test_dsl.rb +1 -1
- data/test/trace_test.rb +1 -2
- data/test/variables_test.rb +36 -34
- metadata +2 -4
- data/lib/byebug/commands/tmate.rb +0 -36
- data/test/tmate_test.rb +0 -44
data/test/breakpoints_test.rb
CHANGED
@@ -369,7 +369,6 @@ describe 'Breakpoints' do
|
|
369
369
|
|
370
370
|
describe 'Post Mortem' do
|
371
371
|
it 'must be able to set breakpoints in post-mortem mode' do
|
372
|
-
skip('No post morten mode for now')
|
373
372
|
enter 'cont', 'break 12', 'cont'
|
374
373
|
debug_file('post_mortem') { state.line.must_equal 12 }
|
375
374
|
end
|
data/test/conditions_test.rb
CHANGED
@@ -1,79 +1,81 @@
|
|
1
1
|
require_relative 'test_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe 'Conditions' do
|
4
4
|
include TestDsl
|
5
5
|
|
6
|
-
describe
|
6
|
+
describe 'setting condition' do
|
7
7
|
before { enter 'break 3' }
|
8
8
|
|
9
|
-
describe
|
10
|
-
it
|
11
|
-
enter ->{"cond #{Byebug.breakpoints.first.id} b == 5"},
|
9
|
+
describe 'successfully' do
|
10
|
+
it 'must assign the expression to breakpoint' do
|
11
|
+
enter ->{ "cond #{Byebug.breakpoints.first.id} b == 5" }, 'cont'
|
12
12
|
debug_file('conditions') {
|
13
|
-
Byebug.breakpoints.first.expr.must_equal
|
13
|
+
Byebug.breakpoints.first.expr.must_equal 'b == 5' }
|
14
14
|
end
|
15
15
|
|
16
|
-
it
|
17
|
-
enter ->{"cond #{Byebug.breakpoints.first.id} b == 5"},
|
16
|
+
it 'must stop at the breakpoint if condition is true' do
|
17
|
+
enter ->{ "cond #{Byebug.breakpoints.first.id} b == 5" }, 'cont'
|
18
18
|
debug_file('conditions') { state.line.must_equal 3 }
|
19
19
|
end
|
20
20
|
|
21
|
-
it
|
22
|
-
enter ->{"condition #{Byebug.breakpoints.first.id} b == 5"},
|
21
|
+
it 'must work with full command name too' do
|
22
|
+
enter ->{ "condition #{Byebug.breakpoints.first.id} b == 5" }, 'cont'
|
23
23
|
debug_file('conditions') { state.line.must_equal 3 }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
describe
|
28
|
-
before { enter
|
27
|
+
describe 'unsucessfully' do
|
28
|
+
before { enter 'break 4' }
|
29
29
|
|
30
|
-
it
|
31
|
-
enter ->{"cond #{Byebug.breakpoints.first.id} b == 3"},
|
30
|
+
it 'must not stop at the breakpoint if condition is false' do
|
31
|
+
enter ->{ "cond #{Byebug.breakpoints.first.id} b == 3" }, 'cont'
|
32
32
|
debug_file('conditions') { state.line.must_equal 4 }
|
33
33
|
end
|
34
|
-
|
35
|
-
|
34
|
+
|
35
|
+
it 'must assign expression to breakpoint in spite of incorrect syntax' do
|
36
|
+
enter ->{ "cond #{Byebug.breakpoints.first.id} b =="}, 'cont'
|
36
37
|
debug_file('conditions') {
|
37
|
-
Byebug.breakpoints.first.expr.must_equal
|
38
|
+
Byebug.breakpoints.first.expr.must_equal 'b ==' }
|
38
39
|
end
|
39
|
-
|
40
|
-
|
40
|
+
|
41
|
+
it 'must ignore the condition if when incorrect syntax' do
|
42
|
+
enter ->{ "cond #{Byebug.breakpoints.first.id} b ==" }, 'cont'
|
41
43
|
debug_file('conditions') { state.line.must_equal 4 }
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
46
|
-
describe
|
47
|
-
before { enter
|
48
|
-
->{"cond #{Byebug.breakpoints.first.id}"},
|
48
|
+
describe 'removing conditions' do
|
49
|
+
before { enter 'break 3 if b == 3', 'break 4',
|
50
|
+
->{"cond #{Byebug.breakpoints.first.id}"}, 'cont' }
|
49
51
|
|
50
|
-
it
|
52
|
+
it 'must remove the condition from the breakpoint' do
|
51
53
|
debug_file('conditions') { Byebug.breakpoints.first.expr.must_be_nil }
|
52
54
|
end
|
53
55
|
|
54
|
-
it
|
56
|
+
it 'must not stop on the breakpoint' do
|
55
57
|
debug_file('conditions') { state.line.must_equal 3 }
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
59
|
-
describe
|
60
|
-
it
|
61
|
+
describe 'errors' do
|
62
|
+
it 'must show error if there are no breakpoints' do
|
61
63
|
enter 'cond 1 true'
|
62
64
|
debug_file('conditions')
|
63
|
-
check_output_includes
|
65
|
+
check_output_includes 'No breakpoints have been set.'
|
64
66
|
end
|
65
67
|
|
66
|
-
it
|
68
|
+
it 'must not set breakpoint condition if breakpoint id is incorrect' do
|
67
69
|
enter 'break 3', 'cond 8 b == 3', 'cont'
|
68
70
|
debug_file('conditions') { state.line.must_equal 3 }
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
72
|
-
describe
|
73
|
-
it
|
74
|
-
|
75
|
-
|
76
|
-
debug_file(
|
74
|
+
describe 'Post Mortem' do
|
75
|
+
it 'must be able to set conditions in post-mortem mode' do
|
76
|
+
enter 'cont', 'break 12', ->{ "cond #{Byebug.breakpoints.first.id} true" },
|
77
|
+
'cont'
|
78
|
+
debug_file('post_mortem') { state.line.must_equal 12 }
|
77
79
|
end
|
78
80
|
end
|
79
81
|
|
data/test/display_test.rb
CHANGED
@@ -5,13 +5,13 @@ describe 'Display Command' do
|
|
5
5
|
|
6
6
|
it 'must show expressions' do
|
7
7
|
enter 'break 3', 'cont', 'display d + 1'
|
8
|
-
debug_file
|
8
|
+
debug_file 'display'
|
9
9
|
check_output_includes '1: ', 'd + 1 = 5'
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'must work with shortcut' do
|
13
13
|
enter 'break 3', 'cont', 'disp d + 1'
|
14
|
-
debug_file
|
14
|
+
debug_file 'display'
|
15
15
|
check_output_includes '1: ', 'd + 1 = 5'
|
16
16
|
end
|
17
17
|
|
@@ -24,7 +24,7 @@ describe 'Display Command' do
|
|
24
24
|
enter 'break 3', 'cont', -> do
|
25
25
|
Byebug.handler.display.concat([[true, 'abc'], [true, 'd']]); 'display'
|
26
26
|
end
|
27
|
-
debug_file
|
27
|
+
debug_file 'display'
|
28
28
|
check_output_includes '1: ', 'abc = ', '2: ', 'd = 4'
|
29
29
|
end
|
30
30
|
|
@@ -41,7 +41,7 @@ describe 'Display Command' do
|
|
41
41
|
let(:confirm_response) { 'y' }
|
42
42
|
|
43
43
|
it 'must ask about confirmation' do
|
44
|
-
debug_file
|
44
|
+
debug_file 'display'
|
45
45
|
check_output_includes \
|
46
46
|
'Clear all expressions? (y/n)', interface.confirm_queue
|
47
47
|
end
|
@@ -52,7 +52,7 @@ describe 'Display Command' do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'must not show any output' do
|
55
|
-
debug_file
|
55
|
+
debug_file 'display'
|
56
56
|
check_output_doesnt_include '1: ', 'abc = ', '2: ', 'd = 4'
|
57
57
|
end
|
58
58
|
end
|
@@ -66,7 +66,7 @@ describe 'Display Command' do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'must not show any output' do
|
69
|
-
debug_file
|
69
|
+
debug_file 'display'
|
70
70
|
check_output_includes '1: ', 'abc = ', '2: ', 'd = 4'
|
71
71
|
end
|
72
72
|
end
|
@@ -86,12 +86,12 @@ describe 'Display Command' do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'must display only the active position' do
|
89
|
-
debug_file
|
89
|
+
debug_file 'display'
|
90
90
|
check_output_includes '2: ', 'd = 4'
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'must not display the disabled position' do
|
94
|
-
debug_file
|
94
|
+
debug_file 'display'
|
95
95
|
check_output_doesnt_include '1: ', 'abc'
|
96
96
|
end
|
97
97
|
end
|
@@ -105,14 +105,14 @@ describe 'Display Command' do
|
|
105
105
|
|
106
106
|
it 'must show an error if no displays are set' do
|
107
107
|
enter 'disable display 1'
|
108
|
-
debug_file
|
108
|
+
debug_file 'display'
|
109
109
|
check_output_includes \
|
110
110
|
'No display expressions have been set.', interface.error_queue
|
111
111
|
end
|
112
112
|
|
113
113
|
it 'must show an error if there is no such display position' do
|
114
114
|
enter 'display d', 'disable display 4'
|
115
|
-
debug_file
|
115
|
+
debug_file 'display'
|
116
116
|
check_output_includes \
|
117
117
|
'Disable display argument "4" needs to be at most 1.'
|
118
118
|
end
|
@@ -136,10 +136,11 @@ describe 'Display Command' do
|
|
136
136
|
end
|
137
137
|
|
138
138
|
describe 'Post Mortem' do
|
139
|
+
before { Byebug::Command.settings[:autoeval] = false }
|
140
|
+
|
139
141
|
it 'must be able to set display expressions in post-mortem mode' do
|
140
|
-
|
141
|
-
|
142
|
-
debug_file('post_mortem')
|
142
|
+
enter 'cont', 'display 2 + 2'
|
143
|
+
debug_file 'post_mortem'
|
143
144
|
check_output_includes '1:', '2 + 2 = 4'
|
144
145
|
end
|
145
146
|
end
|
data/test/edit_test.rb
CHANGED
@@ -1,55 +1,58 @@
|
|
1
1
|
require_relative 'test_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe 'Edit Command' do
|
4
4
|
include TestDsl
|
5
5
|
|
6
|
-
it
|
7
|
-
temporary_change_hash_value(ENV,
|
8
|
-
Byebug::Edit.any_instance.expects(:system).
|
6
|
+
it 'must open an editor with current file and line' do
|
7
|
+
temporary_change_hash_value(ENV, 'EDITOR', 'editr') do
|
8
|
+
Byebug::Edit.any_instance.expects(:system).
|
9
|
+
with("editr +2 #{fullpath('edit')}")
|
9
10
|
enter 'edit'
|
10
11
|
debug_file 'edit'
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
it
|
15
|
-
temporary_change_hash_value(ENV,
|
16
|
-
Byebug::Edit.any_instance.expects(:system).
|
15
|
+
it 'must open a default editor with current file and line' do
|
16
|
+
temporary_change_hash_value(ENV, 'EDITOR', nil) do
|
17
|
+
Byebug::Edit.any_instance.expects(:system).
|
18
|
+
with("ex +2 #{fullpath('edit')}")
|
17
19
|
enter 'edit'
|
18
20
|
debug_file 'edit'
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
22
|
-
it
|
23
|
-
temporary_change_hash_value(ENV,
|
24
|
-
Byebug::Edit.any_instance.expects(:system).
|
24
|
+
it 'must open an editor with specified file and line' do
|
25
|
+
temporary_change_hash_value(ENV, 'EDITOR', 'editr') do
|
26
|
+
Byebug::Edit.any_instance.expects(:system).
|
27
|
+
with("editr +3 #{fullpath('edit2')}")
|
25
28
|
enter "edit #{fullpath('edit2')}:3"
|
26
29
|
debug_file 'edit'
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
30
|
-
it
|
33
|
+
it 'must show an error if there is no such line' do
|
31
34
|
enter "edit #{fullpath('edit3')}:6"
|
32
35
|
debug_file 'edit'
|
33
|
-
check_output_includes
|
36
|
+
check_output_includes \
|
37
|
+
"File \"#{fullpath('edit3')}\" is not readable.", interface.error_queue
|
34
38
|
end
|
35
39
|
|
36
|
-
it
|
37
|
-
enter
|
40
|
+
it 'must show an error if there is incorrect syntax' do
|
41
|
+
enter 'edit blabla'
|
38
42
|
debug_file 'edit'
|
39
|
-
check_output_includes
|
43
|
+
check_output_includes \
|
44
|
+
'Invalid file/line number specification: blabla', interface.error_queue
|
40
45
|
end
|
41
46
|
|
42
47
|
|
43
|
-
describe
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
# debug_file "post_mortem"
|
52
|
-
#end
|
48
|
+
describe 'Post Mortem' do
|
49
|
+
it 'must work in post-mortem mode' do
|
50
|
+
temporary_change_hash_value(ENV, 'EDITOR', 'editr') do
|
51
|
+
Byebug::Edit.any_instance.expects(:system).
|
52
|
+
with("editr +2 #{fullpath('edit')}")
|
53
|
+
enter 'cont', "edit #{fullpath('edit')}:2", 'cont'
|
54
|
+
debug_file 'post_mortem'
|
55
|
+
end
|
53
56
|
end
|
54
57
|
end
|
55
58
|
|
data/test/eval_test.rb
CHANGED
@@ -53,7 +53,6 @@ describe 'Eval Command' do
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
|
57
56
|
it 'must pretty print the expression result' do
|
58
57
|
enter 'pp {a: \'3\' * 40, b: \'4\' * 30}'
|
59
58
|
debug_file 'eval'
|
@@ -86,7 +85,6 @@ describe 'Eval Command' do
|
|
86
85
|
|
87
86
|
describe 'Post Mortem' do
|
88
87
|
it 'must work in post-mortem mode' do
|
89
|
-
skip('No post morten mode for now')
|
90
88
|
enter 'cont', 'eval 2 + 2'
|
91
89
|
debug_file 'post_mortem'
|
92
90
|
check_output_includes '4'
|
data/test/finish_test.rb
CHANGED
@@ -37,12 +37,13 @@ describe 'Finish Command' do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
describe 'Post Mortem' do
|
40
|
+
before { Byebug::Command.settings[:autoeval] = false }
|
41
|
+
|
40
42
|
it 'must not work in post-mortem mode' do
|
41
|
-
skip('No post morten mode for now')
|
42
43
|
enter 'cont', 'finish'
|
43
44
|
debug_file 'post_mortem'
|
44
|
-
check_output_includes
|
45
|
-
|
45
|
+
check_output_includes \
|
46
|
+
'Unknown command: "finish". Try "help".', interface.error_queue
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
data/test/frame_test.rb
CHANGED
@@ -3,6 +3,11 @@ require_relative 'test_helper'
|
|
3
3
|
describe 'Frame Command' do
|
4
4
|
include TestDsl
|
5
5
|
|
6
|
+
def after_setup
|
7
|
+
Byebug::Command.settings[:width] =
|
8
|
+
"--> #0 A.d(e#String) at #{fullpath('frame')}:16".size
|
9
|
+
end
|
10
|
+
|
6
11
|
it 'must go up' do
|
7
12
|
enter 'break 16', 'cont', 'up'
|
8
13
|
debug_file('frame') { state.line.must_equal 12 }
|
@@ -35,7 +40,7 @@ describe 'Frame Command' do
|
|
35
40
|
|
36
41
|
it 'must print current stack frame when without arguments' do
|
37
42
|
enter 'break A.d', 'cont', 'up', 'frame'
|
38
|
-
debug_file('frame') { check_output_includes
|
43
|
+
debug_file('frame') { check_output_includes "#0 A.d(e#String) at #{fullpath('frame')}:15" }
|
39
44
|
end
|
40
45
|
|
41
46
|
it 'must set frame to the first one' do
|
@@ -78,17 +83,16 @@ describe 'Frame Command' do
|
|
78
83
|
it 'must display current backtrace with full path = true' do
|
79
84
|
enter 'set fullpath', 'break 16', 'cont', 'where'
|
80
85
|
debug_file 'frame'
|
81
|
-
check_output_includes
|
82
|
-
|
83
|
-
'#1', 'A.c' , "at #{fullpath('frame')}:12"
|
86
|
+
check_output_includes "--> #0 A.d(e#String) at #{fullpath('frame')}:16",
|
87
|
+
" #1 A.c at #{fullpath('frame')}:12"
|
84
88
|
end
|
85
89
|
|
86
90
|
it 'must display current backtrace with full path = false' do
|
87
91
|
enter 'set nofullpath', 'break 16', 'cont', 'where'
|
88
92
|
debug_file 'frame'
|
89
93
|
check_output_includes \
|
90
|
-
|
91
|
-
|
94
|
+
"--> #0 A.d(e#String) at #{short_path(fullpath('frame'))}:16",
|
95
|
+
" #1 A.c at #{short_path(fullpath('frame'))}:12"
|
92
96
|
end
|
93
97
|
end
|
94
98
|
|
@@ -96,21 +100,19 @@ describe 'Frame Command' do
|
|
96
100
|
it 'displays current backtrace with callstyle "last"' do
|
97
101
|
enter 'set callstyle last', 'break 16', 'cont', 'where'
|
98
102
|
debug_file 'frame'
|
99
|
-
check_output_includes
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
'#3', 'A.a' , "at #{fullpath('frame')}:5"
|
103
|
+
check_output_includes "--> #0 A.d(e#String) at #{fullpath('frame')}:16",
|
104
|
+
" #1 A.c at #{fullpath('frame')}:12" ,
|
105
|
+
" #2 A.b at #{fullpath('frame')}:8" ,
|
106
|
+
" #3 A.a at #{fullpath('frame')}:5"
|
104
107
|
end
|
105
108
|
|
106
109
|
it 'displays current backtrace with callstyle "short"' do
|
107
110
|
enter 'set callstyle short', 'break 16', 'cont', 'where'
|
108
111
|
debug_file 'frame'
|
109
|
-
check_output_includes
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
'#3', 'a' , "at #{fullpath('frame')}:5"
|
112
|
+
check_output_includes "--> #0 d(e) at #{fullpath('frame')}:16",
|
113
|
+
" #1 c at #{fullpath('frame')}:12" ,
|
114
|
+
" #2 b at #{fullpath('frame')}:8" ,
|
115
|
+
" #3 a at #{fullpath('frame')}:5"
|
114
116
|
end
|
115
117
|
|
116
118
|
it 'displays current backtrace with callstyle "tracked"' do
|
@@ -132,13 +134,10 @@ describe 'Frame Command' do
|
|
132
134
|
end
|
133
135
|
|
134
136
|
describe 'Post Mortem' do
|
135
|
-
# TODO: This test fails with 'Segmentation fault'. Probably need to fix it
|
136
|
-
# somehow, or forbid this command in the post mortem mode. Seems like
|
137
|
-
# state.context.frame_file and state.context.frame_line cause that.
|
138
137
|
it 'must work in post-mortem mode' do
|
139
|
-
skip
|
138
|
+
#skip 'TODO: This test fails with \'Segmentation fault\'.'
|
140
139
|
enter 'cont', 'frame'
|
141
|
-
debug_file
|
140
|
+
debug_file('post_mortem') { state.line.must_equal 8 }
|
142
141
|
end
|
143
142
|
end
|
144
143
|
|
data/test/help_test.rb
CHANGED
@@ -1,49 +1,52 @@
|
|
1
1
|
require_relative 'test_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe 'Help Command' do
|
4
4
|
include TestDsl
|
5
5
|
include Columnize
|
6
6
|
|
7
7
|
let(:available_commands) do
|
8
|
-
Byebug::Command.commands.select(&:event).
|
8
|
+
Byebug::Command.commands.select(&:event).
|
9
|
+
map(&:help_command).flatten.uniq.sort
|
9
10
|
end
|
10
11
|
|
11
|
-
it
|
12
|
+
it 'must show help how to use "help"' do
|
12
13
|
temporary_change_hash_value(Byebug::HelpCommand.settings, :width, 50) do
|
13
14
|
enter 'help'
|
14
|
-
debug_file
|
15
|
-
check_output_includes
|
16
|
-
|
17
|
-
|
15
|
+
debug_file 'help'
|
16
|
+
check_output_includes \
|
17
|
+
'Type \'help <command-name>\' for help on a specific command',
|
18
|
+
'Available commands:',
|
18
19
|
columnize(available_commands, 50)
|
19
|
-
)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
it
|
23
|
+
it 'must show help when use shortcut' do
|
24
24
|
enter 'h'
|
25
|
-
debug_file
|
26
|
-
check_output_includes
|
25
|
+
debug_file 'help'
|
26
|
+
check_output_includes \
|
27
|
+
'Type \'help <command-name>\' for help on a specific command'
|
27
28
|
end
|
28
29
|
|
29
|
-
it
|
30
|
+
it 'must show an error if undefined command is specified' do
|
30
31
|
enter 'help foobar'
|
31
|
-
debug_file
|
32
|
-
check_output_includes
|
32
|
+
debug_file 'help'
|
33
|
+
check_output_includes \
|
34
|
+
'Undefined command: "foobar". Try "help".', interface.error_queue
|
33
35
|
end
|
34
36
|
|
35
|
-
it
|
37
|
+
it 'must show a command\'s help' do
|
36
38
|
enter 'help break'
|
37
|
-
debug_file
|
38
|
-
check_output_includes
|
39
|
+
debug_file 'help'
|
40
|
+
check_output_includes \
|
41
|
+
Byebug::AddBreakpoint.help(nil).split('\n').
|
42
|
+
map { |l| l.gsub(/^ +/, '') }.join('\n')
|
39
43
|
end
|
40
44
|
|
41
|
-
describe
|
42
|
-
it
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
#check_output_includes "Available commands:"
|
45
|
+
describe 'Post Mortem' do
|
46
|
+
it 'must work in post-mortem mode' do
|
47
|
+
enter 'cont', 'help'
|
48
|
+
debug_file 'post_mortem'
|
49
|
+
check_output_includes 'Available commands:'
|
47
50
|
end
|
48
51
|
end
|
49
52
|
|