pry 0.9.12.6-i386-mingw32 → 0.10.0-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +702 -0
  3. data/LICENSE +2 -2
  4. data/{README.markdown → README.md} +37 -31
  5. data/lib/pry.rb +38 -151
  6. data/lib/pry/cli.rb +35 -17
  7. data/lib/pry/code.rb +19 -63
  8. data/lib/pry/code/code_file.rb +103 -0
  9. data/lib/pry/code/code_range.rb +2 -1
  10. data/lib/pry/code/loc.rb +2 -2
  11. data/lib/pry/code_object.rb +40 -21
  12. data/lib/pry/color_printer.rb +55 -0
  13. data/lib/pry/command.rb +12 -9
  14. data/lib/pry/command_set.rb +81 -38
  15. data/lib/pry/commands.rb +1 -1
  16. data/lib/pry/commands/amend_line.rb +2 -2
  17. data/lib/pry/commands/bang.rb +1 -1
  18. data/lib/pry/commands/cat.rb +11 -2
  19. data/lib/pry/commands/cat/exception_formatter.rb +6 -7
  20. data/lib/pry/commands/cat/file_formatter.rb +15 -32
  21. data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
  22. data/lib/pry/commands/cd.rb +14 -3
  23. data/lib/pry/commands/change_inspector.rb +27 -0
  24. data/lib/pry/commands/change_prompt.rb +26 -0
  25. data/lib/pry/commands/code_collector.rb +4 -4
  26. data/lib/pry/commands/easter_eggs.rb +3 -3
  27. data/lib/pry/commands/edit.rb +10 -22
  28. data/lib/pry/commands/edit/exception_patcher.rb +2 -2
  29. data/lib/pry/commands/edit/file_and_line_locator.rb +0 -2
  30. data/lib/pry/commands/exit_program.rb +0 -1
  31. data/lib/pry/commands/find_method.rb +16 -22
  32. data/lib/pry/commands/gem_install.rb +5 -2
  33. data/lib/pry/commands/gem_open.rb +1 -1
  34. data/lib/pry/commands/gist.rb +10 -11
  35. data/lib/pry/commands/help.rb +14 -14
  36. data/lib/pry/commands/hist.rb +27 -8
  37. data/lib/pry/commands/install_command.rb +14 -12
  38. data/lib/pry/commands/list_inspectors.rb +35 -0
  39. data/lib/pry/commands/list_prompts.rb +35 -0
  40. data/lib/pry/commands/ls.rb +72 -296
  41. data/lib/pry/commands/ls/constants.rb +47 -0
  42. data/lib/pry/commands/ls/formatter.rb +49 -0
  43. data/lib/pry/commands/ls/globals.rb +48 -0
  44. data/lib/pry/commands/ls/grep.rb +21 -0
  45. data/lib/pry/commands/ls/instance_vars.rb +39 -0
  46. data/lib/pry/commands/ls/interrogatable.rb +18 -0
  47. data/lib/pry/commands/ls/jruby_hacks.rb +49 -0
  48. data/lib/pry/commands/ls/local_names.rb +35 -0
  49. data/lib/pry/commands/ls/local_vars.rb +39 -0
  50. data/lib/pry/commands/ls/ls_entity.rb +70 -0
  51. data/lib/pry/commands/ls/methods.rb +57 -0
  52. data/lib/pry/commands/ls/methods_helper.rb +46 -0
  53. data/lib/pry/commands/ls/self_methods.rb +32 -0
  54. data/lib/pry/commands/play.rb +44 -10
  55. data/lib/pry/commands/pry_backtrace.rb +1 -2
  56. data/lib/pry/commands/raise_up.rb +2 -2
  57. data/lib/pry/commands/reload_code.rb +16 -19
  58. data/lib/pry/commands/ri.rb +7 -3
  59. data/lib/pry/commands/shell_command.rb +18 -13
  60. data/lib/pry/commands/shell_mode.rb +2 -4
  61. data/lib/pry/commands/show_doc.rb +5 -0
  62. data/lib/pry/commands/show_info.rb +8 -13
  63. data/lib/pry/commands/show_source.rb +15 -3
  64. data/lib/pry/commands/simple_prompt.rb +1 -1
  65. data/lib/pry/commands/toggle_color.rb +8 -4
  66. data/lib/pry/commands/watch_expression.rb +105 -0
  67. data/lib/pry/commands/watch_expression/expression.rb +38 -0
  68. data/lib/pry/commands/whereami.rb +18 -10
  69. data/lib/pry/commands/wtf.rb +3 -3
  70. data/lib/pry/config.rb +20 -254
  71. data/lib/pry/config/behavior.rb +139 -0
  72. data/lib/pry/config/convenience.rb +26 -0
  73. data/lib/pry/config/default.rb +165 -0
  74. data/lib/pry/core_extensions.rb +31 -21
  75. data/lib/pry/editor.rb +107 -103
  76. data/lib/pry/exceptions.rb +77 -0
  77. data/lib/pry/helpers/base_helpers.rb +22 -109
  78. data/lib/pry/helpers/command_helpers.rb +10 -8
  79. data/lib/pry/helpers/documentation_helpers.rb +1 -2
  80. data/lib/pry/helpers/text.rb +4 -5
  81. data/lib/pry/history.rb +46 -45
  82. data/lib/pry/history_array.rb +6 -1
  83. data/lib/pry/hooks.rb +9 -29
  84. data/lib/pry/indent.rb +6 -6
  85. data/lib/pry/input_completer.rb +242 -0
  86. data/lib/pry/input_lock.rb +132 -0
  87. data/lib/pry/inspector.rb +27 -0
  88. data/lib/pry/last_exception.rb +61 -0
  89. data/lib/pry/method.rb +82 -87
  90. data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +41 -38
  91. data/lib/pry/module_candidate.rb +4 -14
  92. data/lib/pry/object_path.rb +82 -0
  93. data/lib/pry/output.rb +50 -0
  94. data/lib/pry/pager.rb +193 -48
  95. data/lib/pry/plugins.rb +1 -1
  96. data/lib/pry/prompt.rb +26 -0
  97. data/lib/pry/pry_class.rb +149 -230
  98. data/lib/pry/pry_instance.rb +302 -413
  99. data/lib/pry/rbx_path.rb +1 -1
  100. data/lib/pry/repl.rb +202 -0
  101. data/lib/pry/repl_file_loader.rb +20 -26
  102. data/lib/pry/rubygem.rb +13 -5
  103. data/lib/pry/terminal.rb +2 -1
  104. data/lib/pry/test/helper.rb +26 -41
  105. data/lib/pry/version.rb +1 -1
  106. data/lib/pry/wrapped_module.rb +45 -59
  107. metadata +62 -225
  108. data/.document +0 -2
  109. data/.gitignore +0 -16
  110. data/.travis.yml +0 -25
  111. data/.yardopts +0 -1
  112. data/CHANGELOG +0 -534
  113. data/CONTRIBUTORS +0 -55
  114. data/Gemfile +0 -12
  115. data/Rakefile +0 -140
  116. data/TODO +0 -117
  117. data/lib/pry/completion.rb +0 -321
  118. data/lib/pry/custom_completions.rb +0 -6
  119. data/lib/pry/rbx_method.rb +0 -13
  120. data/man/pry.1 +0 -195
  121. data/man/pry.1.html +0 -204
  122. data/man/pry.1.ronn +0 -141
  123. data/pry.gemspec +0 -29
  124. data/spec/Procfile +0 -3
  125. data/spec/cli_spec.rb +0 -78
  126. data/spec/code_object_spec.rb +0 -277
  127. data/spec/code_spec.rb +0 -219
  128. data/spec/command_helpers_spec.rb +0 -29
  129. data/spec/command_integration_spec.rb +0 -644
  130. data/spec/command_set_spec.rb +0 -627
  131. data/spec/command_spec.rb +0 -821
  132. data/spec/commands/amend_line_spec.rb +0 -247
  133. data/spec/commands/bang_spec.rb +0 -19
  134. data/spec/commands/cat_spec.rb +0 -164
  135. data/spec/commands/cd_spec.rb +0 -250
  136. data/spec/commands/disable_pry_spec.rb +0 -25
  137. data/spec/commands/edit_spec.rb +0 -727
  138. data/spec/commands/exit_all_spec.rb +0 -34
  139. data/spec/commands/exit_program_spec.rb +0 -19
  140. data/spec/commands/exit_spec.rb +0 -34
  141. data/spec/commands/find_method_spec.rb +0 -70
  142. data/spec/commands/gem_list_spec.rb +0 -26
  143. data/spec/commands/gist_spec.rb +0 -79
  144. data/spec/commands/help_spec.rb +0 -56
  145. data/spec/commands/hist_spec.rb +0 -181
  146. data/spec/commands/jump_to_spec.rb +0 -15
  147. data/spec/commands/ls_spec.rb +0 -181
  148. data/spec/commands/play_spec.rb +0 -140
  149. data/spec/commands/raise_up_spec.rb +0 -56
  150. data/spec/commands/save_file_spec.rb +0 -177
  151. data/spec/commands/show_doc_spec.rb +0 -510
  152. data/spec/commands/show_input_spec.rb +0 -17
  153. data/spec/commands/show_source_spec.rb +0 -782
  154. data/spec/commands/whereami_spec.rb +0 -203
  155. data/spec/completion_spec.rb +0 -241
  156. data/spec/control_d_handler_spec.rb +0 -58
  157. data/spec/documentation_helper_spec.rb +0 -73
  158. data/spec/editor_spec.rb +0 -79
  159. data/spec/exception_whitelist_spec.rb +0 -21
  160. data/spec/fixtures/candidate_helper1.rb +0 -11
  161. data/spec/fixtures/candidate_helper2.rb +0 -8
  162. data/spec/fixtures/example.erb +0 -5
  163. data/spec/fixtures/example_nesting.rb +0 -33
  164. data/spec/fixtures/show_source_doc_examples.rb +0 -15
  165. data/spec/fixtures/testrc +0 -2
  166. data/spec/fixtures/testrcbad +0 -2
  167. data/spec/fixtures/whereami_helper.rb +0 -6
  168. data/spec/helper.rb +0 -34
  169. data/spec/helpers/bacon.rb +0 -86
  170. data/spec/helpers/mock_pry.rb +0 -43
  171. data/spec/helpers/table_spec.rb +0 -105
  172. data/spec/history_array_spec.rb +0 -67
  173. data/spec/hooks_spec.rb +0 -522
  174. data/spec/indent_spec.rb +0 -301
  175. data/spec/input_stack_spec.rb +0 -90
  176. data/spec/method_spec.rb +0 -482
  177. data/spec/prompt_spec.rb +0 -60
  178. data/spec/pry_defaults_spec.rb +0 -419
  179. data/spec/pry_history_spec.rb +0 -99
  180. data/spec/pry_output_spec.rb +0 -95
  181. data/spec/pry_spec.rb +0 -515
  182. data/spec/run_command_spec.rb +0 -25
  183. data/spec/sticky_locals_spec.rb +0 -157
  184. data/spec/syntax_checking_spec.rb +0 -81
  185. data/spec/wrapped_module_spec.rb +0 -261
  186. data/wiki/Customizing-pry.md +0 -397
  187. data/wiki/Home.md +0 -4
@@ -1,203 +0,0 @@
1
- require 'helper'
2
-
3
- describe "whereami" do
4
- it 'should work with methods that have been undefined' do
5
- class Cor
6
- def blimey!
7
- Cor.send :undef_method, :blimey!
8
- Pad.binding = binding
9
- end
10
- end
11
-
12
- Cor.new.blimey!
13
-
14
- # using [.] so the regex doesn't match itself
15
- pry_eval(Pad.binding, 'whereami').should =~ /self[.]blimey!/
16
-
17
- Object.remove_const(:Cor)
18
- end
19
-
20
- it 'should work in objects with no method methods' do
21
- class Cor
22
- def blimey!
23
- pry_eval(binding, 'whereami').should =~ /Cor[#]blimey!/
24
- end
25
-
26
- def method; "moo"; end
27
- end
28
- Cor.new.blimey!
29
- Object.remove_const(:Cor)
30
- end
31
-
32
- it 'should properly set _file_, _line_ and _dir_' do
33
- class Cor
34
- def blimey!
35
- pry_eval(binding, 'whereami', '_file_').
36
- should == File.expand_path(__FILE__)
37
- end
38
- end
39
-
40
- Cor.new.blimey!
41
- Object.remove_const(:Cor)
42
- end
43
-
44
- if defined?(BasicObject)
45
- it 'should work in BasicObjects' do
46
- cor = Class.new(BasicObject) do
47
- def blimey!
48
- ::Kernel.binding # omnom
49
- end
50
- end.new.blimey!
51
-
52
- pry_eval(cor, 'whereami').should =~ /::Kernel.binding [#] omnom/
53
- end
54
- end
55
-
56
- it 'should show description and correct code when __LINE__ and __FILE__ are outside @method.source_location' do
57
- class Cor
58
- def blimey!
59
- eval <<-END, binding, "spec/fixtures/example.erb", 1
60
- pry_eval(binding, 'whereami')
61
- END
62
- end
63
- end
64
-
65
- Cor.instance_method(:blimey!).source.should =~ /pry_eval/
66
- Cor.new.blimey!.should =~ /Cor#blimey!.*Look at me/m
67
- Object.remove_const(:Cor)
68
- end
69
-
70
- it 'should show description and correct code when @method.source_location would raise an error' do
71
- class Cor
72
- eval <<-END, binding, "spec/fixtures/example.erb", 1
73
- def blimey!
74
- pry_eval(binding, 'whereami')
75
- end
76
- END
77
- end
78
-
79
- lambda{
80
- Cor.instance_method(:blimey!).source
81
- }.should.raise(MethodSource::SourceNotFoundError)
82
-
83
- Cor.new.blimey!.should =~ /Cor#blimey!.*Look at me/m
84
- Object.remove_const(:Cor)
85
- end
86
-
87
- # Now that we use stagger_output (paging output) we no longer get
88
- # the "From: " line, as we output everything in one go (not separate output.puts)
89
- # and so the user just gets a single `Error: Cannot open
90
- # "not.found.file.erb" for reading.`
91
- # which is good enough IMO. Unfortunately we can't test for it
92
- # though, as we don't hook stdout.
93
- #
94
- # it 'should display a description and error if reading the file goes wrong' do
95
- # class Cor
96
- # def blimey!
97
- # eval <<-END, binding, "not.found.file.erb", 7
98
- # Pad.tester = pry_tester(binding)
99
- # Pad.tester.eval('whereami')
100
- # END
101
- # end
102
- # end
103
-
104
- # proc { Cor.new.blimey! }.should.raise(MethodSource::SourceNotFoundError)
105
-
106
- # Pad.tester.last_output.should =~
107
- # /From: not.found.file.erb @ line 7 Cor#blimey!:/
108
- # Object.remove_const(:Cor)
109
- # end
110
-
111
- it 'should show code window (not just method source) if parameter passed to whereami' do
112
- class Cor
113
- def blimey!
114
- pry_eval(binding, 'whereami 3').should =~ /class Cor/
115
- end
116
- end
117
- Cor.new.blimey!
118
- Object.remove_const(:Cor)
119
- end
120
-
121
- it 'should show entire method when -m option used' do
122
- old_size, Pry.config.default_window_size = Pry.config.default_window_size, 1
123
- old_cutoff, Pry::Command::Whereami.method_size_cutoff = Pry::Command::Whereami.method_size_cutoff, 1
124
- class Cor
125
- def blimey!
126
- 1
127
- 2
128
- pry_eval(binding, 'whereami -m').should =~ /def blimey/
129
- end
130
- end
131
- Pry::Command::Whereami.method_size_cutoff, Pry.config.default_window_size = old_cutoff, old_size
132
- Cor.new.blimey!
133
- Object.remove_const(:Cor)
134
- end
135
-
136
- it 'should show entire file when -f option used' do
137
- class Cor
138
- def blimey!
139
- 1
140
- 2
141
- pry_eval(binding, 'whereami -f').should =~ /show entire file when -f option used/
142
- end
143
- end
144
- Cor.new.blimey!
145
- Object.remove_const(:Cor)
146
- end
147
-
148
- it 'should show class when -c option used, and locate correct candidate' do
149
- require 'fixtures/whereami_helper'
150
- class Cor
151
- def blimey!
152
- 1
153
- 2
154
- out = pry_eval(binding, 'whereami -c')
155
- out.should =~ /class Cor/
156
- out.should =~ /blimey/
157
- end
158
- end
159
- Cor.new.blimey!
160
- Object.remove_const(:Cor)
161
- end
162
-
163
- it 'should not show line numbers or marker when -n switch is used' do
164
- class Cor
165
- def blimey!
166
- out = pry_eval(binding, 'whereami -n')
167
- out.should =~ /^\s*def/
168
- out.should.not =~ /\=\>/
169
- end
170
- end
171
- Cor.new.blimey!
172
- Object.remove_const(:Cor)
173
- end
174
-
175
- it 'should use Pry.config.default_window_size for window size when outside a method context' do
176
- old_size, Pry.config.default_window_size = Pry.config.default_window_size, 1
177
- :litella
178
- :pig
179
- out = pry_eval(binding, 'whereami')
180
- :punk
181
- :sanders
182
-
183
- out.should.not =~ /:litella/
184
- out.should =~ /:pig/
185
- out.should =~ /:punk/
186
- out.should.not =~ /:sanders/
187
-
188
- Pry.config.default_window_size = old_size
189
- end
190
-
191
- it "should work at the top level" do
192
- pry_eval(Pry.toplevel_binding, 'whereami').should =~
193
- /At the top level/
194
- end
195
-
196
- it "should work inside a class" do
197
- pry_eval(Pry, 'whereami').should =~ /Inside Pry/
198
- end
199
-
200
- it "should work inside an object" do
201
- pry_eval(Object.new, 'whereami').should =~ /Inside #<Object/
202
- end
203
- end
@@ -1,241 +0,0 @@
1
- require 'helper'
2
-
3
- def new_completer(bind, pry=nil)
4
- Pry::InputCompleter.build_completion_proc(Pry.binding_for(bind), pry)
5
- end
6
-
7
- def completer_test(bind, pry=nil, assert_flag=true)
8
- completer = new_completer(bind, pry)
9
- test = proc {|symbol| completer.call(symbol[0..-2]).include?(symbol).should == assert_flag}
10
- return proc {|*symbols| symbols.each(&test) }
11
- end
12
-
13
- Pry.require_readline
14
-
15
- if defined?(Bond) && Readline::VERSION !~ /editline/i
16
- describe 'bond-based completion' do
17
- it 'should pull in Bond by default' do
18
- Pry.config.completer.should == Pry::BondCompleter
19
- end
20
- end
21
- end
22
-
23
- describe Pry::InputCompleter do
24
-
25
- before do
26
- # The AMQP gem has some classes like this:
27
- # pry(main)> AMQP::Protocol::Test::ContentOk.name
28
- # => :content_ok
29
- module SymbolyName
30
- def self.name; :symboly_name; end
31
- end
32
-
33
- $default_completer = Pry.config.completer
34
- Pry.config.completer = Pry::InputCompleter
35
- end
36
-
37
- after do
38
- Pry.config.completer = $default_completer
39
- Object.remove_const :SymbolyName
40
- end
41
-
42
- # another jruby hack :((
43
- if !Pry::Helpers::BaseHelpers.jruby?
44
- it "should not crash if there's a Module that has a symbolic name." do
45
- completer = Pry::InputCompleter.build_completion_proc(Pry.binding_for(Object.new))
46
- lambda{ completer.call "a.to_s." }.should.not.raise Exception
47
- end
48
- end
49
-
50
- it 'should take parenthesis and other characters into account for symbols' do
51
- b = Pry.binding_for(Object.new)
52
- completer = Pry::InputCompleter.build_completion_proc(b)
53
-
54
- lambda { completer.call(":class)") }.should.not.raise(RegexpError)
55
- end
56
-
57
- it 'should complete instance variables' do
58
- object = Class.new.new
59
-
60
- # set variables in appropriate scope
61
- object.instance_variable_set(:'@name', 'Pry')
62
- object.class.send(:class_variable_set, :'@@number', 10)
63
-
64
- # check to see if variables are in scope
65
- object.instance_variables.
66
- map { |v| v.to_sym }.
67
- include?(:'@name').should == true
68
-
69
- object.class.class_variables.
70
- map { |v| v.to_sym }.
71
- include?(:'@@number').should == true
72
-
73
- # Complete instance variables.
74
- b = Pry.binding_for(object)
75
- completer_test(b).call('@name', '@name.downcase')
76
-
77
- # Complete class variables.
78
- b = Pry.binding_for(object.class)
79
- completer_test(b).call('@@number', '@@number.class')
80
-
81
- end
82
-
83
-
84
- it 'should complete for stdlib symbols' do
85
-
86
- o = Object.new
87
- # Regexp
88
- completer_test(o).call('/foo/.extend')
89
-
90
- # Array
91
- completer_test(o).call('[1].push')
92
-
93
- # Hash
94
- completer_test(o).call('{"a" => "b"}.keys')
95
-
96
- # Proc
97
- completer_test(o).call('{2}.call')
98
-
99
- # Symbol
100
- completer_test(o).call(':symbol.to_s')
101
-
102
- # Absolute Constant
103
- completer_test(o).call('::IndexError')
104
- end
105
-
106
- it 'should complete for target symbols' do
107
- o = Object.new
108
-
109
- # Constant
110
- module Mod
111
- Con = 'Constant'
112
- module Mod2
113
- end
114
- end
115
-
116
- completer_test(Mod).call('Con')
117
-
118
- # Constants or Class Methods
119
- completer_test(o).call('Mod::Con')
120
-
121
- # Symbol
122
- foo = :symbol
123
- completer_test(o).call(':symbol')
124
-
125
- # Variables
126
- class << o
127
- attr_accessor :foo
128
- end
129
- o.foo = 'bar'
130
- completer_test(binding).call('o.foo')
131
-
132
- # trailing slash
133
- new_completer(Mod).call('Mod2/').include?('Mod2/').should == true
134
- end
135
-
136
- it 'should complete for arbitrary scopes' do
137
- module Bar
138
- @barvar = :bar
139
- end
140
-
141
- module Baz
142
- @bar = Bar
143
- @bazvar = :baz
144
- Con = :constant
145
- end
146
-
147
- pry = Pry.new()
148
- stack = pry.binding_stack
149
- stack.push(Pry.binding_for(Baz))
150
- stack.push(Pry.binding_for(Bar))
151
-
152
- b = Pry.binding_for(Bar)
153
- completer_test(b, pry).call("../@bazvar")
154
- completer_test(b, pry).call('/Con')
155
- end
156
-
157
- it 'should complete for stdlib symbols' do
158
-
159
- o = Object.new
160
- # Regexp
161
- completer_test(o).call('/foo/.extend')
162
-
163
- # Array
164
- completer_test(o).call('[1].push')
165
-
166
- # Hash
167
- completer_test(o).call('{"a" => "b"}.keys')
168
-
169
- # Proc
170
- completer_test(o).call('{2}.call')
171
-
172
- # Symbol
173
- completer_test(o).call(':symbol.to_s')
174
-
175
- # Absolute Constant
176
- completer_test(o).call('::IndexError')
177
- end
178
-
179
- it 'should complete for target symbols' do
180
- o = Object.new
181
-
182
- # Constant
183
- module Mod
184
- Con = 'Constant'
185
- module Mod2
186
- end
187
- end
188
-
189
- completer_test(Mod).call('Con')
190
-
191
- # Constants or Class Methods
192
- completer_test(o).call('Mod::Con')
193
-
194
- # Symbol
195
- foo = :symbol
196
- completer_test(o).call(':symbol')
197
-
198
- # Variables
199
- class << o
200
- attr_accessor :foo
201
- end
202
- o.foo = 'bar'
203
- completer_test(binding).call('o.foo')
204
-
205
- # trailing slash
206
- new_completer(Mod).call('Mod2/').include?('Mod2/').should == true
207
-
208
- end
209
-
210
- it 'should complete for arbitrary scopes' do
211
- module Bar
212
- @barvar = :bar
213
- end
214
-
215
- module Baz
216
- @bar = Bar
217
- @bazvar = :baz
218
- Con = :constant
219
- end
220
-
221
- pry = Pry.new()
222
- stack = pry.binding_stack
223
- stack.push(Pry.binding_for(Baz))
224
- stack.push(Pry.binding_for(Bar))
225
-
226
- b = Pry.binding_for(Bar)
227
- completer_test(b, pry).call("../@bazvar")
228
- completer_test(b, pry).call('/Con')
229
- end
230
-
231
- it 'should not return nil in its output' do
232
- pry = Pry.new
233
- new_completer(binding, pry).call("pry.").should.not.include nil
234
- end
235
-
236
- it "does not raise when complete file paths" do
237
- should.not.raise(Pry::CommandError) {
238
- new_completer(binding, Pry.new).call("cat lib/p")
239
- }
240
- end
241
- end
@@ -1,58 +0,0 @@
1
- require 'helper'
2
-
3
- describe Pry::DEFAULT_CONTROL_D_HANDLER do
4
-
5
- describe "control-d press" do
6
-
7
- before do
8
- # Simulates a ^D press.
9
- @control_d = "Pry::DEFAULT_CONTROL_D_HANDLER.call('', _pry_)"
10
- end
11
-
12
- describe "in an expression" do
13
- it "should clear out passed string" do
14
- str = 'hello world'
15
- Pry::DEFAULT_CONTROL_D_HANDLER.call(str, nil)
16
- str.should == ''
17
- end
18
- end
19
-
20
-
21
- describe "at top-level session" do
22
- it "breaks out of a REPL" do
23
- pry_tester(0).simulate_repl do |t|
24
- t.eval @control_d
25
- end.should == nil
26
- end
27
- end
28
-
29
- describe "in a nested session" do
30
- it "pops last binding from the binding stack" do
31
- pry_tester(0).simulate_repl { |t|
32
- t.eval 'cd :foo'
33
- t.eval('_pry_.binding_stack.size').should == 2
34
- t.eval(@control_d)
35
- t.eval('_pry_.binding_stack.size').should == 1
36
- t.eval 'exit-all'
37
- }
38
- end
39
-
40
- it "breaks out of the parent session" do
41
- pry_tester(:outer).simulate_repl do |o|
42
- o.context = :inner
43
- o.simulate_repl { |i|
44
- i.eval('_pry_.current_context.eval("self")').should == :inner
45
- i.eval('_pry_.binding_stack.size').should == 2
46
- i.eval @control_d
47
- i.eval('_pry_.binding_stack.size').should == 1
48
- i.eval('_pry_.current_context.eval("self")').should == :outer
49
- i.eval 'throw :breakout'
50
- }
51
- o.eval 'exit-all'
52
- end
53
- end
54
- end
55
-
56
- end
57
-
58
- end