byebug 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +10 -0
- data/.travis.yml +8 -0
- data/AUTHORS +10 -0
- data/CHANGELOG.md +2 -0
- data/CONTRIBUTING.md +1 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +5 -0
- data/Rakefile +28 -0
- data/bin/byebug +395 -0
- data/byebug.gemspec +29 -0
- data/doc/hanoi.rb +35 -0
- data/doc/primes.rb +28 -0
- data/doc/rdebug-emacs.texi +1030 -0
- data/doc/test-tri2.rb +18 -0
- data/doc/tri3.rb +8 -0
- data/doc/triangle.rb +12 -0
- data/ext/byebug/breakpoint.c +476 -0
- data/ext/byebug/byebug.c +512 -0
- data/ext/byebug/byebug.h +131 -0
- data/ext/byebug/context.c +424 -0
- data/ext/byebug/extconf.rb +21 -0
- data/ext/byebug/locker.c +53 -0
- data/lib/byebug.rb +404 -0
- data/lib/byebug/command.rb +232 -0
- data/lib/byebug/commands/breakpoints.rb +153 -0
- data/lib/byebug/commands/catchpoint.rb +56 -0
- data/lib/byebug/commands/condition.rb +49 -0
- data/lib/byebug/commands/continue.rb +38 -0
- data/lib/byebug/commands/control.rb +110 -0
- data/lib/byebug/commands/display.rb +122 -0
- data/lib/byebug/commands/edit.rb +48 -0
- data/lib/byebug/commands/enable.rb +202 -0
- data/lib/byebug/commands/eval.rb +176 -0
- data/lib/byebug/commands/finish.rb +43 -0
- data/lib/byebug/commands/frame.rb +303 -0
- data/lib/byebug/commands/help.rb +56 -0
- data/lib/byebug/commands/info.rb +462 -0
- data/lib/byebug/commands/irb.rb +123 -0
- data/lib/byebug/commands/jump.rb +66 -0
- data/lib/byebug/commands/kill.rb +51 -0
- data/lib/byebug/commands/list.rb +94 -0
- data/lib/byebug/commands/method.rb +84 -0
- data/lib/byebug/commands/quit.rb +39 -0
- data/lib/byebug/commands/reload.rb +40 -0
- data/lib/byebug/commands/save.rb +90 -0
- data/lib/byebug/commands/set.rb +210 -0
- data/lib/byebug/commands/show.rb +246 -0
- data/lib/byebug/commands/skip.rb +35 -0
- data/lib/byebug/commands/source.rb +36 -0
- data/lib/byebug/commands/stepping.rb +83 -0
- data/lib/byebug/commands/threads.rb +189 -0
- data/lib/byebug/commands/tmate.rb +36 -0
- data/lib/byebug/commands/trace.rb +56 -0
- data/lib/byebug/commands/variables.rb +199 -0
- data/lib/byebug/context.rb +58 -0
- data/lib/byebug/helper.rb +69 -0
- data/lib/byebug/interface.rb +223 -0
- data/lib/byebug/processor.rb +468 -0
- data/lib/byebug/version.rb +3 -0
- data/man/rdebug.1 +241 -0
- data/test/breakpoints_test.rb +357 -0
- data/test/conditions_test.rb +77 -0
- data/test/continue_test.rb +44 -0
- data/test/display_test.rb +141 -0
- data/test/edit_test.rb +56 -0
- data/test/eval_test.rb +92 -0
- data/test/examples/breakpoint1.rb +15 -0
- data/test/examples/breakpoint2.rb +7 -0
- data/test/examples/conditions.rb +4 -0
- data/test/examples/continue.rb +4 -0
- data/test/examples/display.rb +5 -0
- data/test/examples/edit.rb +3 -0
- data/test/examples/edit2.rb +3 -0
- data/test/examples/eval.rb +4 -0
- data/test/examples/finish.rb +20 -0
- data/test/examples/frame.rb +20 -0
- data/test/examples/frame_threads.rb +31 -0
- data/test/examples/help.rb +2 -0
- data/test/examples/info.rb +38 -0
- data/test/examples/info2.rb +3 -0
- data/test/examples/info_threads.rb +48 -0
- data/test/examples/irb.rb +6 -0
- data/test/examples/jump.rb +14 -0
- data/test/examples/kill.rb +2 -0
- data/test/examples/list.rb +12 -0
- data/test/examples/method.rb +15 -0
- data/test/examples/post_mortem.rb +19 -0
- data/test/examples/quit.rb +2 -0
- data/test/examples/reload.rb +6 -0
- data/test/examples/restart.rb +6 -0
- data/test/examples/save.rb +3 -0
- data/test/examples/set.rb +3 -0
- data/test/examples/set_annotate.rb +12 -0
- data/test/examples/settings.rb +1 -0
- data/test/examples/show.rb +2 -0
- data/test/examples/source.rb +3 -0
- data/test/examples/stepping.rb +21 -0
- data/test/examples/thread.rb +32 -0
- data/test/examples/tmate.rb +10 -0
- data/test/examples/trace.rb +7 -0
- data/test/examples/trace_threads.rb +20 -0
- data/test/examples/variables.rb +26 -0
- data/test/finish_test.rb +48 -0
- data/test/frame_test.rb +143 -0
- data/test/help_test.rb +50 -0
- data/test/info_test.rb +313 -0
- data/test/irb_test.rb +81 -0
- data/test/jump_test.rb +70 -0
- data/test/kill_test.rb +48 -0
- data/test/list_test.rb +145 -0
- data/test/method_test.rb +70 -0
- data/test/post_mortem_test.rb +27 -0
- data/test/quit_test.rb +56 -0
- data/test/reload_test.rb +44 -0
- data/test/restart_test.rb +164 -0
- data/test/save_test.rb +92 -0
- data/test/set_test.rb +177 -0
- data/test/show_test.rb +293 -0
- data/test/source_test.rb +45 -0
- data/test/stepping_test.rb +130 -0
- data/test/support/breakpoint.rb +13 -0
- data/test/support/context.rb +14 -0
- data/test/support/matchers.rb +67 -0
- data/test/support/mocha_extensions.rb +72 -0
- data/test/support/processor.rb +7 -0
- data/test/support/test_dsl.rb +206 -0
- data/test/support/test_interface.rb +68 -0
- data/test/test_helper.rb +10 -0
- data/test/tmate_test.rb +44 -0
- data/test/trace_test.rb +159 -0
- data/test/variables_test.rb +119 -0
- metadata +265 -0
data/test/reload_test.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
describe "Reload Command" do
|
4
|
+
include TestDsl
|
5
|
+
temporary_change_hash_value(Byebug::Command.settings, :reload_source_on_change, false)
|
6
|
+
|
7
|
+
it "must notify that automatic reloading is off" do
|
8
|
+
enter 'reload'
|
9
|
+
debug_file 'reload'
|
10
|
+
check_output_includes "Source code is reloaded. Automatic reloading is off."
|
11
|
+
end
|
12
|
+
|
13
|
+
it "must notify that automatic reloading is on" do
|
14
|
+
enter 'set autoreload', 'reload'
|
15
|
+
debug_file 'reload'
|
16
|
+
check_output_includes "Source code is reloaded. Automatic reloading is on."
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "reloading" do
|
20
|
+
after { change_line_in_file(fullpath('reload'), 4, '4') }
|
21
|
+
it "must reload the code" do
|
22
|
+
enter 'break 3', 'cont', 'l 4-4', -> do
|
23
|
+
change_line_in_file(fullpath('reload'), 4, '100')
|
24
|
+
'reload'
|
25
|
+
end, 'l 4-4'
|
26
|
+
debug_file 'reload'
|
27
|
+
check_output_includes "4 100"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "Post Mortem" do
|
32
|
+
#after { change_line_in_file(fullpath('post_mortem'), 7, ' z = 4') }
|
33
|
+
it "must work in post-mortem mode" do
|
34
|
+
skip("No post morten mode for now")
|
35
|
+
#enter 'cont', -> do
|
36
|
+
# change_line_in_file(fullpath('post_mortem'), 7, 'z = 100')
|
37
|
+
# 'reload'
|
38
|
+
#end, 'l 7-7'
|
39
|
+
#debug_file 'post_mortem'
|
40
|
+
#check_output_includes "7 z = 100"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
describe "Restart Command" do
|
4
|
+
include TestDsl
|
5
|
+
|
6
|
+
def must_restart
|
7
|
+
Byebug::RestartCommand.any_instance.unstub(:exec)
|
8
|
+
Byebug::RestartCommand.any_instance.expects(:exec)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Restart Command 2" do
|
12
|
+
|
13
|
+
temporary_set_const(Byebug, "INITIAL_DIR",
|
14
|
+
Pathname.new(__FILE__ + "/../..").realpath.to_s)
|
15
|
+
temporary_set_const(Byebug, "PROG_SCRIPT",
|
16
|
+
Pathname.new(fullpath('restart')).realpath.to_s)
|
17
|
+
temporary_set_const(Byebug, "RDEBUG_SCRIPT", 'rdebug_script')
|
18
|
+
temporary_change_hash_value(Byebug::Command.settings, :argv, 'argv')
|
19
|
+
Byebug::RestartCommand.any_instance.stubs(:exec).
|
20
|
+
with("#{Byebug::RDEBUG_SCRIPT} argv")
|
21
|
+
|
22
|
+
it "must be restarted with arguments" do
|
23
|
+
Byebug::RestartCommand.any_instance.expects(:exec).
|
24
|
+
with("#{Byebug::RDEBUG_SCRIPT} test/examples/restart.rb 1 2 3")
|
25
|
+
enter 'restart 1 2 3'
|
26
|
+
debug_file('restart')
|
27
|
+
end
|
28
|
+
|
29
|
+
it "must be restarted without arguments" do
|
30
|
+
temporary_set_const(Byebug, "RDEBUG_SCRIPT", 'rdebug_script') do
|
31
|
+
temporary_set_const(Byebug, "PROG_SCRIPT",
|
32
|
+
Pathname.new(fullpath('restart')).
|
33
|
+
relative_path_from(Pathname.new(__FILE__ + "/../..")).
|
34
|
+
cleanpath.to_s) do
|
35
|
+
temporary_change_hash_value(Byebug::Command.settings, :argv, ['argv']) do
|
36
|
+
Byebug::RestartCommand.
|
37
|
+
any_instance.expects(:exec).with("#{Byebug::RDEBUG_SCRIPT} argv")
|
38
|
+
enter 'restart'
|
39
|
+
debug_file('restart')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
it "must specify arguments by 'set' command" do
|
46
|
+
temporary_change_hash_value(Byebug::Command.settings, :argv, []) do
|
47
|
+
temporary_set_const(Byebug, "RDEBUG_SCRIPT", 'rdebug_script') do
|
48
|
+
Byebug::RestartCommand.any_instance.expects(:exec).with("#{Byebug::RDEBUG_SCRIPT} 1 2 3")
|
49
|
+
enter 'set args 1 2 3', 'restart'
|
50
|
+
debug_file('restart')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "messaging" do
|
56
|
+
before { enter 'restart' }
|
57
|
+
|
58
|
+
describe "reexecing" do
|
59
|
+
|
60
|
+
it "must restart" do
|
61
|
+
must_restart
|
62
|
+
debug_file('restart')
|
63
|
+
end
|
64
|
+
|
65
|
+
it "must show a message about reexecing" do
|
66
|
+
temporary_set_const(Byebug, "PROG_SCRIPT",
|
67
|
+
Pathname.new(fullpath('restart')).
|
68
|
+
relative_path_from(Pathname.new(__FILE__ + "/../..")).
|
69
|
+
cleanpath.to_s) do
|
70
|
+
temporary_change_hash_value(Byebug::Command.settings, :argv,
|
71
|
+
[Byebug::PROG_SCRIPT]) do
|
72
|
+
temporary_set_const(Byebug, "RDEBUG_SCRIPT",
|
73
|
+
Pathname.new(__FILE__ + "/../../bin/byebug").realpath.to_s) do
|
74
|
+
debug_file('restart')
|
75
|
+
check_output_includes "Re exec'ing:\n\t#{Byebug::RDEBUG_SCRIPT}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "no script is specified and don't use $0" do
|
83
|
+
before do
|
84
|
+
force_set_const(Byebug, "DEFAULT_START_SETTINGS", init: false, post_mortem: false, tracing: nil)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "must not restart" do
|
88
|
+
must_restart.never
|
89
|
+
debug_file('restart')
|
90
|
+
end
|
91
|
+
|
92
|
+
it "must show an error message" do
|
93
|
+
debug_file('restart')
|
94
|
+
check_output_includes "Don't know name of debugged program", interface.error_queue
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it "must use prog_script from $0 if PROG_SCRIPT is undefined" do
|
99
|
+
$0 = 'prog-0'
|
100
|
+
Byebug.send(:remove_const, "PROG_SCRIPT")
|
101
|
+
force_set_const(Byebug, "DEFAULT_START_SETTINGS", init: true, post_mortem: false, tracing: nil)
|
102
|
+
debug_file('restart')
|
103
|
+
check_output_includes "Ruby program prog-0 doesn't exist", interface.error_queue
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "no script at the specified path" do
|
107
|
+
before { force_set_const(Byebug, "PROG_SCRIPT", 'blabla') }
|
108
|
+
|
109
|
+
it "must not restart" do
|
110
|
+
must_restart.never
|
111
|
+
debug_file('restart')
|
112
|
+
end
|
113
|
+
|
114
|
+
it "must show an error message" do
|
115
|
+
debug_file('restart')
|
116
|
+
check_output_includes "Ruby program blabla doesn't exist", interface.error_queue
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "byebug runner script is not specified" do
|
121
|
+
|
122
|
+
it "must restart anyway" do
|
123
|
+
must_restart
|
124
|
+
debug_file('restart')
|
125
|
+
end
|
126
|
+
|
127
|
+
it "must show a warning message" do
|
128
|
+
debug_file('restart')
|
129
|
+
check_output_includes "Byebug was not called from the outset..."
|
130
|
+
end
|
131
|
+
|
132
|
+
it "must show a warning message when prog script is not executable" do
|
133
|
+
debug_file('restart')
|
134
|
+
check_output_includes "Ruby program #{Byebug::PROG_SCRIPT} doesn't seem to be executable..."
|
135
|
+
check_output_includes "We'll add a call to Ruby."
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
describe "when can't change the dir to INITIAL_DIR" do
|
140
|
+
before { force_set_const(Byebug, "INITIAL_DIR", "unexisted/path") }
|
141
|
+
|
142
|
+
it "must restart anyway" do
|
143
|
+
must_restart
|
144
|
+
debug_file('restart')
|
145
|
+
end
|
146
|
+
|
147
|
+
it "must show an error message " do
|
148
|
+
debug_file('restart')
|
149
|
+
check_output_includes "Failed to change initial directory unexisted/path"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe "Post Mortem" do
|
155
|
+
it "must work in post-mortem mode" do
|
156
|
+
skip("No post morten mode for now")
|
157
|
+
#must_restart
|
158
|
+
#enter 'cont', 'restart'
|
159
|
+
#debug_file 'post_mortem'
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
164
|
+
end
|
data/test/save_test.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
describe "Save Command" do
|
4
|
+
include TestDsl
|
5
|
+
let(:file_name) { 'save_output.txt' }
|
6
|
+
|
7
|
+
describe "successful saving" do
|
8
|
+
let(:file_contents) { File.read(file_name) }
|
9
|
+
before do
|
10
|
+
enter 'break 2', 'break 3 if true', 'catch NoMethodError', 'display 2 + 3', 'display 5 + 6',
|
11
|
+
'set autoeval', 'set autolist',
|
12
|
+
"save #{file_name}"
|
13
|
+
debug_file 'save'
|
14
|
+
end
|
15
|
+
after do
|
16
|
+
FileUtils.rm(file_name)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "must save usual breakpoints" do
|
20
|
+
file_contents.must_include "break #{fullpath('save')}:2"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "must save conditinal breakpoints" do
|
24
|
+
file_contents.must_include "break #{fullpath('save')}:3 if true"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "must save catchpoints" do
|
28
|
+
file_contents.must_include "catch NoMethodError"
|
29
|
+
end
|
30
|
+
|
31
|
+
# Not sure why it is suppressed, but this is like it is now.
|
32
|
+
it "must not save displays" do
|
33
|
+
file_contents.wont_include "display 2 + 3"
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "saving settings" do
|
37
|
+
it "must save autoeval" do
|
38
|
+
file_contents.must_include "set autoeval on"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "must save basename" do
|
42
|
+
file_contents.must_include "set basename off"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "must save byebugtesting" do
|
46
|
+
file_contents.must_include "set byebugtesting on"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "must save autolist" do
|
50
|
+
file_contents.must_include "set autolist on"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "must save autoirb" do
|
54
|
+
file_contents.must_include "set autoirb off"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it "must show a message about successful saving" do
|
59
|
+
check_output_includes "Saved to '#{file_name}'"
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "without filename" do
|
65
|
+
let(:file_contents) { File.read(interface.restart_file) }
|
66
|
+
after { FileUtils.rm(interface.restart_file) }
|
67
|
+
|
68
|
+
it "must fabricate a filename if not provided" do
|
69
|
+
enter "save"
|
70
|
+
debug_file 'save'
|
71
|
+
file_contents.must_include "set autoirb"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "must show a message where the file is saved" do
|
75
|
+
enter "save"
|
76
|
+
debug_file 'save'
|
77
|
+
check_output_includes "Saved to '#{interface.restart_file}'"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "Post Mortem" do
|
82
|
+
#let(:file_contents) { File.read(file_name) }
|
83
|
+
#after { FileUtils.rm(file_name) }
|
84
|
+
it "must work in post-mortem mode" do
|
85
|
+
skip("No post morten mode for now")
|
86
|
+
#enter 'cont', "save #{file_name}"
|
87
|
+
#debug_file 'post_mortem'
|
88
|
+
#file_contents.must_include "set autoirb off"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
data/test/set_test.rb
ADDED
@@ -0,0 +1,177 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
describe "Set Command" do
|
4
|
+
include TestDsl
|
5
|
+
|
6
|
+
describe "setting to on" do
|
7
|
+
temporary_change_hash_value(Byebug::Command.settings, :autolist, 0)
|
8
|
+
|
9
|
+
it "must set a setting to on" do
|
10
|
+
enter 'set autolist on'
|
11
|
+
debug_file 'set'
|
12
|
+
Byebug::Command.settings[:autolist].must_equal 1
|
13
|
+
end
|
14
|
+
|
15
|
+
it "must set a setting to on by 1" do
|
16
|
+
enter 'set autolist 1'
|
17
|
+
debug_file 'set'
|
18
|
+
Byebug::Command.settings[:autolist].must_equal 1
|
19
|
+
end
|
20
|
+
|
21
|
+
it "must set a setting to on by default" do
|
22
|
+
enter 'set autolist'
|
23
|
+
debug_file 'set'
|
24
|
+
Byebug::Command.settings[:autolist].must_equal 1
|
25
|
+
end
|
26
|
+
|
27
|
+
it "must set a setting using shortcut" do
|
28
|
+
enter 'set autol'
|
29
|
+
debug_file 'set'
|
30
|
+
Byebug::Command.settings[:autolist].must_equal 1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "setting to off" do
|
35
|
+
temporary_change_hash_value(Byebug::Command.settings, :autolist, 1)
|
36
|
+
|
37
|
+
it "must set a setting to off" do
|
38
|
+
enter 'set autolist off'
|
39
|
+
debug_file 'set'
|
40
|
+
Byebug::Command.settings[:autolist].must_equal 0
|
41
|
+
end
|
42
|
+
|
43
|
+
it "must set a setting to off by 0" do
|
44
|
+
enter 'set autolist 0'
|
45
|
+
debug_file 'set'
|
46
|
+
Byebug::Command.settings[:autolist].must_equal 0
|
47
|
+
end
|
48
|
+
|
49
|
+
it "must set a setting to off by 'no' suffix" do
|
50
|
+
enter 'set noautolist'
|
51
|
+
debug_file 'set'
|
52
|
+
Byebug::Command.settings[:autolist].must_equal 0
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "messages" do
|
57
|
+
temporary_change_hash_value(Byebug::Command.settings, :autolist, 0)
|
58
|
+
|
59
|
+
it "must show a message after setting" do
|
60
|
+
enter 'set autolist on'
|
61
|
+
debug_file 'set'
|
62
|
+
check_output_includes "autolist is on."
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "byebugtesting" do
|
67
|
+
temporary_change_hash_value(Byebug::Command.settings, :byebugtesting, false)
|
68
|
+
before { $rdebug_state = nil }
|
69
|
+
after { $rdebug_state = nil }
|
70
|
+
|
71
|
+
it "must set $rdebug_context if byebugsetting is on" do
|
72
|
+
enter 'set byebugtesting', 'break 3', 'cont'
|
73
|
+
debug_file('set') { state.must_be_kind_of Byebug::CommandProcessor::State }
|
74
|
+
end
|
75
|
+
|
76
|
+
it "must set basename on too" do
|
77
|
+
temporary_change_hash_value(Byebug::Command.settings, :basename, false) do
|
78
|
+
enter 'set byebugtesting', 'show basename'
|
79
|
+
debug_file('set')
|
80
|
+
check_output_includes "basename is on."
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "must not set $rdebug_context if byebugsetting is off" do
|
85
|
+
enter 'set nobyebugtesting', 'break 3', 'cont'
|
86
|
+
debug_file('set') { state.must_be_nil }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "history" do
|
91
|
+
describe "save" do
|
92
|
+
it "must set history save to on" do
|
93
|
+
enter 'set history save on'
|
94
|
+
debug_file 'set'
|
95
|
+
interface.history_save.must_equal true
|
96
|
+
end
|
97
|
+
|
98
|
+
it "must show a message" do
|
99
|
+
enter 'set history save on'
|
100
|
+
debug_file 'set'
|
101
|
+
check_output_includes "Saving of history save is on."
|
102
|
+
end
|
103
|
+
|
104
|
+
it "must set history save to off" do
|
105
|
+
enter 'set history save off'
|
106
|
+
debug_file 'set'
|
107
|
+
interface.history_save.must_equal false
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "size" do
|
112
|
+
it "must set history size" do
|
113
|
+
enter 'set history size 250'
|
114
|
+
debug_file 'set'
|
115
|
+
interface.history_length.must_equal 250
|
116
|
+
end
|
117
|
+
|
118
|
+
it "must show a message" do
|
119
|
+
enter 'set history size 250'
|
120
|
+
debug_file 'set'
|
121
|
+
check_output_includes "Byebug history size is 250"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "filename" do
|
126
|
+
it "must set history filename" do
|
127
|
+
enter 'set history filename .byebug-hist'
|
128
|
+
debug_file 'set'
|
129
|
+
interface.histfile.must_equal File.join(ENV["HOME"]||ENV["HOMEPATH"]||".", '.byebug-hist')
|
130
|
+
end
|
131
|
+
|
132
|
+
it "must show a message" do
|
133
|
+
enter 'set history filename .byebug-hist'
|
134
|
+
debug_file 'set'
|
135
|
+
check_output_includes "The filename in which to record the command history is \"#{File.join(ENV["HOME"]||ENV["HOMEPATH"]||".", ".byebug-hist")}\""
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
it "must show an error message if used wrong subcommand" do
|
140
|
+
enter 'set history bla 2'
|
141
|
+
debug_file 'set'
|
142
|
+
check_output_includes "Invalid history parameter bla. Should be 'filename', 'save' or 'size'."
|
143
|
+
end
|
144
|
+
|
145
|
+
it "must show an error message if provided only one argument" do
|
146
|
+
enter 'set history save'
|
147
|
+
debug_file 'set'
|
148
|
+
check_output_includes "Need two parameters for 'set history'; got 1."
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe "width" do
|
153
|
+
temporary_change_hash_value(Byebug::Command.settings, :width, 20)
|
154
|
+
|
155
|
+
it "must set ENV['COLUMNS'] by the 'set width' command" do
|
156
|
+
old_columns = ENV["COLUMNS"]
|
157
|
+
begin
|
158
|
+
enter 'set width 10'
|
159
|
+
debug_file 'set'
|
160
|
+
ENV["COLUMNS"].must_equal '10'
|
161
|
+
ensure
|
162
|
+
ENV["COLUMNS"] = old_columns
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
describe "Post Mortem" do
|
168
|
+
temporary_change_hash_value(Byebug::Command.settings, :autolist, 0)
|
169
|
+
it "must work in post-mortem mode" do
|
170
|
+
skip("No post morten mode for now")
|
171
|
+
#enter 'cont', "set autolist on"
|
172
|
+
#debug_file 'post_mortem'
|
173
|
+
#check_output_includes "autolist is on."
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|