byebug 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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