byebug 1.1.1 → 1.2.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 +7 -0
  3. data/GUIDE.md +231 -0
  4. data/README.md +195 -7
  5. data/bin/byebug +1 -5
  6. data/byebug.gemspec +34 -35
  7. data/lib/byebug.rb +2 -5
  8. data/lib/byebug/command.rb +13 -13
  9. data/lib/byebug/commands/breakpoints.rb +1 -1
  10. data/lib/byebug/commands/control.rb +1 -1
  11. data/lib/byebug/commands/frame.rb +1 -1
  12. data/lib/byebug/commands/info.rb +1 -1
  13. data/lib/byebug/commands/list.rb +5 -5
  14. data/lib/byebug/commands/reload.rb +7 -10
  15. data/lib/byebug/commands/{irb.rb → repl.rb} +49 -13
  16. data/lib/byebug/commands/set.rb +10 -6
  17. data/lib/byebug/commands/show.rb +4 -7
  18. data/lib/byebug/commands/trace.rb +2 -2
  19. data/lib/byebug/context.rb +3 -5
  20. data/lib/byebug/helper.rb +2 -2
  21. data/lib/byebug/interface.rb +3 -0
  22. data/lib/byebug/processor.rb +2 -2
  23. data/lib/byebug/version.rb +1 -1
  24. data/old_doc/byebug.1 +1 -2
  25. data/old_doc/byebug.texi +125 -126
  26. data/old_doc/hanoi.rb +2 -3
  27. data/old_doc/triangle.rb +6 -7
  28. data/test/breakpoints_test.rb +43 -33
  29. data/test/display_test.rb +1 -1
  30. data/test/edit_test.rb +20 -15
  31. data/test/eval_test.rb +32 -26
  32. data/test/examples/list.rb +12 -1
  33. data/test/frame_test.rb +56 -43
  34. data/test/help_test.rb +11 -8
  35. data/test/info_test.rb +18 -13
  36. data/test/list_test.rb +74 -80
  37. data/test/method_test.rb +1 -3
  38. data/test/reload_test.rb +3 -3
  39. data/test/repl_test.rb +112 -0
  40. data/test/restart_test.rb +72 -70
  41. data/test/set_test.rb +43 -27
  42. data/test/show_test.rb +97 -102
  43. data/test/source_test.rb +6 -10
  44. data/test/stepping_test.rb +45 -49
  45. data/test/support/test_dsl.rb +47 -55
  46. data/test/test_helper.rb +2 -2
  47. data/test/trace_test.rb +4 -4
  48. data/test/variables_test.rb +10 -8
  49. metadata +9 -10
  50. data/old_doc/Makefile +0 -20
  51. data/test/examples/edit2.rb +0 -3
  52. data/test/irb_test.rb +0 -85
@@ -9,31 +9,35 @@ describe 'Restart Command' do
9
9
  end
10
10
 
11
11
  describe 'usual restarting' do
12
- before do
13
- force_set_const Byebug, 'BYEBUG_SCRIPT', 'byebug_script'
14
- end
12
+ temporary_change_const Byebug, 'BYEBUG_SCRIPT', 'byebug_script'
15
13
 
16
14
  it 'must be restarted with arguments' do
17
15
  Byebug::RestartCommand.any_instance.expects(:exec).
18
- with("#{Byebug::BYEBUG_SCRIPT} 1 2 3")
16
+ with("#{Byebug::BYEBUG_SCRIPT} #{Byebug::PROG_SCRIPT} 1 2 3")
19
17
  enter 'restart 1 2 3'
20
18
  debug_file 'restart'
21
19
  end
22
20
 
23
- it 'arguments must be correctly escaped' do
24
- Byebug::Command.settings[:argv] = ['argv1', 'argv 2']
25
- Byebug::RestartCommand.any_instance.expects(:exec).with \
26
- "#{Byebug::BYEBUG_SCRIPT} argv1 argv\\ 2"
27
- enter 'restart'
28
- debug_file 'restart'
21
+ describe 'when arguments have spaces' do
22
+ temporary_change_hash Byebug::Command.settings, :argv, ['argv1', 'argv 2']
23
+
24
+ it 'must be correctly escaped' do
25
+ Byebug::RestartCommand.any_instance.expects(:exec).with \
26
+ "#{Byebug::BYEBUG_SCRIPT} #{Byebug::PROG_SCRIPT} argv1 argv\\ 2"
27
+ enter 'restart'
28
+ debug_file 'restart'
29
+ end
29
30
  end
30
31
 
31
- it 'must specify arguments by "set" command' do
32
- Byebug::Command.settings[:argv] = []
33
- Byebug::RestartCommand.any_instance.expects(:exec).
34
- with("#{Byebug::BYEBUG_SCRIPT} 1 2 3")
35
- enter 'set args 1 2 3', 'restart'
36
- debug_file 'restart'
32
+ describe 'when arguments specified by set command' do
33
+ temporary_change_hash Byebug::Command.settings, :argv, []
34
+
35
+ it 'must specify arguments by "set" command' do
36
+ Byebug::RestartCommand.any_instance.expects(:exec).
37
+ with("#{Byebug::BYEBUG_SCRIPT} #{Byebug::PROG_SCRIPT} 1 2 3")
38
+ enter 'set args 1 2 3', 'restart'
39
+ debug_file 'restart'
40
+ end
37
41
  end
38
42
  end
39
43
 
@@ -41,71 +45,70 @@ describe 'Restart Command' do
41
45
  before { enter 'restart' }
42
46
 
43
47
  describe 'reexecing' do
44
- it 'must restart and show a message about reexecing' do
45
- force_set_const Byebug, 'BYEBUG_SCRIPT', 'byebug_script'
46
- Byebug::Command.settings[:argv] = ['argv']
47
- must_restart
48
- debug_file 'restart'
49
- check_output_includes \
50
- "Re exec'ing:\n\t#{Byebug::BYEBUG_SCRIPT} argv"
48
+ temporary_change_const Byebug, 'BYEBUG_SCRIPT', 'byebug_script'
49
+
50
+ describe 'with set args' do
51
+ temporary_change_hash Byebug::Command.settings, :argv, ['argv']
52
+
53
+ it 'must restart and show a message about reexecing' do
54
+ must_restart
55
+ debug_file 'restart'
56
+ check_output_includes \
57
+ "Re exec'ing:\n" \
58
+ "\t#{Byebug::BYEBUG_SCRIPT} #{Byebug::PROG_SCRIPT} argv"
59
+ end
51
60
  end
52
61
  end
53
62
 
54
- describe 'no script specified and no $0 used instead' do
55
- before do
56
- force_unset_const Byebug, 'PROG_SCRIPT'
57
- force_set_const Byebug,
58
- 'DEFAULT_START_SETTINGS',
59
- init: false, post_mortem: false, tracing: nil
60
- end
63
+ describe 'no script specified' do
64
+ temporary_change_const Byebug, 'PROG_SCRIPT', :__undefined__
61
65
 
62
- it 'must not restart and show error messages instead' do
63
- must_restart.never
64
- debug_file 'restart'
65
- check_output_includes 'Don\'t know name of debugged program',
66
- interface.error_queue
67
- end
68
- end
66
+ describe 'and no $0 used' do
67
+ temporary_change_const Byebug, 'DEFAULT_START_SETTINGS',
68
+ { init: false, post_mortem: false, tracing: nil }
69
69
 
70
- describe 'no script specified, $0 used instead' do
71
- before do
72
- @old_prog_name = $0
73
- $0 = 'prog-0'
74
- force_unset_const Byebug, 'PROG_SCRIPT'
70
+ it 'must not restart and show error messages instead' do
71
+ must_restart.never
72
+ debug_file 'restart'
73
+ check_output_includes 'Don\'t know name of debugged program',
74
+ interface.error_queue
75
+ end
75
76
  end
76
- after { $0 = @old_prog_name }
77
77
 
78
- it 'must use prog_script from $0 if PROG_SCRIPT is undefined' do
79
- debug_file 'restart'
80
- check_output_includes 'Ruby program prog-0 doesn\'t exist',
81
- interface.error_queue
78
+ describe 'but initialized from $0' do
79
+ it 'must use prog_script from $0' do
80
+ old_prog_name = $0
81
+ $0 = 'prog-0'
82
+ debug_file 'restart'
83
+ check_output_includes 'Ruby program prog-0 doesn\'t exist',
84
+ interface.error_queue
85
+ $0 = old_prog_name
86
+ end
82
87
  end
83
88
  end
84
89
 
85
90
  describe 'no script at the specified path' do
86
- before do
87
- force_set_const Byebug, 'PROG_SCRIPT', 'blabla'
88
- force_set_const Byebug,
89
- 'DEFAULT_START_SETTINGS',
90
- init: false, post_mortem: false, tracing: nil
91
- end
92
-
93
- it 'must not restart' do
94
- must_restart.never
95
- debug_file 'restart'
96
- end
97
-
98
- it 'must show an error message' do
99
- debug_file 'restart'
100
- check_output_includes 'Ruby program blabla doesn\'t exist',
101
- interface.error_queue
91
+ temporary_change_const Byebug, 'PROG_SCRIPT', 'blabla'
92
+
93
+ describe 'and no restart params set' do
94
+ temporary_change_const Byebug, 'DEFAULT_START_SETTINGS',
95
+ init: false, post_mortem: false, tracing: nil
96
+
97
+ it 'must not restart' do
98
+ must_restart.never
99
+ debug_file 'restart'
100
+ end
101
+
102
+ it 'must show an error message' do
103
+ debug_file 'restart'
104
+ check_output_includes 'Ruby program blabla doesn\'t exist',
105
+ interface.error_queue
106
+ end
102
107
  end
103
108
  end
104
109
 
105
110
  describe 'byebug runner script is not specified' do
106
- before do
107
- must_restart
108
- end
111
+ before { must_restart }
109
112
 
110
113
  it 'must restart anyway' do
111
114
  debug_file 'restart'
@@ -124,16 +127,15 @@ describe 'Restart Command' do
124
127
  end
125
128
 
126
129
  describe 'when can\'t change the dir to INITIAL_DIR' do
127
- before do
128
- force_set_const(Byebug, 'INITIAL_DIR', '/unexistent/path')
129
- must_restart
130
- end
130
+ temporary_change_const Byebug, 'INITIAL_DIR', '/unexistent/path'
131
131
 
132
132
  it 'must restart anyway' do
133
+ must_restart
133
134
  debug_file 'restart'
134
135
  end
135
136
 
136
137
  it 'must show an error message ' do
138
+ must_restart
137
139
  debug_file 'restart'
138
140
  check_output_includes \
139
141
  'Failed to change initial directory /unexistent/path'
@@ -4,7 +4,7 @@ describe 'Set Command' do
4
4
  include TestDsl
5
5
 
6
6
  describe 'setting to on' do
7
- Byebug::Command.settings[:autolist] = 0
7
+ temporary_change_hash Byebug::Command.settings, :autolist, 0
8
8
 
9
9
  it 'must set a setting to on' do
10
10
  enter 'set autolist on'
@@ -32,7 +32,7 @@ describe 'Set Command' do
32
32
  end
33
33
 
34
34
  describe 'setting to off' do
35
- Byebug::Command.settings[:autolist] = 1
35
+ temporary_change_hash Byebug::Command.settings, :autolist, 1
36
36
 
37
37
  it 'must set a setting to off' do
38
38
  enter 'set autolist off'
@@ -51,10 +51,16 @@ describe 'Set Command' do
51
51
  debug_file 'set'
52
52
  Byebug::Command.settings[:autolist].must_equal 0
53
53
  end
54
+
55
+ it 'must set a setting to off by "no" prefix and shortcut' do
56
+ enter 'set noautol'
57
+ debug_file 'set'
58
+ Byebug::Command.settings[:autolist].must_equal 0
59
+ end
54
60
  end
55
61
 
56
62
  describe 'messages' do
57
- Byebug::Command.settings[:autolist] = 0
63
+ temporary_change_hash Byebug::Command.settings, :autolist, 0
58
64
 
59
65
  it 'must show a message after setting' do
60
66
  enter 'set autolist on'
@@ -64,23 +70,35 @@ describe 'Set Command' do
64
70
  end
65
71
 
66
72
  describe 'testing' do
67
- it '$byebug_state must get set if "testing" is on' do
68
- enter 'set testing', 'break 3', 'cont'
69
- debug_file('set') {
70
- $byebug_state.must_be_kind_of Byebug::CommandProcessor::State }
71
- end
73
+ describe '$byebug_state' do
74
+ describe 'when setting "testing" to on' do
75
+ temporary_change_hash Byebug::Command.settings, :testing, 0
76
+
77
+ it 'must get set' do
78
+ enter 'set testing', 'break 3', 'cont'
79
+ debug_file('set') {
80
+ $byebug_state.must_be_kind_of Byebug::CommandProcessor::State }
81
+ end
82
+ end
72
83
 
73
- it 'basename must get set if "testing" is on' do
74
- temporary_change_hash_value(Byebug::Command.settings, :basename, false) do
75
- enter 'set testing', 'show basename'
76
- debug_file('set')
77
- check_output_includes 'basename is on.'
84
+ describe 'when setting "testing" to off' do
85
+ temporary_change_hash Byebug::Command.settings, :testing, 1
86
+
87
+ it 'must get unset' do
88
+ enter 'set notesting', 'break 3', 'cont'
89
+ debug_file('set') { $byebug_state.must_be_nil }
90
+ end
78
91
  end
79
92
  end
80
93
 
81
- it '$byebug_state must get unset if "testing" is off' do
82
- enter 'set notesting', 'break 3', 'cont'
83
- debug_file('set') { $byebug_state.must_be_nil }
94
+ describe 'basename' do
95
+ temporary_change_hash Byebug::Command.settings, :basename, false
96
+
97
+ it 'must get set if "testing" is on' do
98
+ enter 'set testing'
99
+ debug_file('set')
100
+ Byebug::Command.settings[:basename].must_equal true
101
+ end
84
102
  end
85
103
  end
86
104
 
@@ -120,19 +138,19 @@ describe 'Set Command' do
120
138
  end
121
139
 
122
140
  describe 'filename' do
141
+ let(:filename) {
142
+ File.join(ENV['HOME']||ENV['HOMEPATH']||'.', '.byebug-hist') }
143
+
123
144
  it 'must set history filename' do
124
145
  enter 'set history filename .byebug-hist'
125
146
  debug_file 'set'
126
- interface.histfile.must_equal \
127
- File.join(ENV['HOME']||ENV['HOMEPATH']||'.', '.byebug-hist')
147
+ interface.histfile.must_equal filename
128
148
  end
129
149
 
130
150
  it 'must show a message' do
131
151
  enter 'set history filename .byebug-hist'
132
152
  debug_file 'set'
133
- check_output_includes \
134
- 'The filename in which to record the command history is ' \
135
- "\"#{File.join(ENV['HOME']||ENV['HOMEPATH']||'.', '.byebug-hist')}\""
153
+ check_output_includes "The command history file is \"#{filename}\""
136
154
  end
137
155
  end
138
156
 
@@ -151,14 +169,13 @@ describe 'Set Command' do
151
169
  end
152
170
 
153
171
  describe 'width' do
154
- Byebug::Command.settings[:width] = 20
172
+ temporary_change_hash Byebug::Command.settings, :width, 20
173
+ let(:old_columns) { ENV['COLUMNS'] }
155
174
 
156
175
  it 'must set ENV[\'COLUMNS\'] by the "set width" command' do
157
- old_columns = ENV['COLUMNS']
158
176
  begin
159
177
  enter 'set width 10'
160
- debug_file 'set'
161
- ENV['COLUMNS'].must_equal '10'
178
+ debug_file('set') { ENV['COLUMNS'].must_equal '10' }
162
179
  ensure
163
180
  ENV['COLUMNS'] = old_columns
164
181
  end
@@ -174,7 +191,7 @@ describe 'Set Command' do
174
191
  end
175
192
 
176
193
  describe 'Post Mortem' do
177
- Byebug::Command.settings[:autolist] = 0
194
+ temporary_change_hash Byebug::Command.settings, :autolist, 0
178
195
 
179
196
  it 'must work in post-mortem mode' do
180
197
  enter 'cont', 'set autolist on'
@@ -182,5 +199,4 @@ describe 'Set Command' do
182
199
  check_output_includes 'autolist is on.'
183
200
  end
184
201
  end
185
-
186
202
  end
@@ -13,19 +13,21 @@ describe 'Show Command' do
13
13
  end
14
14
 
15
15
  describe 'args' do
16
- before do
17
- Byebug::Command.settings[:argv] = %w{foo bar}
18
- end
16
+ temporary_change_hash Byebug::Command.settings, :argv, %w{foo bar}
19
17
 
20
- it 'must show args' do
21
- enter 'show args'
22
- debug_file 'show'
23
- check_output_includes 'Argument list to give program being debugged ' \
18
+ describe 'default behaviour' do
19
+ it 'must show args' do
20
+ enter 'show args'
21
+ debug_file 'show'
22
+ check_output_includes 'Argument list to give program being debugged ' \
24
23
  'when it is started is "foo bar".'
24
+ end
25
25
  end
26
26
 
27
- it 'must not show the first arg if BYEBUG_SCRIPT is defined' do
28
- temporary_set_const(Byebug, 'BYEBUG_SCRIPT', 'bla') do
27
+ describe 'when BYEBUG_SCRIPT is defined' do
28
+ temporary_change_const Byebug, 'BYEBUG_SCRIPT', 'bla'
29
+
30
+ it 'must not show the first arg' do
29
31
  enter 'show args'
30
32
  debug_file 'show'
31
33
  check_output_includes 'Argument list to give program being debugged ' \
@@ -34,141 +36,128 @@ describe 'Show Command' do
34
36
  end
35
37
  end
36
38
 
37
-
38
- it 'must show autolist' do
39
- temporary_change_hash_value(Byebug::Command.settings, :autolist, 1) do
39
+ describe 'autolist' do
40
+ it 'must show default value' do
40
41
  enter 'show autolist'
41
42
  debug_file 'show'
42
43
  check_output_includes 'autolist is on.'
43
44
  end
44
45
  end
45
46
 
46
- it 'must show autoeval' do
47
- temporary_change_hash_value(Byebug::Command.settings, :autoeval, true) do
47
+ describe 'autoeval' do
48
+ it 'must show default value' do
48
49
  enter 'show autoeval'
49
50
  debug_file 'show'
50
51
  check_output_includes 'autoeval is on.'
51
52
  end
52
53
  end
53
54
 
54
- it 'must show autoreload' do
55
- temporary_change_hash_value(Byebug::Command.settings, :reload_source_on_change, true) do
55
+ describe 'autoreload' do
56
+ it 'must show default value' do
56
57
  enter 'show autoreload'
57
58
  debug_file 'show'
58
59
  check_output_includes 'autoreload is on.'
59
60
  end
60
61
  end
61
62
 
62
- it 'must show autoirb' do
63
- Byebug::IRBCommand.any_instance.stubs(:execute)
64
- temporary_change_hash_value(Byebug::Command.settings, :autoirb, 1) do
63
+ describe 'autoirb' do
64
+ before { Byebug::IRBCommand.any_instance.stubs(:execute) }
65
+
66
+ it 'must show default value' do
65
67
  enter 'show autoirb'
66
68
  debug_file 'show'
67
- check_output_includes 'autoirb is on.'
69
+ check_output_includes 'autoirb is off.'
68
70
  end
69
71
  end
70
72
 
71
- it 'must show basename' do
72
- temporary_change_hash_value(Byebug::Command.settings, :basename, true) do
73
+ describe 'basename' do
74
+ it 'must show default value' do
73
75
  enter 'show basename'
74
76
  debug_file 'show'
75
- check_output_includes 'basename is on.'
77
+ check_output_includes 'basename is off.'
76
78
  end
77
79
  end
78
80
 
79
- it 'must show callstyle' do
80
- temporary_change_hash_value(Byebug::Command.settings, :callstyle, :short) do
81
+ describe 'callstyle' do
82
+ it 'must show default value' do
81
83
  enter 'show callstyle'
82
84
  debug_file 'show'
83
- check_output_includes 'Frame call-display style is short.'
85
+ check_output_includes 'Frame call-display style is last.'
84
86
  end
85
87
  end
86
88
 
87
- it 'must show forcestep' do
88
- temporary_change_hash_value(Byebug::Command.settings, :force_stepping, true) do
89
+ describe 'forcestep' do
90
+ it 'must show default value' do
89
91
  enter 'show forcestep'
90
92
  debug_file 'show'
91
- check_output_includes 'force-stepping is on.'
93
+ check_output_includes 'force-stepping is off.'
92
94
  end
93
95
  end
94
96
 
95
- it 'must show fullpath' do
96
- temporary_change_hash_value(Byebug::Command.settings, :full_path, true) do
97
+ describe 'fullpath' do
98
+ it 'must show default value' do
97
99
  enter 'show fullpath'
98
100
  debug_file 'show'
99
101
  check_output_includes 'Displaying frame\'s full file names is on.'
100
102
  end
101
103
  end
102
104
 
103
- it 'must show linetrace' do
104
- enter 'trace on', 'show linetrace', 'trace off'
105
- debug_file 'show'
106
- check_output_includes 'line tracing is on.'
105
+ describe 'linetrace' do
106
+ it 'must show default value' do
107
+ enter 'show linetrace'
108
+ debug_file 'show'
109
+ check_output_includes 'line tracing is off.'
110
+ end
107
111
  end
108
112
 
109
113
  describe 'linetrace+' do
110
- it 'must show a message when linetrace+ is on' do
111
- temporary_change_hash_value(Byebug::Command.settings, :tracing_plus, true) do
112
- enter 'show linetrace+'
113
- debug_file 'show'
114
- check_output_includes 'line tracing style is different consecutive lines.'
115
- end
116
- end
117
-
118
- it 'must show a message when linetrace+ is off' do
119
- temporary_change_hash_value(Byebug::Command.settings, :tracing_plus, false) do
120
- enter 'show linetrace+'
121
- debug_file 'show'
122
- check_output_includes 'line tracing style is every line.'
123
- end
114
+ it 'must show default value' do
115
+ enter 'show linetrace+'
116
+ debug_file 'show'
117
+ check_output_includes 'line tracing style is every line.'
124
118
  end
125
119
  end
126
120
 
127
- it 'must show listsize' do
128
- temporary_change_hash_value(Byebug::Command.settings, :listsize, 10) do
121
+ describe 'listsize' do
122
+ it 'must show listsize' do
129
123
  enter 'show listsize'
130
124
  debug_file 'show'
131
125
  check_output_includes 'Number of source lines to list is 10.'
132
126
  end
133
127
  end
134
128
 
135
- it 'must show port' do
136
- temporary_set_const(Byebug, 'PORT', 12345) do
137
- enter 'show port'
129
+ describe 'trace' do
130
+ it 'must show trace' do
131
+ enter 'show trace'
138
132
  debug_file 'show'
139
- check_output_includes 'server port is 12345.'
133
+ check_output_includes 'Displaying stack trace is off.'
140
134
  end
141
135
  end
142
136
 
143
- it 'must show trace' do
144
- temporary_change_hash_value(Byebug::Command.settings, :stack_trace_on_error, true) do
145
- enter 'show trace'
137
+ describe 'version' do
138
+ it 'must show version' do
139
+ enter 'show version'
146
140
  debug_file 'show'
147
- check_output_includes 'Displaying stack trace is on.'
141
+ check_output_includes "byebug #{Byebug::VERSION}"
148
142
  end
149
143
  end
150
144
 
151
- it 'must show version' do
152
- enter 'show version'
153
- debug_file 'show'
154
- check_output_includes "byebug #{Byebug::VERSION}"
155
- end
156
-
157
- it 'must show forcestep' do
158
- temporary_change_hash_value(Byebug::Command.settings, :width, 35) do
145
+ describe 'width' do
146
+ it 'must show width' do
159
147
  enter 'show width'
160
148
  debug_file 'show'
161
- check_output_includes 'width is 35.'
149
+ check_output_includes 'width is 80.'
162
150
  end
163
151
  end
164
152
 
165
- it 'must show a message about unknown command' do
166
- enter 'show bla'
167
- debug_file 'show'
168
- check_output_includes 'Unknown show command bla'
153
+ describe 'unknown command' do
154
+ it 'must show a message' do
155
+ enter 'show bla'
156
+ debug_file 'show'
157
+ check_output_includes 'Unknown show command bla'
158
+ end
169
159
  end
170
160
 
171
-
172
161
  describe 'history' do
173
162
  describe 'without arguments' do
174
163
  before do
@@ -181,7 +170,7 @@ describe 'Show Command' do
181
170
 
182
171
  it 'must show history file' do
183
172
  check_output_includes \
184
- /The filename in which to record the command history is "hist_file\.txt"/
173
+ /filename: The command history file is "hist_file\.txt"/
185
174
  end
186
175
 
187
176
  it 'must show history save setting' do
@@ -198,8 +187,7 @@ describe 'Show Command' do
198
187
  interface.histfile = 'hist_file.txt'
199
188
  enter 'show history filename'
200
189
  debug_file 'show'
201
- check_output_includes 'The filename in which to record the command ' \
202
- 'history is "hist_file.txt"'
190
+ check_output_includes 'The command history file is "hist_file.txt"'
203
191
  end
204
192
 
205
193
  it 'must show history save setting' do
@@ -219,37 +207,46 @@ describe 'Show Command' do
219
207
  end
220
208
 
221
209
  describe 'commands' do
222
- before { interface.readline_support = true }
223
-
224
- it 'must not show records from readline if there is no readline support' do
225
- interface.readline_support = false
226
- enter 'show commands'
227
- debug_file 'show'
228
- check_output_includes 'No readline support'
229
- end
210
+ describe 'no readline support' do
211
+ before { interface.readline_support = false }
230
212
 
231
- it 'must show records from readline history' do
232
- temporary_set_const(Readline, 'HISTORY', %w{aaa bbb ccc ddd eee fff}) do
213
+ it 'must not show records from readline' do
233
214
  enter 'show commands'
234
215
  debug_file 'show'
235
- check_output_includes /1 aaa/
236
- check_output_includes /6 fff/
216
+ check_output_includes 'No readline support'
237
217
  end
238
218
  end
239
219
 
240
- it 'must show last 10 records from readline history' do
241
- temporary_set_const(Readline, 'HISTORY', %w{aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn}) do
242
- enter 'show commands'
243
- debug_file 'show'
244
- check_output_doesnt_include /3 ccc/
245
- check_output_includes /4 eee/
246
- check_output_includes /13 nnn/
220
+ describe 'readline support' do
221
+ before { interface.readline_support = true }
222
+
223
+ describe 'show records' do
224
+ temporary_change_const Readline, 'HISTORY', %w{aaa bbb ccc ddd eee fff}
225
+
226
+ it 'must show records from readline history' do
227
+ enter 'show commands'
228
+ debug_file 'show'
229
+ check_output_includes /1 aaa/
230
+ check_output_includes /6 fff/
231
+ end
232
+ end
233
+
234
+ describe 'max records' do
235
+ temporary_change_const Readline, 'HISTORY', %w{aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn}
236
+
237
+ it 'must show last 10 records from readline history' do
238
+ enter 'show commands'
239
+ debug_file 'show'
240
+ check_output_doesnt_include /3 ddd/
241
+ check_output_includes /4 eee/
242
+ check_output_includes /13 nnn/
243
+ end
247
244
  end
248
- end
249
245
 
250
- describe 'with specified positions' do
251
- it 'must show records within boundaries' do
252
- temporary_set_const(Readline, 'HISTORY', %w{aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn}) do
246
+ describe 'with specified positions' do
247
+ temporary_change_const Readline, 'HISTORY', %w{aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn}
248
+
249
+ it 'must show records within boundaries' do
253
250
  # Really don't know why it substracts 4, and shows starting from position 6
254
251
  enter 'show commands 10'
255
252
  debug_file 'show'
@@ -257,10 +254,8 @@ describe 'Show Command' do
257
254
  check_output_includes /6 ggg/
258
255
  check_output_includes /13 nnn/
259
256
  end
260
- end
261
257
 
262
- it 'must adjust first line if it is < 0' do
263
- temporary_set_const(Readline, 'HISTORY', %w{aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn}) do
258
+ it 'must adjust first line if it is < 0' do
264
259
  enter 'show commands 3'
265
260
  debug_file 'show'
266
261
  check_output_includes /1 bbb/