byebug 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/CHANGELOG.md +125 -99
  4. data/CONTRIBUTING.md +4 -6
  5. data/GUIDE.md +42 -20
  6. data/Gemfile +5 -3
  7. data/README.md +2 -3
  8. data/Rakefile +11 -7
  9. data/bin/byebug +2 -252
  10. data/byebug.gemspec +7 -4
  11. data/ext/byebug/byebug.c +17 -18
  12. data/ext/byebug/byebug.h +4 -5
  13. data/ext/byebug/context.c +37 -39
  14. data/ext/byebug/threads.c +39 -18
  15. data/lib/byebug.rb +2 -110
  16. data/lib/byebug/attacher.rb +23 -0
  17. data/lib/byebug/breakpoint.rb +60 -0
  18. data/lib/byebug/command.rb +62 -70
  19. data/lib/byebug/commands/break.rb +24 -24
  20. data/lib/byebug/commands/catchpoint.rb +18 -10
  21. data/lib/byebug/commands/condition.rb +18 -17
  22. data/lib/byebug/commands/continue.rb +17 -9
  23. data/lib/byebug/commands/delete.rb +19 -13
  24. data/lib/byebug/commands/display.rb +19 -53
  25. data/lib/byebug/commands/edit.rb +7 -4
  26. data/lib/byebug/commands/enable_disable.rb +130 -0
  27. data/lib/byebug/commands/eval.rb +40 -22
  28. data/lib/byebug/commands/finish.rb +13 -4
  29. data/lib/byebug/commands/frame.rb +65 -45
  30. data/lib/byebug/commands/help.rb +17 -18
  31. data/lib/byebug/commands/history.rb +14 -8
  32. data/lib/byebug/commands/info.rb +160 -182
  33. data/lib/byebug/commands/interrupt.rb +4 -1
  34. data/lib/byebug/commands/irb.rb +30 -0
  35. data/lib/byebug/commands/kill.rb +7 -8
  36. data/lib/byebug/commands/list.rb +71 -66
  37. data/lib/byebug/commands/method.rb +14 -6
  38. data/lib/byebug/commands/pry.rb +35 -0
  39. data/lib/byebug/commands/quit.rb +9 -6
  40. data/lib/byebug/commands/reload.rb +5 -2
  41. data/lib/byebug/commands/restart.rb +13 -9
  42. data/lib/byebug/commands/save.rb +17 -17
  43. data/lib/byebug/commands/set.rb +16 -15
  44. data/lib/byebug/commands/show.rb +10 -11
  45. data/lib/byebug/commands/source.rb +11 -5
  46. data/lib/byebug/commands/stepping.rb +38 -24
  47. data/lib/byebug/commands/threads.rb +45 -31
  48. data/lib/byebug/commands/trace.rb +22 -9
  49. data/lib/byebug/commands/undisplay.rb +45 -0
  50. data/lib/byebug/commands/variables.rb +83 -27
  51. data/lib/byebug/context.rb +25 -22
  52. data/lib/byebug/core.rb +82 -0
  53. data/lib/byebug/helper.rb +37 -28
  54. data/lib/byebug/history.rb +8 -4
  55. data/lib/byebug/interface.rb +12 -17
  56. data/lib/byebug/interfaces/local_interface.rb +11 -8
  57. data/lib/byebug/interfaces/remote_interface.rb +11 -8
  58. data/lib/byebug/interfaces/script_interface.rb +9 -6
  59. data/lib/byebug/options.rb +46 -0
  60. data/lib/byebug/processor.rb +7 -1
  61. data/lib/byebug/processors/command_processor.rb +135 -125
  62. data/lib/byebug/processors/control_command_processor.rb +23 -23
  63. data/lib/byebug/remote.rb +17 -26
  64. data/lib/byebug/runner.rb +100 -0
  65. data/lib/byebug/setting.rb +33 -8
  66. data/lib/byebug/settings/autoeval.rb +5 -15
  67. data/lib/byebug/settings/autoirb.rb +4 -1
  68. data/lib/byebug/settings/autolist.rb +5 -2
  69. data/lib/byebug/settings/autoreload.rb +5 -2
  70. data/lib/byebug/settings/autosave.rb +6 -2
  71. data/lib/byebug/settings/basename.rb +7 -2
  72. data/lib/byebug/settings/callstyle.rb +4 -1
  73. data/lib/byebug/settings/forcestep.rb +6 -3
  74. data/lib/byebug/settings/fullpath.rb +5 -2
  75. data/lib/byebug/settings/histfile.rb +5 -3
  76. data/lib/byebug/settings/histsize.rb +5 -3
  77. data/lib/byebug/settings/linetrace.rb +4 -1
  78. data/lib/byebug/settings/listsize.rb +5 -1
  79. data/lib/byebug/settings/post_mortem.rb +21 -13
  80. data/lib/byebug/settings/stack_on_error.rb +6 -2
  81. data/lib/byebug/settings/testing.rb +6 -1
  82. data/lib/byebug/settings/tracing_plus.rb +5 -1
  83. data/lib/byebug/settings/verbose.rb +13 -2
  84. data/lib/byebug/settings/width.rb +4 -1
  85. data/lib/byebug/version.rb +1 -1
  86. data/test/{break_test.rb → commands/break_test.rb} +41 -53
  87. data/test/{condition_test.rb → commands/condition_test.rb} +14 -14
  88. data/test/{continue_test.rb → commands/continue_test.rb} +0 -0
  89. data/test/{delete_test.rb → commands/delete_test.rb} +2 -2
  90. data/test/commands/display_test.rb +37 -0
  91. data/test/{edit_test.rb → commands/edit_test.rb} +0 -0
  92. data/test/{eval_test.rb → commands/eval_test.rb} +1 -0
  93. data/test/{finish_test.rb → commands/finish_test.rb} +11 -1
  94. data/test/{frame_test.rb → commands/frame_test.rb} +12 -16
  95. data/test/{help_test.rb → commands/help_test.rb} +21 -4
  96. data/test/{history_test.rb → commands/history_test.rb} +0 -0
  97. data/test/{info_test.rb → commands/info_test.rb} +5 -55
  98. data/test/{interrupt_test.rb → commands/interrupt_test.rb} +0 -0
  99. data/test/commands/irb_test.rb +28 -0
  100. data/test/{kill_test.rb → commands/kill_test.rb} +1 -1
  101. data/test/{list_test.rb → commands/list_test.rb} +1 -1
  102. data/test/{method_test.rb → commands/method_test.rb} +0 -0
  103. data/test/{post_mortem_test.rb → commands/post_mortem_test.rb} +6 -10
  104. data/test/{pry_test.rb → commands/pry_test.rb} +4 -13
  105. data/test/{quit_test.rb → commands/quit_test.rb} +4 -4
  106. data/test/{reload_test.rb → commands/reload_test.rb} +0 -0
  107. data/test/{restart_test.rb → commands/restart_test.rb} +6 -0
  108. data/test/{save_test.rb → commands/save_test.rb} +2 -2
  109. data/test/{set_test.rb → commands/set_test.rb} +9 -2
  110. data/test/{show_test.rb → commands/show_test.rb} +1 -1
  111. data/test/{source_test.rb → commands/source_test.rb} +3 -3
  112. data/test/{stepping_test.rb → commands/stepping_test.rb} +44 -35
  113. data/test/{thread_test.rb → commands/thread_test.rb} +0 -0
  114. data/test/{trace_test.rb → commands/trace_test.rb} +0 -0
  115. data/test/{display_test.rb → commands/undisplay_test.rb} +7 -45
  116. data/test/{variables_test.rb → commands/variables_test.rb} +10 -1
  117. data/test/debugger_alias_test.rb +2 -2
  118. data/test/runner_test.rb +127 -0
  119. data/test/support/matchers.rb +27 -25
  120. data/test/support/test_interface.rb +9 -5
  121. data/test/support/utils.rb +96 -101
  122. data/test/test_helper.rb +32 -20
  123. metadata +93 -68
  124. data/lib/byebug/commands/enable.rb +0 -154
  125. data/lib/byebug/commands/repl.rb +0 -126
  126. data/test/irb_test.rb +0 -47
  127. data/test/support/breakpoint.rb +0 -13
@@ -12,13 +12,13 @@ module Byebug
12
12
  end
13
13
 
14
14
  def test_deleting_a_breakpoint_removes_it_from_breakpoints_list
15
- enter 'break 7', -> { "delete #{first_brkpt.id}" }
15
+ enter 'break 7', -> { "delete #{Breakpoint.first.id}" }
16
16
 
17
17
  debug_proc(@example) { assert_empty Byebug.breakpoints }
18
18
  end
19
19
 
20
20
  def test_does_not_stop_at_the_deleted_breakpoint
21
- enter 'break 7', 'break 8', -> { "delete #{first_brkpt.id}" }, 'cont'
21
+ enter 'b 7', 'b 8', -> { "delete #{Breakpoint.first.id}" }, 'cont'
22
22
 
23
23
  debug_proc(@example) { assert_equal 8, state.line }
24
24
  end
@@ -0,0 +1,37 @@
1
+ module Byebug
2
+ class DisplayTestCase < TestCase
3
+ def setup
4
+ @example = -> do
5
+ d = 0
6
+ byebug
7
+ d = d + 3
8
+ d = d + 6
9
+ end
10
+
11
+ super
12
+ end
13
+
14
+ def test_shows_expressions
15
+ enter 'display d + 1'
16
+ debug_proc(@example)
17
+ check_output_includes '1: d + 1 = 1'
18
+ end
19
+
20
+ def test_works_when_using_a_shortcut
21
+ enter 'disp d + 1'
22
+ debug_proc(@example)
23
+ check_output_includes '1: d + 1 = 1'
24
+ end
25
+
26
+ def test_saves_displayed_expressions
27
+ enter 'display d + 1'
28
+ debug_proc(@example) { assert_equal [[true, 'd + 1']], state.display }
29
+ end
30
+
31
+ def test_displays_all_expressions_available
32
+ enter 'display d', 'display d + 1', 'display'
33
+ debug_proc(@example)
34
+ check_output_includes '1: d = 0', '2: d + 1 = 1'
35
+ end
36
+ end
37
+ end
@@ -29,6 +29,7 @@ module Byebug
29
29
  end
30
30
 
31
31
  def test_eval_properly_evaluates_an_expression_using_timeout
32
+ skip 'for now'
32
33
  enter 'eval Timeout::timeout(60) { 1 }'
33
34
  debug_proc(@example)
34
35
  check_output_includes '1'
@@ -45,6 +45,11 @@ module Byebug
45
45
  debug_proc(@example) { assert_equal 14, state.line }
46
46
  end
47
47
 
48
+ def test_finish_works_for_frame_numbers_higher_than_one
49
+ enter 'finish 2'
50
+ debug_proc(@example) { assert_equal 9, state.line }
51
+ end
52
+
48
53
  def test_finish_behaves_consistenly_even_if_current_frame_has_been_changed
49
54
  enter 'up', 'finish'
50
55
  debug_proc(@example) { assert_equal 9, state.line }
@@ -53,12 +58,17 @@ module Byebug
53
58
  def test_finish_shows_an_error_if_incorrect_frame_number_specified
54
59
  enter 'finish foo'
55
60
  debug_proc(@example)
56
- check_output_includes '"finish" argument "foo" needs to be a number'
61
+ check_error_includes '"finish" argument "foo" needs to be a number'
57
62
  end
58
63
 
59
64
  def test_finish_stays_at_the_same_line_if_incorrect_frame_number_specified
60
65
  enter 'finish foo'
61
66
  debug_proc(@example) { assert_equal 18, state.line }
62
67
  end
68
+
69
+ def test_finish_does_not_stop_in_byebug_internal_frames
70
+ enter 'finish 4'
71
+ debug_proc(@example) { refute_match(/byebug.test.support/, state.file) }
72
+ end
63
73
  end
64
74
  end
@@ -72,23 +72,19 @@ module Byebug
72
72
 
73
73
  def test_frame_minus_one_sets_frame_to_the_last_one
74
74
  enter 'break 22', 'cont', 'frame -1'
75
- debug_proc(@example) do
76
- assert_equal 'test_helper.rb', File.basename(state.file)
77
- end
75
+ debug_proc(@example) { assert_match 'frame_test.rb', state.file }
78
76
  end
79
77
 
80
78
  def test_down_does_not_move_if_frame_number_to_too_low
81
79
  enter 'break 22', 'cont', 'down'
82
80
  debug_proc(@example) { assert_equal 22, state.line }
83
- check_output_includes \
84
- "Can't navigate beyond the newest frame", interface.error_queue
81
+ check_error_includes "Can't navigate beyond the newest frame"
85
82
  end
86
83
 
87
84
  def test_up_does_not_move_if_frame_number_to_too_high
88
85
  enter 'break 22', 'cont', 'up 100'
89
86
  debug_proc(@example) { assert_equal 22, state.line }
90
- check_output_includes \
91
- "Can't navigate beyond the oldest frame", interface.error_queue
87
+ check_error_includes "Can't navigate beyond the oldest frame"
92
88
  end
93
89
 
94
90
  def test_where_displays_current_backtrace_with_fullpaths
@@ -157,7 +153,7 @@ module Byebug
157
153
  def test_frame_cannot_navigate_to_c_frames
158
154
  enter 'break 4', 'cont', 'frame 1'
159
155
  debug_proc(@example)
160
- check_output_includes "Can't navigate to c-frame", interface.error_queue
156
+ check_error_includes "Can't navigate to c-frame"
161
157
  end
162
158
  end
163
159
 
@@ -190,32 +186,32 @@ module Byebug
190
186
  end
191
187
 
192
188
  super
193
- enter 'break 182', 'cont'
189
+ enter 'break 178', 'cont'
194
190
  end
195
191
 
196
192
  def test_where_correctly_prints_the_backtrace
197
193
  enter 'where'
198
194
  debug_proc(@deep_example)
199
195
  check_output_includes(
200
- /--> #0 Byebug::DeepFrameExample\.d\(e#String\)\s+at #{__FILE__}:182/,
201
- /#1 Byebug::DeepFrameExample\.c\s+at #{__FILE__}:178/,
202
- /#2 Byebug::DeepFrameExample\.b\s+at #{__FILE__}:172/,
203
- /#3 Byebug::DeepFrameExample\.a\s+at #{__FILE__}:167/)
196
+ /--> #0 Byebug::DeepFrameExample\.d\(e#String\)\s+at #{__FILE__}:178/,
197
+ /#1 Byebug::DeepFrameExample\.c\s+at #{__FILE__}:174/,
198
+ /#2 Byebug::DeepFrameExample\.b\s+at #{__FILE__}:168/,
199
+ /#3 Byebug::DeepFrameExample\.a\s+at #{__FILE__}:163/)
204
200
  end
205
201
 
206
202
  def test_up_moves_up_in_the_callstack
207
203
  enter 'up'
208
- debug_proc(@deep_example) { assert_equal 178, state.line }
204
+ debug_proc(@deep_example) { assert_equal 174, state.line }
209
205
  end
210
206
 
211
207
  def test_down_moves_down_in_the_callstack
212
208
  enter 'up', 'down'
213
- debug_proc(@deep_example) { assert_equal 182, state.line }
209
+ debug_proc(@deep_example) { assert_equal 178, state.line }
214
210
  end
215
211
 
216
212
  def test_frame_moves_to_a_specific_frame
217
213
  enter 'frame 2'
218
- debug_proc(@deep_example) { assert_equal 172, state.line }
214
+ debug_proc(@deep_example) { assert_equal 168, state.line }
219
215
  end
220
216
 
221
217
  def test_eval_works_properly_when_moving_through_the_stack
@@ -11,8 +11,7 @@ module Byebug
11
11
  end
12
12
 
13
13
  def available_cmds
14
- @available_cmds ||=
15
- Command.commands.map(&:names).flatten.uniq.sort
14
+ @available_cmds ||= Command.commands.map(&:names).flatten.uniq.sort
16
15
  end
17
16
 
18
17
  %w(help h).each do |cmd_alias|
@@ -37,13 +36,31 @@ module Byebug
37
36
  def test_help_with_undefined_command_shows_an_error
38
37
  enter 'help foobar'
39
38
  debug_proc(@example)
40
- check_error_includes 'Undefined command: "foobar". Try "help".'
39
+ check_error_includes 'Undefined command: "foobar". Try "help"'
41
40
  end
42
41
 
43
42
  def test_help_with_command_and_subcommand_shows_subcommands_help
44
43
  enter 'help info breakpoints'
45
44
  debug_proc(@example)
46
- check_output_includes "Status of user-settable breakpoints.\n"
45
+ check_output_includes(/Status of user-settable breakpoints/)
46
+ end
47
+
48
+ def test_help_set_shows_help_for_set_command
49
+ enter 'help set'
50
+ debug_proc(@example)
51
+ check_output_includes(/Modifies parts of byebug environment/)
52
+ end
53
+
54
+ def test_help_set_plus_a_setting_shows_help_for_that_setting
55
+ enter 'help set width'
56
+ debug_proc(@example)
57
+ check_output_includes(/Number of characters per line in byebug's output/)
58
+ end
59
+
60
+ def test_help_show_shows_help_for_show_command
61
+ enter 'help show'
62
+ debug_proc(@example)
63
+ check_output_includes(/Generic command for showing byebug settings/)
47
64
  end
48
65
  end
49
66
  end
@@ -58,8 +58,7 @@ module Byebug
58
58
  end
59
59
 
60
60
  def test_info_about_specific_breakpoints
61
- enter 'break 38', 'break 39',
62
- -> { "info breakpoints #{first_brkpt.id}" }
61
+ enter 'b 38', 'b 39', -> { "info breakpoints #{Breakpoint.first.id}" }
63
62
  debug_proc(@example)
64
63
  check_output_includes 'Num Enb What', /\d+ +y at #{__FILE__}:38/
65
64
  check_output_doesnt_include(/\d+ +y at #{__FILE__}:39/)
@@ -74,7 +73,7 @@ module Byebug
74
73
  def test_info_breakpoints_shows_error_if_specific_breakpoint_do_not_exist
75
74
  enter 'break 38', 'info breakpoints 100'
76
75
  debug_proc(@example)
77
- check_error_includes 'No breakpoints found among list given.'
76
+ check_error_includes 'No breakpoints found among list given'
78
77
  end
79
78
 
80
79
  def test_info_breakpoints_shows_hit_counts
@@ -87,7 +86,7 @@ module Byebug
87
86
  def test_info_display_shows_all_display_expressions
88
87
  enter 'display 3 + 3', 'display a + b', 'info display'
89
88
  debug_proc(@example)
90
- check_output_includes "Auto-display expressions now in effect:\n" \
89
+ check_output_includes "Auto-display expressions now in effect:",
91
90
  'Num Enb Expression',
92
91
  '1: y 3 + 3',
93
92
  '2: y a + b'
@@ -131,7 +130,7 @@ module Byebug
131
130
  def breakpoint_line_numbers
132
131
  @breakpoint_line_numbers ||=
133
132
  columnize(LineCache.trace_line_numbers(__FILE__).to_a.sort,
134
- Setting[:width])
133
+ Byebug::Setting[:width])
135
134
  end
136
135
 
137
136
  def test_info_file_basic_shows_basic_info_about_a_specific_file
@@ -186,30 +185,12 @@ module Byebug
186
185
  check_error_includes 'Invalid parameter blabla'
187
186
  end
188
187
 
189
- def test_info_instance_variables_shows_instance_variables
190
- enter 'break 11', 'cont', 'info instance_variables'
191
- debug_proc(@example)
192
- check_output_includes '@bla = "blabla"', '@foo = "bar"'
193
- end
194
-
195
188
  def test_info_line_shows_info_about_the_current_line
196
189
  enter 'break 11', 'cont', 'info line'
197
190
  debug_proc(@example)
198
191
  check_output_includes "Line 11 of \"#{__FILE__}\""
199
192
  end
200
193
 
201
- def test_info_locals_shows_info_about_the_current_local_variables
202
- enter 'break 11', 'cont', 'set width 28', 'info locals'
203
- debug_proc(@example)
204
- check_output_includes 'w = "11111111111111111111...', 'x = 2'
205
- end
206
-
207
- def test_info_locals_fail_if_local_variable_does_not_have_to_s_or_inspect
208
- enter 'break 16', 'cont', 'info locals'
209
- debug_proc(@example)
210
- check_output_includes 'a = *Error in evaluation*'
211
- end
212
-
213
194
  def test_info_program_shows_the_initial_stop_reason
214
195
  enter 'info program'
215
196
  debug_proc(@example)
@@ -241,44 +222,13 @@ module Byebug
241
222
  enter 'break 39', 'cont',
242
223
  ->{ context.stubs(:stop_reason).returns('blabla'); 'info program' }
243
224
  debug_proc(@example)
244
- check_output_includes 'Program stopped.', 'unknown reason: blabla'
225
+ check_output_includes 'Program stopped.', 'Unknown reason: blabla'
245
226
  end
246
227
 
247
228
  def test_shows_an_error_if_the_program_is_crashed
248
229
  skip('TODO')
249
230
  end
250
231
 
251
- def test_info_global_variables_shows_global_variables
252
- enter 'info global_variables'
253
- debug_proc(@example)
254
- check_output_includes "$$ = #{Process.pid}"
255
- end
256
-
257
- def test_info_variables_shows_all_variables
258
- enter 'break 11', 'cont', 'set width 45', 'info variables'
259
- debug_proc(@example)
260
- check_output_includes(/self = #<Byebug::InfoExample:\S*.../,
261
- 'w = "1111111111111111111111111111111111111...',
262
- 'x = 2',
263
- '@bla = "blabla"',
264
- '@foo = "bar"')
265
- end
266
-
267
- def test_info_variables_fails_if_variables_has_no_to_s_or_inspect_methods
268
- enter 'break 16', 'cont', 'info variables'
269
- debug_proc(@example)
270
- check_output_includes 'a = *Error in evaluation*',
271
- /self = #<Byebug::InfoExample:\S*.../,
272
- '@bla = "blabla"',
273
- '@foo = "bar"'
274
- end
275
-
276
- def test_info_variables_correctly_print_variables_containing_percentage
277
- enter 'break 22', 'cont', 'info variables'
278
- debug_proc(@example)
279
- check_output_includes 'e = "%.2f"'
280
- end
281
-
282
232
  def test_shows_help_when_typing_just_info
283
233
  enter 'info', 'cont'
284
234
  debug_proc(@example)
@@ -0,0 +1,28 @@
1
+ module Byebug
2
+ class IrbTestCase < TestCase
3
+ def setup
4
+ @example = -> do
5
+ byebug
6
+ a = 2
7
+ a = 3
8
+ a = 4
9
+ end
10
+
11
+ super
12
+
13
+ interface.stubs(:kind_of?).with(LocalInterface).returns(true)
14
+ end
15
+
16
+ def test_irb_command_starts_an_irb_session
17
+ IrbCommand.any_instance.expects(:execute)
18
+ enter 'irb'
19
+ debug_proc(@example)
20
+ end
21
+
22
+ def test_autoirb_calls_irb_automatically_after_every_stop
23
+ IrbCommand.any_instance.expects(:execute)
24
+ enter 'set autoirb', 'break 8', 'cont'
25
+ debug_proc(@example)
26
+ end
27
+ end
28
+ end
@@ -32,7 +32,7 @@ module Byebug
32
32
  Process.expects(:kill).with('KILL', Process.pid)
33
33
  enter 'kill', 'y'
34
34
  debug_proc(@example)
35
- check_output_includes 'Really kill? (y/n)', interface.confirm_queue
35
+ check_confirm_includes 'Really kill? (y/n)'
36
36
  end
37
37
 
38
38
  def test_kill_does_not_send_an_unknown_signal
@@ -32,7 +32,7 @@ module Byebug
32
32
  def lines_between(min, max, mark_current = true)
33
33
  lines = [*File.open(__FILE__)][min-1..max-1]
34
34
  numbers = (min..max).to_a
35
- output = numbers.zip(lines).map { |l| sprintf("%2d: %s", l[0], l[1]) }
35
+ output = numbers.zip(lines).map { |l| format("%2d: %s", l[0], l[1]) }
36
36
  if mark_current
37
37
  middle = (output.size/2.0).ceil
38
38
  output[middle] = "=> #{output[middle]}"
@@ -19,19 +19,15 @@ module Byebug
19
19
  super
20
20
  end
21
21
 
22
- def teardown
23
- Byebug.post_mortem = false
24
- end
25
-
26
22
  def test_rises_before_exit_in_post_mortem_mode
27
- enter 'set post_mortem', 'cont'
23
+ enter 'set post_mortem', 'cont', 'set nopost_mortem'
28
24
  assert_raises(RuntimeError) do
29
25
  debug_proc(@example)
30
26
  end
31
27
  end
32
28
 
33
29
  def test_post_mortem_mode_sets_post_mortem_flag_to_true
34
- enter 'set post_mortem', 'cont'
30
+ enter 'set post_mortem', 'cont', 'set nopost_mortem'
35
31
  begin
36
32
  debug_proc(@example)
37
33
  rescue
@@ -40,7 +36,7 @@ module Byebug
40
36
  end
41
37
 
42
38
  def test_execution_is_stop_at_the_correct_line_after_exception
43
- enter 'set post_mortem', 'cont'
39
+ enter 'set post_mortem', 'cont', 'set nopost_mortem'
44
40
  begin
45
41
  debug_proc(@example)
46
42
  rescue
@@ -50,8 +46,8 @@ module Byebug
50
46
 
51
47
  %w(step next finish break condition display reload).each do |cmd|
52
48
  define_method "test_#{cmd}_is_forbidden_in_post_mortem_mode" do
53
- enter 'set noautoeval', cmd
54
- state.context.stubs(:dead?).returns(:true)
49
+ enter 'set noautoeval', 'set post_mortem', "#{cmd}", 'set no_postmortem'
50
+ Context.any_instance.stubs(:dead?).returns(:true)
55
51
  begin
56
52
  debug_proc(@example)
57
53
  rescue RuntimeError
@@ -64,7 +60,7 @@ module Byebug
64
60
  'var class', 'list', 'method', 'kill', 'eval', 'set', 'save', 'show',
65
61
  'trace', 'thread list'].each do |cmd|
66
62
  define_method "test_#{cmd}_is_permitted_in_post_mortem_mode" do
67
- enter "#{cmd}"
63
+ enter 'set post_mortem', "#{cmd}", 'set no_postmortem'
68
64
  class_name = cmd.gsub(/(^| )\w/) { |b| b[-1,1].upcase } + 'Command'
69
65
 
70
66
  Byebug.const_get(class_name).any_instance.stubs(:execute)
@@ -13,26 +13,17 @@ module Byebug
13
13
  a = 2
14
14
  a = 3
15
15
  a = 4
16
- a = 5
17
- a = 6
18
16
  end
19
17
 
20
18
  super
21
19
 
22
20
  interface.stubs(:kind_of?).with(LocalInterface).returns(true)
23
- PryCommand.any_instance.expects(:pry)
24
21
  end
25
22
 
26
- def test_pry_supports_next_command
27
- skip 'TODO'
28
- end
29
-
30
- def test_pry_supports_step_command
31
- skip 'TODO'
32
- end
33
-
34
- def test_pry_supports_cont_command
35
- skip 'TODO'
23
+ def test_pry_command_starts_a_pry_session
24
+ PryCommand.any_instance.expects(:execute)
25
+ enter 'pry'
26
+ debug_proc(@example)
36
27
  end
37
28
 
38
29
  def test_autopry_calls_pry_automatically_after_every_stop