byebug 1.4.1 → 1.4.2

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -0
  3. data/CHANGELOG.md +10 -0
  4. data/GUIDE.md +235 -9
  5. data/bin/byebug +12 -16
  6. data/byebug.gemspec +0 -1
  7. data/ext/byebug/byebug.c +5 -6
  8. data/lib/byebug.rb +17 -8
  9. data/lib/byebug/command.rb +12 -21
  10. data/lib/byebug/commands/breakpoints.rb +5 -9
  11. data/lib/byebug/commands/catchpoint.rb +2 -4
  12. data/lib/byebug/commands/condition.rb +4 -6
  13. data/lib/byebug/commands/continue.rb +2 -4
  14. data/lib/byebug/commands/control.rb +2 -4
  15. data/lib/byebug/commands/display.rb +4 -10
  16. data/lib/byebug/commands/edit.rb +2 -4
  17. data/lib/byebug/commands/enable.rb +6 -10
  18. data/lib/byebug/commands/eval.rb +12 -13
  19. data/lib/byebug/commands/finish.rb +2 -4
  20. data/lib/byebug/commands/frame.rb +6 -15
  21. data/lib/byebug/commands/help.rb +2 -3
  22. data/lib/byebug/commands/info.rb +5 -7
  23. data/lib/byebug/commands/jump.rb +2 -4
  24. data/lib/byebug/commands/kill.rb +2 -4
  25. data/lib/byebug/commands/list.rb +2 -4
  26. data/lib/byebug/commands/method.rb +4 -10
  27. data/lib/byebug/commands/quit.rb +2 -4
  28. data/lib/byebug/commands/reload.rb +1 -3
  29. data/lib/byebug/commands/repl.rb +3 -7
  30. data/lib/byebug/commands/save.rb +2 -4
  31. data/lib/byebug/commands/set.rb +4 -8
  32. data/lib/byebug/commands/show.rb +2 -4
  33. data/lib/byebug/commands/skip.rb +2 -4
  34. data/lib/byebug/commands/source.rb +1 -3
  35. data/lib/byebug/commands/stepping.rb +2 -4
  36. data/lib/byebug/commands/trace.rb +2 -4
  37. data/lib/byebug/commands/variables.rb +6 -18
  38. data/lib/byebug/version.rb +1 -1
  39. data/old_doc/byebug.texi +1 -9
  40. data/test/breakpoints_test.rb +1 -2
  41. data/test/examples/info.rb +5 -5
  42. data/test/examples/list.rb +21 -21
  43. data/test/examples/reload.rb +5 -5
  44. data/test/examples/repl.rb +6 -0
  45. data/test/examples/save.rb +2 -2
  46. data/test/examples/set.rb +2 -2
  47. data/test/examples/source.rb +2 -2
  48. data/test/finish_test.rb +1 -1
  49. data/test/help_test.rb +31 -15
  50. data/test/list_test.rb +27 -25
  51. data/test/reload_test.rb +3 -3
  52. data/test/repl_test.rb +8 -8
  53. data/test/set_test.rb +2 -12
  54. data/test/support/test_dsl.rb +25 -39
  55. data/test/variables_test.rb +0 -2
  56. metadata +4 -18
  57. data/test/examples/irb.rb +0 -6
@@ -1,6 +1,6 @@
1
1
  byebug
2
- 2
3
- 3
4
- 4
5
- 5
6
- 6
2
+ a = 2
3
+ a = 3
4
+ a = 4
5
+ a = 5
6
+ a = 6
@@ -0,0 +1,6 @@
1
+ byebug
2
+ a = 2
3
+ a = 3
4
+ a = 4
5
+ a = 5
6
+ a = 6
@@ -1,3 +1,3 @@
1
1
  byebug
2
- 2
3
- 3
2
+ a = 2
3
+ a = 3
@@ -1,3 +1,3 @@
1
1
  byebug
2
- 2
3
- 3
2
+ a = 2
3
+ a = 3
@@ -1,3 +1,3 @@
1
1
  byebug
2
- 2
3
- 3
2
+ a = 2
3
+ a = 3
@@ -36,7 +36,7 @@ class TestFinish < TestDsl::TestCase
36
36
  end
37
37
 
38
38
  describe 'Post Mortem' do
39
- before { Byebug::Command.settings[:autoeval] = false }
39
+ temporary_change_hash Byebug::Command.settings, :autoeval, false
40
40
 
41
41
  it 'must not work in post-mortem mode' do
42
42
  enter 'cont', 'finish'
@@ -16,26 +16,42 @@ class TestHelp < TestDsl::TestCase
16
16
  'Type "help <command-name>" for help on a specific command',
17
17
  'Available commands:', columnize(available_commands, 50)
18
18
  end
19
- end
20
19
 
21
- it 'must work when shortcut used' do
22
- enter 'h'
23
- debug_file 'help'
24
- check_output_includes \
25
- 'Type "help <command-name>" for help on a specific command'
20
+ it 'must work when shortcut used' do
21
+ enter 'h'
22
+ debug_file 'help'
23
+ check_output_includes \
24
+ 'Type "help <command-name>" for help on a specific command'
25
+ end
26
26
  end
27
27
 
28
- it 'must show an error if an undefined command is specified' do
29
- enter 'help foobar'
30
- debug_file 'help'
31
- check_output_includes \
32
- 'Undefined command: "foobar". Try "help".', interface.error_queue
28
+ describe 'when typed with a command' do
29
+ it 'must show an error if an undefined command is specified' do
30
+ enter 'help foobar'
31
+ debug_file 'help'
32
+ check_output_includes \
33
+ 'Undefined command: "foobar". Try "help".', interface.error_queue
34
+ end
35
+
36
+ it "must show a command's help" do
37
+ enter 'help break'
38
+ debug_file 'help'
39
+ check_output_includes \
40
+ "b[reak] file:line [if expr]\n" \
41
+ "b[reak] class(.|#)method [if expr]\n\n" \
42
+ "Set breakpoint to some position, (optionally) if expr == true\n"
43
+ end
33
44
  end
34
45
 
35
- it 'must show a command\'s help' do
36
- enter 'help break'
37
- debug_file 'help'
38
- check_output_includes Byebug::BreakCommand.help(nil)
46
+ describe 'when typed with command and subcommand' do
47
+ it "must show subcommand's long help" do
48
+ enter 'help info breakpoints'
49
+ debug_file 'help'
50
+ check_output_includes \
51
+ "Status of user-settable breakpoints.\n" \
52
+ "Without argument, list info about all breakpoints. " \
53
+ "With an integer argument, list info on that breakpoint."
54
+ end
39
55
  end
40
56
 
41
57
  describe 'Post Mortem' do
@@ -43,16 +43,16 @@ class TestList < TestDsl::TestCase
43
43
  enter 'break 5', 'cont'
44
44
  debug_file 'list'
45
45
  check_output_includes "[1, 10] in #{fullpath('list')}", '1: byebug',
46
- '2: 2', '3: 3', '4: 4', '=> 5: 5', '6: 6', '7: 7', '8: 8', '9: 9',
47
- '10: 10'
46
+ '2: a = 2', '3: a = 3', '4: a = 4', '=> 5: a = 5', '6: a = 6',
47
+ '7: a = 7', '8: a = 8', '9: a = 9', '10: a = 10'
48
48
  end
49
49
 
50
50
  it 'must list forward after second call' do
51
51
  enter 'break 5', 'cont', 'list'
52
52
  debug_file 'list'
53
- check_output_includes "[11, 20] in #{fullpath('list')}", '11: 11',
54
- '12: 12', '13: 13', '14: 14', '15: 15', '16: 16', '17: 17', '18: 18',
55
- '19: 19', '20: 20'
53
+ check_output_includes "[11, 20] in #{fullpath('list')}", '11: a = 11',
54
+ '12: a = 12', '13: a = 13', '14: a = 14', '15: a = 15', '16: a = 16',
55
+ '17: a = 17', '18: a = 18', '19: a = 19', '20: a = 20'
56
56
  end
57
57
  end
58
58
 
@@ -62,17 +62,17 @@ class TestList < TestDsl::TestCase
62
62
  it 'must show surrounding lines with the first call' do
63
63
  enter 'break 15', 'cont', 'list -'
64
64
  debug_file 'list'
65
- check_output_includes "[10, 19] in #{fullpath('list')}", '10: 10',
66
- '11: 11', '12: 12', '13: 13', '14: 14', '=> 15: 15', '16: 16', '17: 17',
67
- '18: 18', '19: 19'
65
+ check_output_includes "[10, 19] in #{fullpath('list')}", '10: a = 10',
66
+ '11: a = 11', '12: a = 12', '13: a = 13', '14: a = 14', '=> 15: a = 15',
67
+ '16: a = 16', '17: a = 17', '18: a = 18', '19: a = 19'
68
68
  end
69
69
 
70
70
  it 'must list backward after second call' do
71
71
  enter 'break 15', 'cont', 'list -', 'list -'
72
72
  debug_file 'list'
73
73
  check_output_includes "[1, 10] in #{fullpath('list')}", '1: byebug',
74
- '2: 2', '3: 3', '4: 4', '5: 5', '6: 6', '7: 7', '8: 8', '9: 9',
75
- '10: 10'
74
+ '2: a = 2', '3: a = 3', '4: a = 4', '5: a = 5', '6: a = 6', '7: a = 7',
75
+ '8: a = 8', '9: a = 9', '10: a = 10'
76
76
  end
77
77
  end
78
78
 
@@ -83,8 +83,8 @@ class TestList < TestDsl::TestCase
83
83
  enter 'break 5', 'cont', 'list ='
84
84
  debug_file 'list'
85
85
  check_output_includes "[1, 10] in #{fullpath('list')}", '1: byebug',
86
- '2: 2', '3: 3', '4: 4', '=> 5: 5', '6: 6', '7: 7', '8: 8', '9: 9',
87
- '10: 10'
86
+ '2: a = 2', '3: a = 3', '4: a = 4', '=> 5: a = 5', '6: a = 6',
87
+ '7: a = 7', '8: a = 8', '9: a = 9', '10: a = 10'
88
88
  end
89
89
  end
90
90
 
@@ -93,14 +93,14 @@ class TestList < TestDsl::TestCase
93
93
  enter 'list 4-6'
94
94
  debug_file 'list'
95
95
  check_output_includes \
96
- "[4, 6] in #{fullpath('list')}", '4: 4', '5: 5', '6: 6'
96
+ "[4, 6] in #{fullpath('list')}", '4: a = 4', '5: a = 5', '6: a = 6'
97
97
  end
98
98
 
99
99
  it 'must show with mm,nn' do
100
100
  enter 'list 4,6'
101
101
  debug_file 'list'
102
102
  check_output_includes \
103
- "[4, 6] in #{fullpath('list')}", '4: 4', '5: 5', '6: 6'
103
+ "[4, 6] in #{fullpath('list')}", '4: a = 4', '5: a = 5', '6: a = 6'
104
104
  end
105
105
 
106
106
  it 'must show nothing if there is no such lines' do
@@ -122,38 +122,40 @@ class TestList < TestDsl::TestCase
122
122
  it 'must show surroundings with mm-' do
123
123
  enter 'list 14-'
124
124
  debug_file 'list'
125
- check_output_includes "[9, 18] in #{fullpath('list')}", '9: 9', '10: 10',
126
- '11: 11', '12: 12', '13: 13', '14: 14', '15: 15', '16: 16', '17: 17',
127
- '18: 18'
125
+ check_output_includes "[9, 18] in #{fullpath('list')}", '9: a = 9',
126
+ '10: a = 10', '11: a = 11', '12: a = 12', '13: a = 13', '14: a = 14',
127
+ '15: a = 15', '16: a = 16', '17: a = 17', '18: a = 18'
128
128
  end
129
129
 
130
130
  it 'must show surroundings with mm,' do
131
131
  enter 'list 14,'
132
132
  debug_file 'list'
133
- check_output_includes "[9, 18] in #{fullpath('list')}", '9: 9', '10: 10',
134
- '11: 11', '12: 12', '13: 13', '14: 14', '15: 15', '16: 16', '17: 17',
135
- '18: 18'
133
+ check_output_includes "[9, 18] in #{fullpath('list')}", '9: a = 9',
134
+ '10: a = 10', '11: a = 11', '12: a = 12', '13: a = 13', '14: a = 14',
135
+ '15: a = 15', '16: a = 16', '17: a = 17', '18: a = 18'
136
136
  end
137
137
  end
138
138
 
139
139
  describe 'reload source' do
140
- after { change_line_in_file(fullpath('list'), 4, '4') }
140
+ after { change_line_in_file(fullpath('list'), 4, 'a = 4') }
141
141
 
142
142
  describe 'when autoreload is false' do
143
143
  temporary_change_hash Byebug::Command.settings, :autoreload, false
144
144
 
145
145
  it 'must not reload listing with file changes' do
146
- enter -> { change_line_in_file fullpath('list'), 4, '100' ; 'list 4-4' }
146
+ enter -> { change_line_in_file fullpath('list'), 4, 'a = 100' ;
147
+ 'list 4-4' }
147
148
  debug_file 'list'
148
- check_output_includes '4: 4'
149
+ check_output_includes '4: a = 4'
149
150
  end
150
151
  end
151
152
 
152
153
  describe 'when autoreload is true' do
153
154
  it 'must reload listing with file changes' do
154
- enter -> { change_line_in_file fullpath('list'), 4, '100' ; 'list 4-4' }
155
+ enter -> { change_line_in_file fullpath('list'), 4, 'a = 100' ;
156
+ 'list 4-4' }
155
157
  debug_file 'list'
156
- check_output_includes '4: 100'
158
+ check_output_includes '4: a = 100'
157
159
  end
158
160
  end
159
161
  end
@@ -21,14 +21,14 @@ class TestReload < TestDsl::TestCase
21
21
  end
22
22
 
23
23
  describe 'reloading' do
24
- after { change_line_in_file(fullpath('reload'), 4, '4') }
24
+ after { change_line_in_file(fullpath('reload'), 4, 'a = 4') }
25
25
  it 'must reload the code' do
26
26
  enter 'break 3', 'cont', 'l 4-4', -> do
27
- change_line_in_file(fullpath('reload'), 4, '100')
27
+ change_line_in_file(fullpath('reload'), 4, 'a = 100')
28
28
  'reload'
29
29
  end, 'l 4-4'
30
30
  debug_file 'reload'
31
- check_output_includes '4: 100'
31
+ check_output_includes '4: a = 100'
32
32
  end
33
33
  end
34
34
 
@@ -13,26 +13,26 @@ class TestRepl < TestDsl::TestCase
13
13
  it 'must support next command' do
14
14
  irb.stubs(:eval_input).throws(:IRB_EXIT, :next)
15
15
  enter 'irb'
16
- debug_file('irb') { state.line.must_equal 3 }
16
+ debug_file('repl') { state.line.must_equal 3 }
17
17
  end
18
18
 
19
19
  it 'must support step command' do
20
20
  irb.stubs(:eval_input).throws(:IRB_EXIT, :step)
21
21
  enter 'irb'
22
- debug_file('irb') { state.line.must_equal 3 }
22
+ debug_file('repl') { state.line.must_equal 3 }
23
23
  end
24
24
 
25
25
  it 'must support cont command' do
26
26
  irb.stubs(:eval_input).throws(:IRB_EXIT, :cont)
27
27
  enter 'break 4', 'irb'
28
- debug_file('irb') { state.line.must_equal 4 }
28
+ debug_file('repl') { state.line.must_equal 4 }
29
29
  end
30
30
 
31
31
  describe 'autoirb' do
32
32
  it 'must call irb automatically after breakpoint' do
33
33
  irb.expects(:eval_input)
34
34
  enter 'set autoirb', 'break 4', 'cont', 'set noautoirb'
35
- debug_file 'irb'
35
+ debug_file 'repl'
36
36
  end
37
37
  end
38
38
 
@@ -43,7 +43,7 @@ class TestRepl < TestDsl::TestCase
43
43
  byebug_state = nil
44
44
  irb.stubs(:eval_input).calls { byebug_state = $byebug_state }
45
45
  enter 'irb -d'
46
- debug_file 'irb'
46
+ debug_file 'repl'
47
47
  byebug_state.must_be_kind_of Byebug::CommandProcessor::State
48
48
  end
49
49
 
@@ -51,7 +51,7 @@ class TestRepl < TestDsl::TestCase
51
51
  byebug_state = nil
52
52
  irb.stubs(:eval_input).calls { byebug_state = $byebug_state }
53
53
  enter 'irb'
54
- debug_file 'irb'
54
+ debug_file 'repl'
55
55
  byebug_state.must_be_nil
56
56
  end
57
57
  end
@@ -91,13 +91,13 @@ class TestRepl < TestDsl::TestCase
91
91
 
92
92
  it 'must set $byebug_state if irb is in the debug mode' do
93
93
  enter 'pry -d'
94
- debug_file 'irb'
94
+ debug_file 'repl'
95
95
  $byebug_state.must_be_kind_of Byebug::CommandProcessor::State
96
96
  end
97
97
 
98
98
  it 'must not set $byebug_state if irb is not in the debug mode' do
99
99
  enter 'pry'
100
- debug_file 'pry'
100
+ debug_file 'repl'
101
101
  $byebug_state.must_be_nil
102
102
  end
103
103
  end
@@ -71,7 +71,7 @@ class TestSet < TestDsl::TestCase
71
71
  describe 'testing' do
72
72
  describe '$byebug_state' do
73
73
  describe 'when setting "testing" to on' do
74
- temporary_change_hash Byebug::Command.settings, :testing, 0
74
+ temporary_change_hash Byebug::Command.settings, :testing, false
75
75
 
76
76
  it 'must get set' do
77
77
  enter 'set testing', 'break 3', 'cont'
@@ -81,7 +81,7 @@ class TestSet < TestDsl::TestCase
81
81
  end
82
82
 
83
83
  describe 'when setting "testing" to off' do
84
- temporary_change_hash Byebug::Command.settings, :testing, 1
84
+ temporary_change_hash Byebug::Command.settings, :testing, true
85
85
 
86
86
  it 'must get unset' do
87
87
  enter 'set notesting', 'break 3', 'cont'
@@ -89,16 +89,6 @@ class TestSet < TestDsl::TestCase
89
89
  end
90
90
  end
91
91
  end
92
-
93
- describe 'basename' do
94
- temporary_change_hash Byebug::Command.settings, :basename, false
95
-
96
- it 'must get set if "testing" is on' do
97
- enter 'set testing'
98
- debug_file('set')
99
- Byebug::Command.settings[:basename].must_equal true
100
- end
101
- end
102
92
  end
103
93
 
104
94
  describe 'history' do
@@ -1,55 +1,42 @@
1
1
  module TestDsl
2
2
 
3
- module ClassUtils
4
-
5
- def temporary_change_hash hash, key, value
6
- mod = Module.new do
7
- extend Minitest::Spec::DSL
8
-
9
- before do
10
- @old_hashes ||= {}
11
- @old_hashes.merge!({ hash => { key => hash[key] } }) do |k, v1, v2|
12
- v1.merge(v2)
13
- end
14
- hash[key] = value
15
- end
3
+ class TestBase < MiniTest::Spec
16
4
 
17
- after do
18
- hash[key] = @old_hashes[hash][key]
5
+ def self.temporary_change_hash hash, key, value
6
+ before do
7
+ @old_hashes ||= {}
8
+ @old_hashes.merge!({ hash => { key => hash[key] } }) do |k, v1, v2|
9
+ v1.merge(v2)
19
10
  end
11
+ hash[key] = value
20
12
  end
21
13
 
22
- include mod
14
+ after do
15
+ hash[key] = @old_hashes[hash][key]
16
+ end
23
17
  end
24
18
 
25
- def temporary_change_const klass, const, value
26
- mod = Module.new do
27
- extend Minitest::Spec::DSL
28
-
29
- before do
30
- @old_consts ||= {}
31
- old_value = klass.const_defined?(const) ?
32
- klass.const_get(const) : :__undefined__
33
- @old_consts.merge!({ klass => { const => old_value } }) do |k, v1, v2|
34
- v1.merge(v2)
35
- end
36
- klass.send :remove_const, const if klass.const_defined?(const)
37
- klass.const_set const, value unless value == :__undefined__
38
- end
39
-
40
- after do
41
- klass.send :remove_const, const if klass.const_defined?(const)
42
- klass.const_set const, @old_consts[klass][const] unless
43
- @old_consts[klass][const] == :__undefined__
19
+ def self.temporary_change_const klass, const, value
20
+ before do
21
+ @old_consts ||= {}
22
+ old_value = klass.const_defined?(const) ?
23
+ klass.const_get(const) : :__undefined__
24
+ @old_consts.merge!({ klass => { const => old_value } }) do |k, v1, v2|
25
+ v1.merge(v2)
44
26
  end
27
+ klass.send :remove_const, const if klass.const_defined?(const)
28
+ klass.const_set const, value unless value == :__undefined__
45
29
  end
46
30
 
47
- include mod
31
+ after do
32
+ klass.send :remove_const, const if klass.const_defined?(const)
33
+ klass.const_set const, @old_consts[klass][const] unless
34
+ @old_consts[klass][const] == :__undefined__
35
+ end
48
36
  end
49
37
  end
50
38
 
51
- class TestCase < Minitest::Spec
52
- extend TestDsl::ClassUtils
39
+ class TestCase < TestBase
53
40
  include TestDsl
54
41
 
55
42
  def setup
@@ -183,5 +170,4 @@ module TestDsl
183
170
  new_content = old_content.split("\n").tap { |c| c[line - 1] = new_line_content }.join("\n")
184
171
  File.open(file, 'w') { |f| f.write(new_content) }
185
172
  end
186
-
187
173
  end
@@ -2,8 +2,6 @@ require_relative 'test_helper'
2
2
 
3
3
  class TestVariables < TestDsl::TestCase
4
4
 
5
- temporary_change_hash Byebug::Command.settings, :width, 40
6
-
7
5
  describe 'class variables' do
8
6
  it 'must show variables' do
9
7
  enter 'break 19', 'cont', 'var class'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: byebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rodríguez
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-06-15 00:00:00.000000000 Z
13
+ date: 2013-06-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: columnize
@@ -82,20 +82,6 @@ dependencies:
82
82
  - - ~>
83
83
  - !ruby/object:Gem::Version
84
84
  version: 0.14.0
85
- - !ruby/object:Gem::Dependency
86
- name: minitest
87
- requirement: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - ~>
90
- - !ruby/object:Gem::Version
91
- version: 5.0.3
92
- type: :development
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - ~>
97
- - !ruby/object:Gem::Version
98
- version: 5.0.3
99
85
  description: |-
100
86
  Byebug is a Ruby 2.0 debugger. It's implemented using the
101
87
  Ruby 2.0 TracePoint C API for execution control and the Debug Inspector C
@@ -189,7 +175,6 @@ files:
189
175
  - test/examples/help.rb
190
176
  - test/examples/info.rb
191
177
  - test/examples/info2.rb
192
- - test/examples/irb.rb
193
178
  - test/examples/jump.rb
194
179
  - test/examples/kill.rb
195
180
  - test/examples/list.rb
@@ -197,6 +182,7 @@ files:
197
182
  - test/examples/post_mortem.rb
198
183
  - test/examples/quit.rb
199
184
  - test/examples/reload.rb
185
+ - test/examples/repl.rb
200
186
  - test/examples/restart.rb
201
187
  - test/examples/save.rb
202
188
  - test/examples/set.rb
@@ -279,7 +265,6 @@ test_files:
279
265
  - test/examples/help.rb
280
266
  - test/examples/info.rb
281
267
  - test/examples/info2.rb
282
- - test/examples/irb.rb
283
268
  - test/examples/jump.rb
284
269
  - test/examples/kill.rb
285
270
  - test/examples/list.rb
@@ -287,6 +272,7 @@ test_files:
287
272
  - test/examples/post_mortem.rb
288
273
  - test/examples/quit.rb
289
274
  - test/examples/reload.rb
275
+ - test/examples/repl.rb
290
276
  - test/examples/restart.rb
291
277
  - test/examples/save.rb
292
278
  - test/examples/set.rb