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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +13 -11
  4. data/Rakefile +0 -6
  5. data/bin/byebug +83 -136
  6. data/ext/byebug/byebug.c +182 -96
  7. data/ext/byebug/byebug.h +5 -7
  8. data/ext/byebug/context.c +52 -40
  9. data/lib/byebug.rb +81 -81
  10. data/lib/byebug/command.rb +18 -35
  11. data/lib/byebug/commands/control.rb +1 -1
  12. data/lib/byebug/commands/display.rb +0 -2
  13. data/lib/byebug/commands/enable.rb +4 -16
  14. data/lib/byebug/commands/eval.rb +5 -3
  15. data/lib/byebug/commands/frame.rb +68 -69
  16. data/lib/byebug/commands/help.rb +2 -1
  17. data/lib/byebug/commands/info.rb +43 -42
  18. data/lib/byebug/commands/method.rb +4 -3
  19. data/lib/byebug/commands/set.rb +10 -19
  20. data/lib/byebug/commands/show.rb +6 -13
  21. data/lib/byebug/interface.rb +1 -1
  22. data/lib/byebug/processor.rb +14 -17
  23. data/lib/byebug/version.rb +1 -2
  24. data/old_doc/byebug.texi +576 -847
  25. data/test/breakpoints_test.rb +0 -1
  26. data/test/conditions_test.rb +35 -33
  27. data/test/display_test.rb +14 -13
  28. data/test/edit_test.rb +28 -25
  29. data/test/eval_test.rb +0 -2
  30. data/test/finish_test.rb +4 -3
  31. data/test/frame_test.rb +20 -21
  32. data/test/help_test.rb +26 -23
  33. data/test/info_test.rb +105 -108
  34. data/test/irb_test.rb +26 -25
  35. data/test/kill_test.rb +19 -19
  36. data/test/list_test.rb +140 -156
  37. data/test/method_test.rb +21 -22
  38. data/test/post_mortem_test.rb +2 -5
  39. data/test/quit_test.rb +16 -17
  40. data/test/reload_test.rb +2 -2
  41. data/test/restart_test.rb +0 -1
  42. data/test/save_test.rb +31 -32
  43. data/test/set_test.rb +50 -47
  44. data/test/show_test.rb +67 -66
  45. data/test/source_test.rb +31 -34
  46. data/test/stepping_test.rb +32 -34
  47. data/test/support/test_dsl.rb +1 -1
  48. data/test/trace_test.rb +1 -2
  49. data/test/variables_test.rb +36 -34
  50. metadata +2 -4
  51. data/lib/byebug/commands/tmate.rb +0 -36
  52. data/test/tmate_test.rb +0 -44
@@ -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
@@ -1,79 +1,81 @@
1
1
  require_relative 'test_helper'
2
2
 
3
- describe "Conditions" do
3
+ describe 'Conditions' do
4
4
  include TestDsl
5
5
 
6
- describe "setting condition" do
6
+ describe 'setting condition' do
7
7
  before { enter 'break 3' }
8
8
 
9
- describe "successfully" do
10
- it "must assign the expression to breakpoint" do
11
- enter ->{"cond #{Byebug.breakpoints.first.id} b == 5"}, "cont"
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 "b == 5" }
13
+ Byebug.breakpoints.first.expr.must_equal 'b == 5' }
14
14
  end
15
15
 
16
- it "must stop at the breakpoint if condition is true" do
17
- enter ->{"cond #{Byebug.breakpoints.first.id} b == 5"}, "cont"
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 "must work with full command name too" do
22
- enter ->{"condition #{Byebug.breakpoints.first.id} b == 5"}, "cont"
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 "unsucessfully" do
28
- before { enter "break 4" }
27
+ describe 'unsucessfully' do
28
+ before { enter 'break 4' }
29
29
 
30
- it "must not stop at the breakpoint if condition is false" do
31
- enter ->{"cond #{Byebug.breakpoints.first.id} b == 3"}, "cont"
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
- it "must assign the expression to breakpoint in spite of incorrect syntax" do
35
- enter ->{"cond #{Byebug.breakpoints.first.id} b =="}, "cont"
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 "b ==" }
38
+ Byebug.breakpoints.first.expr.must_equal 'b ==' }
38
39
  end
39
- it "must ignore the condition if when incorrect syntax" do
40
- enter ->{"cond #{Byebug.breakpoints.first.id} b =="}, "cont"
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 "removing conditions" do
47
- before { enter "break 3 if b == 3", "break 4",
48
- ->{"cond #{Byebug.breakpoints.first.id}"}, "cont" }
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 "must remove the condition from the breakpoint" do
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 "must not stop on the breakpoint" do
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 "errors" do
60
- it "must show error if there are no breakpoints" do
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 "No breakpoints have been set."
65
+ check_output_includes 'No breakpoints have been set.'
64
66
  end
65
67
 
66
- it "must not set breakpoint condition if breakpoint id is incorrect" do
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 "Post Mortem" do
73
- it "must be able to set conditions in post-mortem mode" do
74
- skip("No post morten mode for now")
75
- enter 'cont', 'break 12', ->{"cond #{breakpoint.id} true"}, 'cont'
76
- debug_file("post_mortem") { state.line.must_equal 12 }
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
 
@@ -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('display')
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('display')
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('display')
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('display')
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('display')
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('display')
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('display')
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('display')
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('display')
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('display')
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
- skip('No post morten mode for now')
141
- enter 'cont', 'display 2 + 2', 'cont'
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
@@ -1,55 +1,58 @@
1
1
  require_relative 'test_helper'
2
2
 
3
- describe "Edit Command" do
3
+ describe 'Edit Command' do
4
4
  include TestDsl
5
5
 
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).with("editr +2 #{fullpath('edit')}")
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 "must open a default editor with current file and line" do
15
- temporary_change_hash_value(ENV, "EDITOR", nil) do
16
- Byebug::Edit.any_instance.expects(:system).with("ex +2 #{fullpath('edit')}")
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 "must open an editor with specified file and line" do
23
- temporary_change_hash_value(ENV, "EDITOR", 'editr') do
24
- Byebug::Edit.any_instance.expects(:system).with("editr +3 #{fullpath('edit2')}")
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 "must show an error if there is no such line" do
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 "File \"#{fullpath('edit3')}\" is not readable.", interface.error_queue
36
+ check_output_includes \
37
+ "File \"#{fullpath('edit3')}\" is not readable.", interface.error_queue
34
38
  end
35
39
 
36
- it "must show an error if there is incorrect syntax" do
37
- enter "edit blabla"
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 "Invalid file/line number specification: blabla", interface.error_queue
43
+ check_output_includes \
44
+ 'Invalid file/line number specification: blabla', interface.error_queue
40
45
  end
41
46
 
42
47
 
43
- describe "Post Mortem" do
44
- # TODO: This test fails with "Segmentation fault". Probably need to fix it somehow, or forbid this
45
- # command in the post mortem mode
46
- it "must work in post-mortem mode" do
47
- skip("No post morten mode for now")
48
- #temporary_change_hash_value(ENV, "EDITOR", 'editr') do
49
- # Byebug::Edit.any_instance.expects(:system).with("editr +2 #{fullpath('edit')}")
50
- # enter 'cont', "edit #{fullpath('edit')}:2", 'cont'
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
 
@@ -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'
@@ -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 'Unknown command: "finish". Try "help".',
45
- interface.error_queue
45
+ check_output_includes \
46
+ 'Unknown command: "finish". Try "help".', interface.error_queue
46
47
  end
47
48
  end
48
49
 
@@ -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 '#0', 'A.d(e#String)' }
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
- '-->', '#0', 'A.d(e#String)', "at #{fullpath('frame')}:16",
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
- '-->', '#0', 'A.d(e#String)', "at #{short_path(fullpath('frame'))}:16",
91
- '#1', 'A.c' , "at #{short_path(fullpath('frame'))}:12"
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
- '-->', '#0', 'A.d(e#String)', "at #{fullpath('frame')}:16",
101
- '#1', 'A.c' , "at #{fullpath('frame')}:12",
102
- '#2', 'A.b' , "at #{fullpath('frame')}:8" ,
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
- '-->', '#0', 'd(e)', "at #{fullpath('frame')}:16",
111
- '#1', 'c' , "at #{fullpath('frame')}:12",
112
- '#2', 'b' , "at #{fullpath('frame')}:8" ,
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('No post morten mode for now')
138
+ #skip 'TODO: This test fails with \'Segmentation fault\'.'
140
139
  enter 'cont', 'frame'
141
- debug_file 'post_mortem'
140
+ debug_file('post_mortem') { state.line.must_equal 8 }
142
141
  end
143
142
  end
144
143
 
@@ -1,49 +1,52 @@
1
1
  require_relative 'test_helper'
2
2
 
3
- describe "Help Command" do
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).map(&:help_command).flatten.uniq.sort
8
+ Byebug::Command.commands.select(&:event).
9
+ map(&:help_command).flatten.uniq.sort
9
10
  end
10
11
 
11
- it "must show help how to use 'help'" do
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('help')
15
- check_output_includes(
16
- "Type 'help <command-name>' for help on a specific command",
17
- "Available commands:",
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 "must show help when use shortcut" do
23
+ it 'must show help when use shortcut' do
24
24
  enter 'h'
25
- debug_file('help')
26
- check_output_includes "Type 'help <command-name>' for help on a specific command"
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 "must show an error if undefined command is specified" do
30
+ it 'must show an error if undefined command is specified' do
30
31
  enter 'help foobar'
31
- debug_file('help')
32
- check_output_includes 'Undefined command: "foobar". Try "help".', interface.error_queue
32
+ debug_file 'help'
33
+ check_output_includes \
34
+ 'Undefined command: "foobar". Try "help".', interface.error_queue
33
35
  end
34
36
 
35
- it "must show a command's help" do
37
+ it 'must show a command\'s help' do
36
38
  enter 'help break'
37
- debug_file('help')
38
- check_output_includes Byebug::AddBreakpoint.help(nil).split("\n").map { |l| l.gsub(/^ +/, '') }.join("\n")
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 "Post Mortem" do
42
- it "must work in post-mortem mode" do
43
- skip("No post morten mode for now")
44
- #enter 'cont', 'help'
45
- #debug_file "post_mortem"
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