pry 0.11.2-java → 0.11.3-java

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d65af86c19665298c8e3d51fbd283306cac0dd2c
4
- data.tar.gz: f5e3c37ea995727643112c9948cc946ee64c3e3d
3
+ metadata.gz: 1b989d6ceed81991bfe4b4f30a360fcf487a3bdf
4
+ data.tar.gz: b99600288a254bee586beb70aa5978399adb1488
5
5
  SHA512:
6
- metadata.gz: ef2d053f1d6219a8a049973f802a6f125af00eb04e61d8372812958f3a03b03b59d074005ae6386374255856d16a3694d70a75b52076ad0b0efecd54f80e39ad
7
- data.tar.gz: 9a82ccc964d190717567945992dd248b186a5689a20306df2ea25f66062378133f5d1d184ddc5281b06695e9f09cc70312323d134c0741b3f2416f1160541f68
6
+ metadata.gz: 2c016a0277c040a068d738af688bba5c3a5f64aee84b6dc1db0400de6927f0f442c6fca18fb74e5034831d51cff6cd7b369d669edc166210be384dcf0828fd69
7
+ data.tar.gz: 8f6807e2d8fe9206cf1a84228591710c8715c664ef723439a0ea066d691e30a570eeb619d4e8d86ab9203876bce878c2a5192014fe144434886617dcdbede8f4
@@ -1,3 +1,49 @@
1
+ ### HEAD
2
+
3
+ #### Features
4
+
5
+ * Add Pry::Testable, an improved modular replacement for PryTestHelpers.
6
+ **breaking change**.
7
+
8
+ See pull request [#1679](https://github.com/pry/pry/pull/1679).
9
+
10
+ * Add a new category module: "Pry::Platform". Loosely related to #1668 below.
11
+
12
+ See pull request [#1670](https://github.com/pry/pry/pull/1670)
13
+
14
+ * Add `mac_osx?` and `linux?` utility functions to Pry::Helpers::BaseHelpers.
15
+
16
+ See pull request [#1668](https://github.com/pry/pry/pull/1668).
17
+
18
+ * Add utility functions for drawing colorised text on a colorised background.
19
+
20
+ See pull request [#1673](https://github.com/pry/pry/pull/1673).
21
+
22
+ #### Bug fixes
23
+
24
+ * Fix a case of infinite recursion in `Pry::Method::WeirdMethodLocator#find_method_in_superclass`
25
+ that users of the [Hanami](http://hanamirb.org/) web framework experienced and
26
+ reported since 2015.
27
+
28
+ See pull request [#1639](https://github.com/pry/pry/pull/1689).
29
+
30
+ * Fix a bug where Method objects were not returned for setters inherited
31
+ from a default (Pry::Config::Default). Eg, this is no longer an error:
32
+
33
+ pry(main)> d = Pry::Config.from_hash({}, Pry::Config::Default.new)
34
+ pry(main)> d.method(:exception_whitelist=) # Error
35
+
36
+ See pull request [#1688](https://github.com/pry/pry/pull/1688).
37
+
38
+ * Do not capture unused Proc objects in Text helper methods `no_color` and `no_paging`,
39
+ for performance reasons. Improve the documentation of both methods.
40
+
41
+ See pull request [#1691](https://github.com/pry/pry/pull/1691).
42
+
43
+ * Fix `String#pp` output color.
44
+
45
+ See pull request [#1674](https://github.com/pry/pry/pull/1674).
46
+
1
47
  ### 0.11.0
2
48
 
3
49
  * Add alias 'whereami[?!]+' for 'whereami' command. ([#1597](https://github.com/pry/pry/pull/1597))
@@ -47,7 +93,6 @@
47
93
  * Move to rspec for testing (from bacon)
48
94
  * Clean up ruby warnings
49
95
 
50
-
51
96
  ### 0.10.0
52
97
 
53
98
  #### Features
data/lib/pry.rb CHANGED
@@ -5,6 +5,7 @@ require 'pp'
5
5
  require 'pry/forwardable'
6
6
  require 'pry/input_lock'
7
7
  require 'pry/exceptions'
8
+ require 'pry/platform'
8
9
  require 'pry/helpers/base_helpers'
9
10
  require 'pry/hooks'
10
11
 
@@ -34,7 +34,7 @@ class Pry
34
34
  if String === obj
35
35
  # Avoid calling Ruby 2.4+ String#pretty_print that prints multiline
36
36
  # Strings prettier
37
- Object.instance_method(:pretty_print).bind(obj).call
37
+ text(obj.inspect)
38
38
  else
39
39
  super
40
40
  end
@@ -193,5 +193,5 @@ class Pry
193
193
 
194
194
  Pry::Commands.add_command(Pry::Command::Whereami)
195
195
  Pry::Commands.alias_command '@', 'whereami'
196
- Pry::Commands.alias_command /whereami[!?]+/, 'whereami'
196
+ Pry::Commands.alias_command(/whereami[!?]+/, 'whereami')
197
197
  end
@@ -188,6 +188,7 @@ module Pry::Config::Behavior
188
188
  end
189
189
 
190
190
  def respond_to_missing?(key, include_all=false)
191
+ key = key.to_s.chomp(ASSIGNMENT)
191
192
  key?(key) or @default.respond_to?(key) or super(key, include_all)
192
193
  end
193
194
 
@@ -58,8 +58,8 @@ class Pry::Config::Default
58
58
  true
59
59
  },
60
60
  should_trap_interrupts: proc {
61
- Pry::Helpers::BaseHelpers.jruby?
62
- }, # TODO: Pry::Platform.jruby?
61
+ Pry::Platform.jruby?
62
+ },
63
63
  disable_auto_reload: proc {
64
64
  false
65
65
  },
@@ -1,109 +1,71 @@
1
- class Pry
2
- module Helpers
3
-
4
- module BaseHelpers
5
-
6
- module_function
7
-
8
- def silence_warnings
9
- old_verbose = $VERBOSE
10
- $VERBOSE = nil
11
- begin
12
- yield
13
- ensure
14
- $VERBOSE = old_verbose
15
- end
16
- end
17
-
18
- # Acts like send but ignores any methods defined below Object or Class in the
19
- # inheritance hierarchy.
20
- # This is required to introspect methods on objects like Net::HTTP::Get that
21
- # have overridden the `method` method.
22
- def safe_send(obj, method, *args, &block)
23
- (Module === obj ? Module : Object).instance_method(method).bind(obj).call(*args, &block)
24
- end
25
- public :safe_send
26
-
27
- def find_command(name, set = Pry::Commands)
28
- command_match = set.find do |_, command|
29
- (listing = command.options[:listing]) == name && listing != nil
30
- end
31
- command_match.last if command_match
32
- end
33
-
34
- def not_a_real_file?(file)
35
- file =~ /^(\(.*\))$|^<.*>$/ || file =~ /__unknown__/ || file == "" || file == "-e"
36
- end
37
-
38
- def command_dependencies_met?(options)
39
- return true if !options[:requires_gem]
40
- Array(options[:requires_gem]).all? do |g|
41
- Rubygem.installed?(g)
42
- end
43
- end
44
-
45
- def use_ansi_codes?
46
- windows_ansi? || ENV['TERM'] && ENV['TERM'] != "dumb"
47
- end
48
-
49
- def colorize_code(code)
50
- CodeRay.scan(code, :ruby).term
51
- end
52
-
53
- def highlight(string, regexp, highlight_color=:bright_yellow)
54
- string.gsub(regexp) { |match| "<#{highlight_color}>#{match}</#{highlight_color}>" }
55
- end
56
-
57
- # formatting
58
- def heading(text)
59
- text = "#{text}\n--"
60
- "\e[1m#{text}\e[0m"
61
- end
1
+ module Pry::Helpers; end
2
+ module Pry::Helpers::BaseHelpers
3
+ include Pry::Platform
4
+ extend self
5
+
6
+ def silence_warnings
7
+ old_verbose = $VERBOSE
8
+ $VERBOSE = nil
9
+ begin
10
+ yield
11
+ ensure
12
+ $VERBOSE = old_verbose
13
+ end
14
+ end
62
15
 
63
- # have fun on the Windows platform.
64
- def windows?
65
- RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
66
- end
16
+ # Acts like send but ignores any methods defined below Object or Class in the
17
+ # inheritance hierarchy.
18
+ # This is required to introspect methods on objects like Net::HTTP::Get that
19
+ # have overridden the `method` method.
20
+ def safe_send(obj, method, *args, &block)
21
+ (Module === obj ? Module : Object).instance_method(method).bind(obj).call(*args, &block)
22
+ end
23
+ public :safe_send
67
24
 
68
- # are we able to use ansi on windows?
69
- def windows_ansi?
70
- defined?(Win32::Console) || ENV['ANSICON'] || (windows? && mri_2?)
71
- end
25
+ def find_command(name, set = Pry::Commands)
26
+ command_match = set.find do |_, command|
27
+ (listing = command.options[:listing]) == name && listing != nil
28
+ end
29
+ command_match.last if command_match
30
+ end
72
31
 
73
- def jruby?
74
- RbConfig::CONFIG['ruby_install_name'] == 'jruby'
75
- end
32
+ def not_a_real_file?(file)
33
+ file =~ /^(\(.*\))$|^<.*>$/ || file =~ /__unknown__/ || file == "" || file == "-e"
34
+ end
76
35
 
77
- def jruby_19?
78
- jruby? && RbConfig::CONFIG['ruby_version'] == '1.9'
79
- end
36
+ def command_dependencies_met?(options)
37
+ return true if !options[:requires_gem]
38
+ Array(options[:requires_gem]).all? do |g|
39
+ Pry::Rubygem.installed?(g)
40
+ end
41
+ end
80
42
 
81
- def rbx?
82
- RbConfig::CONFIG['ruby_install_name'] == 'rbx'
83
- end
43
+ def use_ansi_codes?
44
+ windows_ansi? || ENV['TERM'] && ENV['TERM'] != "dumb"
45
+ end
84
46
 
85
- def mri?
86
- RbConfig::CONFIG['ruby_install_name'] == 'ruby'
87
- end
47
+ def colorize_code(code)
48
+ CodeRay.scan(code, :ruby).term
49
+ end
88
50
 
89
- def mri_19?
90
- mri? && RUBY_VERSION =~ /^1\.9/
91
- end
51
+ def highlight(string, regexp, highlight_color=:bright_yellow)
52
+ string.gsub(regexp) { |match| "<#{highlight_color}>#{match}</#{highlight_color}>" }
53
+ end
92
54
 
93
- def mri_2?
94
- mri? && RUBY_VERSION =~ /^2/
95
- end
55
+ # formatting
56
+ def heading(text)
57
+ text = "#{text}\n--"
58
+ "\e[1m#{text}\e[0m"
59
+ end
96
60
 
97
- # Send the given text through the best available pager (if Pry.config.pager is
98
- # enabled). Infers where to send the output if used as a mixin.
99
- # DEPRECATED.
100
- def stagger_output(text, out = nil)
101
- if defined?(_pry_) && _pry_
102
- _pry_.pager.page text
103
- else
104
- Pry.new.pager.page text
105
- end
106
- end
61
+ # Send the given text through the best available pager (if Pry.config.pager is
62
+ # enabled). Infers where to send the output if used as a mixin.
63
+ # DEPRECATED.
64
+ def stagger_output(text, out = nil)
65
+ if defined?(_pry_) && _pry_
66
+ _pry_.pager.page text
67
+ else
68
+ Pry.new.pager.page text
107
69
  end
108
70
  end
109
71
  end
@@ -24,6 +24,16 @@ class Pry
24
24
  define_method "bright_#{color}" do |text|
25
25
  "\033[1;#{30+value}m#{text}\033[0m"
26
26
  end
27
+
28
+ COLORS.each_pair do |bg_color, bg_value|
29
+ define_method "#{color}_on_#{bg_color}" do |text|
30
+ "\033[0;#{30 + value};#{40 + bg_value}m#{text}\033[0m"
31
+ end
32
+
33
+ define_method "bright_#{color}_on_#{bg_color}" do |text|
34
+ "\033[1;#{30 + value};#{40 + bg_value}m#{text}\033[0m"
35
+ end
36
+ end
27
37
  end
28
38
 
29
39
  # Remove any color codes from _text_.
@@ -52,10 +62,13 @@ class Pry
52
62
  end
53
63
  alias_method :bright_default, :bold
54
64
 
55
- # Executes the block with `Pry.config.color` set to false.
65
+ #
56
66
  # @yield
67
+ # Yields a block with color turned off.
68
+ #
57
69
  # @return [void]
58
- def no_color(&block)
70
+ #
71
+ def no_color
59
72
  boolean = Pry.config.color
60
73
  Pry.config.color = false
61
74
  yield
@@ -63,10 +76,13 @@ class Pry
63
76
  Pry.config.color = boolean
64
77
  end
65
78
 
66
- # Executes the block with `Pry.config.pager` set to false.
79
+ #
67
80
  # @yield
81
+ # Yields a block with paging turned off.
82
+ #
68
83
  # @return [void]
69
- def no_pager(&block)
84
+ #
85
+ def no_pager
70
86
  boolean = Pry.config.pager
71
87
  Pry.config.pager = false
72
88
  yield
@@ -98,4 +114,3 @@ class Pry
98
114
  end
99
115
  end
100
116
  end
101
-
@@ -26,13 +26,17 @@ class Pry
26
26
  # @param [Binding] b
27
27
  # @return [Boolean]
28
28
  def normal_method?(method, b)
29
- method && (method.source_file && method.source_range rescue false) &&
30
- File.expand_path(method.source_file) == File.expand_path(b.eval('__FILE__')) &&
31
- method.source_range.include?(b.eval('__LINE__'))
29
+ if method and method.source_file and method.source_range
30
+ binding_file, binding_line = b.eval('__FILE__'), b.eval('__LINE__')
31
+ File.expand_path(method.source_file) == File.expand_path(binding_file) and
32
+ method.source_range.include?(binding_line)
33
+ end
34
+ rescue
35
+ false
32
36
  end
33
37
 
34
38
  def weird_method?(method, b)
35
- !normal_method?(method, b)
39
+ not normal_method?(method, b)
36
40
  end
37
41
  end
38
42
 
@@ -61,6 +65,11 @@ class Pry
61
65
 
62
66
  private
63
67
 
68
+ def skip_superclass_search?
69
+ target_mod = @target.eval('self').class
70
+ target_mod.ancestors.take_while {|mod| mod != target_mod }.any?
71
+ end
72
+
64
73
  def normal_method?(method)
65
74
  self.class.normal_method?(method, target)
66
75
  end
@@ -98,7 +107,9 @@ class Pry
98
107
  # superclass method.
99
108
  def find_method_in_superclass
100
109
  guess = method
101
-
110
+ if skip_superclass_search?
111
+ return guess
112
+ end
102
113
  while guess
103
114
  # needs rescue if this is a Disowned method or a C method or something...
104
115
  # TODO: Fix up the exception handling so we don't need a bare rescue
@@ -0,0 +1,93 @@
1
+ module Pry::Platform
2
+ extend self
3
+
4
+ #
5
+ # @return [Boolean]
6
+ # Returns true if Pry is running on Mac OSX.
7
+ #
8
+ # @note
9
+ # Queries RbConfig::CONFIG['host_os'] with a best guess.
10
+ #
11
+ def mac_osx?
12
+ !!(RbConfig::CONFIG['host_os'] =~ /\Adarwin/i)
13
+ end
14
+
15
+ #
16
+ # @return [Boolean]
17
+ # Returns true if Pry is running on Linux.
18
+ #
19
+ # @note
20
+ # Queries RbConfig::CONFIG['host_os'] with a best guess.
21
+ #
22
+ def linux?
23
+ !!(RbConfig::CONFIG['host_os'] =~ /linux/i)
24
+ end
25
+
26
+ #
27
+ # @return [Boolean]
28
+ # Returns true if Pry is running on Windows.
29
+ #
30
+ # @note
31
+ # Queries RbConfig::CONFIG['host_os'] with a best guess.
32
+ #
33
+ def windows?
34
+ !!(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/)
35
+ end
36
+
37
+ #
38
+ # @return [Boolean]
39
+ # Returns true when Pry is running on Windows with ANSI support.
40
+ #
41
+ def windows_ansi?
42
+ return false if not windows?
43
+ !!(defined?(Win32::Console) or ENV['ANSICON'] or mri_2?)
44
+ end
45
+
46
+ #
47
+ # @return [Boolean]
48
+ # Returns true when Pry is being run from JRuby.
49
+ #
50
+ def jruby?
51
+ RbConfig::CONFIG['ruby_install_name'] == 'jruby'
52
+ end
53
+
54
+ #
55
+ # @return [Boolean]
56
+ # Returns true when Pry is being run from JRuby in 1.9 mode.
57
+ #
58
+ def jruby_19?
59
+ jruby? and RbConfig::CONFIG['ruby_version'] == '1.9'
60
+ end
61
+
62
+ #
63
+ # @return [Boolean]
64
+ # Returns true when Pry is being run from Rubinius.
65
+ #
66
+ def rbx?
67
+ RbConfig::CONFIG['ruby_install_name'] == 'rbx'
68
+ end
69
+
70
+ #
71
+ # @return [Boolean]
72
+ # Returns true when Pry is being run from MRI (CRuby).
73
+ #
74
+ def mri?
75
+ RbConfig::CONFIG['ruby_install_name'] == 'ruby'
76
+ end
77
+
78
+ #
79
+ # @return [Boolean]
80
+ # Returns true when Pry is being run from MRI v1.9+ (CRuby).
81
+ #
82
+ def mri_19?
83
+ !!(mri? and RUBY_VERSION =~ /\A1\.9/)
84
+ end
85
+
86
+ #
87
+ # @return [Boolean]
88
+ # Returns true when Pry is being run from MRI v2+ (CRuby).
89
+ #
90
+ def mri_2?
91
+ !!(mri? and RUBY_VERSION =~ /\A2/)
92
+ end
93
+ end
@@ -0,0 +1,70 @@
1
+ # good idea ???
2
+ # if you're testing pry plugin you should require pry by yourself, no?
3
+ require 'pry' if not defined?(Pry)
4
+
5
+ module Pry::Testable
6
+ extend self
7
+ require_relative "testable/pry_tester"
8
+ require_relative "testable/evalable"
9
+ require_relative "testable/mockable"
10
+ require_relative "testable/variables"
11
+ require_relative "testable/utility"
12
+
13
+ #
14
+ # When {Pry::Testable} is included into another module or class,
15
+ # the following modules are also included: {Pry::Testable::Mockable},
16
+ # {Pry::Testable::Evalable}, {Pry::Testable::Variables}, and
17
+ # {Pry::Testable::Utility}.
18
+ #
19
+ # @note
20
+ # Each of the included modules mentioned above may also be used
21
+ # standalone or in a pick-and-mix fashion.
22
+ #
23
+ # @param [Module] mod
24
+ # A class or module.
25
+ #
26
+ # @return [void]
27
+ #
28
+ def self.included(mod)
29
+ mod.module_eval do
30
+ include Pry::Testable::Mockable
31
+ include Pry::Testable::Evalable
32
+ include Pry::Testable::Variables
33
+ include Pry::Testable::Utility
34
+ end
35
+ end
36
+
37
+ TEST_DEFAULTS = {
38
+ color: false,
39
+ pager: false,
40
+ should_load_rc: false,
41
+ should_load_local_rc: false,
42
+ correct_indent: false,
43
+ collison_warning: false,
44
+ history: {
45
+ should_load: false,
46
+ should_save: false
47
+ }
48
+ }
49
+ private_constant :TEST_DEFAULTS
50
+
51
+ #
52
+ # Sets various configuration options that make Pry optimal for a test
53
+ # environment, see source code for complete details.
54
+ #
55
+ # @return [void]
56
+ #
57
+ def self.set_testenv_variables
58
+ Pry.config = Pry::Config.from_hash(TEST_DEFAULTS, Pry::Config::Default.new)
59
+ Pry.config.hooks = Pry::Hooks.new
60
+ end
61
+
62
+ #
63
+ # Reset the Pry configuration to their default values.
64
+ #
65
+ # @return [void]
66
+ #
67
+ def self.unset_testenv_variables
68
+ Pry.config = Pry::Config.from_hash({}, Pry::Config::Default.new)
69
+ end
70
+ end
@@ -0,0 +1,15 @@
1
+ module Pry::Testable::Evalable
2
+ def pry_tester(*args, &block)
3
+ if args.length == 0 || args[0].is_a?(Hash)
4
+ args.unshift(Pry.toplevel_binding)
5
+ end
6
+ Pry::Testable::PryTester.new(*args).tap do |t|
7
+ t.singleton_class.class_eval(&block) if block
8
+ end
9
+ end
10
+
11
+ def pry_eval(*eval_strs)
12
+ b = String === eval_strs.first ? Pry.toplevel_binding : Pry.binding_for(eval_strs.shift)
13
+ pry_tester(b).eval(*eval_strs)
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module Pry::Testable::Mockable
2
+ def mock_command(cmd, args=[], opts={})
3
+ output = StringIO.new
4
+ pry = Pry.new(output: output)
5
+ ret = cmd.new(opts.merge(pry_instance: pry, :output => output)).call_safely(*args)
6
+ Struct.new(:output, :return).new(output.string, ret)
7
+ end
8
+
9
+ def mock_exception(*mock_backtrace)
10
+ StandardError.new.tap do |e|
11
+ e.define_singleton_method(:backtrace) { mock_backtrace }
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,73 @@
1
+ class Pry::Testable::PryTester
2
+ extend Pry::Forwardable
3
+ attr_reader :pry, :out
4
+ def_delegators :@pry, :eval_string, :eval_string=
5
+
6
+ def initialize(target = TOPLEVEL_BINDING, options = {})
7
+ @pry = Pry.new(options.merge(:target => target))
8
+ @history = options[:history]
9
+ @pry.inject_sticky_locals!
10
+ reset_output
11
+ end
12
+
13
+ def eval(*strs)
14
+ reset_output
15
+ result = nil
16
+
17
+ strs.flatten.each do |str|
18
+ # Check for space prefix. See #1369.
19
+ if str !~ /^\s\S/
20
+ str = "#{str.strip}\n"
21
+ end
22
+ @history.push str if @history
23
+
24
+ if @pry.process_command(str)
25
+ result = last_command_result_or_output
26
+ else
27
+ result = @pry.evaluate_ruby(str)
28
+ end
29
+ end
30
+
31
+ result
32
+ end
33
+
34
+ def push(*lines)
35
+ Array(lines).flatten.each do |line|
36
+ @pry.eval(line)
37
+ end
38
+ end
39
+
40
+ def push_binding(context)
41
+ @pry.push_binding context
42
+ end
43
+
44
+ def last_output
45
+ @out.string if @out
46
+ end
47
+
48
+ def process_command(command_str)
49
+ @pry.process_command(command_str) or raise "Not a valid command"
50
+ last_command_result_or_output
51
+ end
52
+
53
+ def last_command_result
54
+ result = Pry.current[:pry_cmd_result]
55
+ result.retval if result
56
+ end
57
+
58
+ protected
59
+
60
+ def last_command_result_or_output
61
+ result = last_command_result
62
+ if result != Pry::Command::VOID_VALUE
63
+ result
64
+ else
65
+ last_output
66
+ end
67
+ end
68
+
69
+ def reset_output
70
+ @out = StringIO.new
71
+ @pry.output = @out
72
+ end
73
+ end
@@ -0,0 +1,26 @@
1
+ module Pry::Testable::Utility
2
+ #
3
+ # Creates a Tempfile then unlinks it after the block has yielded.
4
+ #
5
+ # @yieldparam [String] file
6
+ # The path of the temp file
7
+ #
8
+ # @return [void]
9
+ #
10
+ def temp_file(ext='.rb')
11
+ file = Tempfile.open(['pry', ext])
12
+ yield file
13
+ ensure
14
+ file.close(true) if file
15
+ end
16
+
17
+ def unindent(*args)
18
+ Pry::Helpers::CommandHelpers.unindent(*args)
19
+ end
20
+
21
+ def inner_scope
22
+ catch(:inner_scope) do
23
+ yield ->{ throw(:inner_scope, self) }
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,46 @@
1
+ module Pry::Testable::Variables
2
+ #
3
+ # @example
4
+ # temporary_constants(:Foo, :Bar) do
5
+ # Foo = Class.new(RuntimeError)
6
+ # Bar = Class.new(RuntimeError)
7
+ # end
8
+ # Foo # => NameError
9
+ # Bar # => NameError
10
+ #
11
+ # @param [Array<Symbol>] *names
12
+ # An array of constant names that be defined by a block,
13
+ # and removed by this method afterwards.
14
+ #
15
+ # @return [void]
16
+ #
17
+ def temporary_constants(*names)
18
+ names.each do |name|
19
+ Object.remove_const name if Object.const_defined?(name)
20
+ end
21
+ yield
22
+ ensure
23
+ names.each do |name|
24
+ Object.remove_const name if Object.const_defined?(name)
25
+ end
26
+ end
27
+
28
+ #
29
+ # @param [String] name
30
+ # The name of a variable.
31
+ #
32
+ # @param [String] value
33
+ # Its value.
34
+ #
35
+ # @param [Binding] b
36
+ # The binding object to insert a variable into.
37
+ #
38
+ # @return [void]
39
+ #
40
+ def insert_variable(name, value, b)
41
+ Pry.current[:pry_local] = value
42
+ b.eval("#{name} = ::Pry.current[:pry_local]")
43
+ ensure
44
+ Pry.current[:pry_local] = nil
45
+ end
46
+ end
@@ -1,3 +1,3 @@
1
1
  class Pry
2
- VERSION = "0.11.2"
2
+ VERSION = "0.11.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.11.3
5
5
  platform: java
6
6
  authors:
7
7
  - John Mair (banisterfiend)
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-10-18 00:00:00.000000000 Z
13
+ date: 2017-11-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: coderay
@@ -199,6 +199,7 @@ files:
199
199
  - lib/pry/object_path.rb
200
200
  - lib/pry/output.rb
201
201
  - lib/pry/pager.rb
202
+ - lib/pry/platform.rb
202
203
  - lib/pry/plugins.rb
203
204
  - lib/pry/prompt.rb
204
205
  - lib/pry/pry_class.rb
@@ -212,7 +213,12 @@ files:
212
213
  - lib/pry/slop/commands.rb
213
214
  - lib/pry/slop/option.rb
214
215
  - lib/pry/terminal.rb
215
- - lib/pry/test/helper.rb
216
+ - lib/pry/testable.rb
217
+ - lib/pry/testable/evalable.rb
218
+ - lib/pry/testable/mockable.rb
219
+ - lib/pry/testable/pry_tester.rb
220
+ - lib/pry/testable/utility.rb
221
+ - lib/pry/testable/variables.rb
216
222
  - lib/pry/version.rb
217
223
  - lib/pry/wrapped_module.rb
218
224
  - lib/pry/wrapped_module/candidate.rb
@@ -236,7 +242,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
242
  version: '0'
237
243
  requirements: []
238
244
  rubyforge_project:
239
- rubygems_version: 2.5.1
245
+ rubygems_version: 2.6.13
240
246
  signing_key:
241
247
  specification_version: 4
242
248
  summary: An IRB alternative and runtime developer console
@@ -1,179 +0,0 @@
1
- require 'pry'
2
-
3
- # in case the tests call reset_defaults, ensure we reset them to
4
- # amended (test friendly) values
5
- class << Pry
6
- alias_method :orig_reset_defaults, :reset_defaults
7
- def reset_defaults
8
- orig_reset_defaults
9
-
10
- Pry.config.color = false
11
- Pry.config.pager = false
12
- Pry.config.should_load_rc = false
13
- Pry.config.should_load_local_rc= false
14
- Pry.config.should_load_plugins = false
15
- Pry.config.history.should_load = false
16
- Pry.config.history.should_save = false
17
- Pry.config.correct_indent = false
18
- Pry.config.hooks = Pry::Hooks.new
19
- Pry.config.collision_warning = false
20
- end
21
- end
22
- Pry.reset_defaults
23
-
24
- # A global space for storing temporary state during tests.
25
-
26
- module PryTestHelpers
27
-
28
- module_function
29
-
30
- # inject a variable into a binding
31
- def inject_var(name, value, b)
32
- Pry.current[:pry_local] = value
33
- b.eval("#{name} = ::Pry.current[:pry_local]")
34
- ensure
35
- Pry.current[:pry_local] = nil
36
- end
37
-
38
- def constant_scope(*names)
39
- names.each do |name|
40
- Object.remove_const name if Object.const_defined?(name)
41
- end
42
-
43
- yield
44
- ensure
45
- names.each do |name|
46
- Object.remove_const name if Object.const_defined?(name)
47
- end
48
- end
49
-
50
- # Open a temp file and yield it to the block, closing it after
51
- # @return [String] The path of the temp file
52
- def temp_file(ext='.rb')
53
- file = Tempfile.new(['pry', ext])
54
- yield file
55
- ensure
56
- file.close(true) if file
57
- File.unlink("#{file.path}c") if File.exist?("#{file.path}c") # rbx
58
- end
59
-
60
- def unindent(*args)
61
- Pry::Helpers::CommandHelpers.unindent(*args)
62
- end
63
-
64
- def mock_command(cmd, args=[], opts={})
65
- output = StringIO.new
66
- pry = Pry.new(output: output)
67
- ret = cmd.new(opts.merge(pry_instance: pry, :output => output)).call_safely(*args)
68
- Struct.new(:output, :return).new(output.string, ret)
69
- end
70
-
71
- def mock_exception(*mock_backtrace)
72
- StandardError.new.tap do |e|
73
- e.define_singleton_method(:backtrace) { mock_backtrace }
74
- end
75
- end
76
-
77
- def inner_scope
78
- catch(:inner_scope) do
79
- yield ->{ throw(:inner_scope, self) }
80
- end
81
- end
82
- end
83
-
84
- def pry_tester(*args, &block)
85
- if args.length == 0 || args[0].is_a?(Hash)
86
- args.unshift(Pry.toplevel_binding)
87
- end
88
-
89
- PryTester.new(*args).tap do |t|
90
- (class << t; self; end).class_eval(&block) if block
91
- end
92
- end
93
-
94
- def pry_eval(*eval_strs)
95
- if eval_strs.first.is_a? String
96
- binding = Pry.toplevel_binding
97
- else
98
- binding = Pry.binding_for(eval_strs.shift)
99
- end
100
-
101
- pry_tester(binding).eval(*eval_strs)
102
- end
103
-
104
- class PryTester
105
- extend Pry::Forwardable
106
-
107
- attr_reader :pry, :out
108
-
109
- def_delegators :@pry, :eval_string, :eval_string=
110
-
111
- def initialize(target = TOPLEVEL_BINDING, options = {})
112
- @pry = Pry.new(options.merge(:target => target))
113
- @history = options[:history]
114
-
115
- @pry.inject_sticky_locals!
116
- reset_output
117
- end
118
-
119
- def eval(*strs)
120
- reset_output
121
- result = nil
122
-
123
- strs.flatten.each do |str|
124
- # Check for space prefix. See #1369.
125
- if str !~ /^\s\S/
126
- str = "#{str.strip}\n"
127
- end
128
- @history.push str if @history
129
-
130
- if @pry.process_command(str)
131
- result = last_command_result_or_output
132
- else
133
- result = @pry.evaluate_ruby(str)
134
- end
135
- end
136
-
137
- result
138
- end
139
-
140
- def push(*lines)
141
- Array(lines).flatten.each do |line|
142
- @pry.eval(line)
143
- end
144
- end
145
-
146
- def push_binding(context)
147
- @pry.push_binding context
148
- end
149
-
150
- def last_output
151
- @out.string if @out
152
- end
153
-
154
- def process_command(command_str)
155
- @pry.process_command(command_str) or raise "Not a valid command"
156
- last_command_result_or_output
157
- end
158
-
159
- def last_command_result
160
- result = Pry.current[:pry_cmd_result]
161
- result.retval if result
162
- end
163
-
164
- protected
165
-
166
- def last_command_result_or_output
167
- result = last_command_result
168
- if result != Pry::Command::VOID_VALUE
169
- result
170
- else
171
- last_output
172
- end
173
- end
174
-
175
- def reset_output
176
- @out = StringIO.new
177
- @pry.output = @out
178
- end
179
- end