pry-stack_explorer 0.4.7 → 0.4.8pre1

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.
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ direc = File.dirname(__FILE__)
6
6
  PROJECT_NAME = "pry-stack_explorer"
7
7
 
8
8
  require 'rake/clean'
9
- require 'rake/gempackagetask'
9
+ require 'rubygems/package_task'
10
10
  require "#{PROJECT_NAME}/version"
11
11
 
12
12
  CLOBBER.include("**/*~", "**/*#*", "**/*.log")
@@ -72,7 +72,7 @@ namespace :ruby do
72
72
  s.platform = Gem::Platform::RUBY
73
73
  end
74
74
 
75
- Rake::GemPackageTask.new(spec) do |pkg|
75
+ Gem::PackageTask.new(spec) do |pkg|
76
76
  pkg.need_zip = false
77
77
  pkg.need_tar = false
78
78
  end
@@ -97,6 +97,8 @@ task :reinstall => :gems do
97
97
  sh "gem install #{direc}/pkg/#{PROJECT_NAME}-#{PryStackExplorer::VERSION}.gem"
98
98
  end
99
99
 
100
+ task :install => :reinstall
101
+
100
102
  desc "build and push latest gems"
101
103
  task :pushgems => :gems do
102
104
  chdir("#{File.dirname(__FILE__)}/pkg") do
@@ -106,4 +108,4 @@ task :pushgems => :gems do
106
108
  end
107
109
  end
108
110
 
109
-
111
+ task :pushgem => :pushgems
@@ -1,3 +1,3 @@
1
1
  module PryStackExplorer
2
- VERSION = "0.4.7"
2
+ VERSION = "0.4.8pre1"
3
3
  end
@@ -1,13 +1,14 @@
1
1
  module PryStackExplorer
2
2
  class WhenStartedHook
3
+ include Pry::Helpers::BaseHelpers
3
4
 
4
5
  def caller_bindings(target)
5
6
  bindings = binding.callers
6
7
 
7
8
  start_frames = bindings.each_with_index.select do |b, i|
8
9
  b.frame_type == :method &&
9
- b.eval("self") == Pry &&
10
- b.eval("__method__") == :start
10
+ safe_send(b.eval("self"), :equal?, Pry) &&
11
+ safe_send(b.eval("__method__"), :==, :start)
11
12
  end
12
13
 
13
14
  start_frame_index = start_frames.first.last
@@ -16,21 +17,21 @@ module PryStackExplorer
16
17
  idx1, idx2 = start_frames.take(2).map(&:last)
17
18
 
18
19
  is_nested_session = bindings[idx1..idx2].detect do |b|
19
- b.eval("__method__") == :re &&
20
- b.eval("self.class") == Pry
20
+ safe_send(b.eval("__method__"), :==, :re) &&
21
+ safe_send(b.eval("self.class"), :equal?, Pry)
21
22
  end
22
23
 
23
24
  start_frame_index = idx2 if !is_nested_session
24
25
  end
25
26
 
26
27
  bindings = bindings.drop(start_frame_index + 1)
27
-
28
- bindings = bindings.drop(1) if bindings.first.eval("__method__") == :pry
29
- bindings = bindings.drop_while { |b| b.eval("self.inspect") =~ /PryNav/ }
28
+ bindings = bindings.drop_while { |b| b.eval("__FILE__") =~ /pry-(?:nav|debugger)/ }
29
+ bindings = bindings.drop(1) if safe_send(bindings.first.eval("__method__"), :==, :pry)
30
30
 
31
31
  # Use the binding returned by #of_caller if possible (as we get
32
32
  # access to frame_type).
33
33
  # Otherwise stick to the given binding (target).
34
+
34
35
  if !PryStackExplorer.bindings_equal?(target, bindings.first)
35
36
  bindings.shift
36
37
  bindings.unshift(target)
@@ -106,7 +106,7 @@ module PryStackExplorer
106
106
  # @param [Binding] b2 Second binding.
107
107
  # @return [Boolean] Whether the `Binding`s are equal.
108
108
  def bindings_equal?(b1, b2)
109
- (b1.eval('self') == b2.eval('self')) &&
109
+ (b1.eval('self').equal?(b2.eval('self'))) &&
110
110
  (b1.eval('__method__') == b2.eval('__method__')) &&
111
111
  (b1.eval('local_variables').map { |v| b1.eval("#{v}") } ==
112
112
  b2.eval('local_variables').map { |v| b2.eval("#{v}") })
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "pry-stack_explorer"
5
- s.version = "0.4.7"
5
+ s.version = "0.4.8pre1"
6
6
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["John Mair (banisterfiend)"]
9
- s.date = "2012-10-04"
9
+ s.date = "2013-01-30"
10
10
  s.description = "Walk the stack in a Pry session"
11
11
  s.email = "jrmair@gmail.com"
12
12
  s.files = [".gemtest", ".gitignore", ".travis.yml", ".yardopts", "CHANGELOG", "Gemfile", "LICENSE", "README.md", "Rakefile", "examples/example.rb", "examples/example2.rb", "examples/example3.rb", "lib/pry-stack_explorer.rb", "lib/pry-stack_explorer/commands.rb", "lib/pry-stack_explorer/frame_manager.rb", "lib/pry-stack_explorer/version.rb", "lib/pry-stack_explorer/when_started_hook.rb", "pry-stack_explorer.gemspec", "test/helper.rb", "test/test_commands.rb", "test/test_frame_manager.rb", "test/test_stack_explorer.rb", "tester.rb"]
13
13
  s.homepage = "https://github.com/banister"
14
14
  s.require_paths = ["lib"]
15
- s.rubygems_version = "1.8.15"
15
+ s.rubygems_version = "1.8.24"
16
16
  s.summary = "Walk the stack in a Pry session"
17
17
  s.test_files = ["test/helper.rb", "test/test_commands.rb", "test/test_frame_manager.rb", "test/test_stack_explorer.rb"]
18
18
 
@@ -84,6 +84,19 @@ describe PryStackExplorer do
84
84
  o.frame.should == :beta
85
85
  end
86
86
 
87
+ # regression test for #12
88
+ it 'does not infinite loop when pry is started in MyObject#==' do
89
+ o = Object.new
90
+ def o.==(other)
91
+ binding.pry
92
+ end
93
+
94
+ redirect_pry_io(InputTester.new(":hello", "exit-all"), out=StringIO.new) do
95
+ o.==(1)
96
+ end
97
+
98
+ out.string.should =~ /hello/
99
+ end
87
100
  end
88
101
 
89
102
  describe ":call_stack option" do
@@ -375,7 +388,6 @@ describe PryStackExplorer do
375
388
  p1.backtrace.should == "my backtrace1"
376
389
  end
377
390
  end
378
-
379
391
  end
380
392
  end
381
393
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-stack_explorer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
5
- prerelease:
4
+ version: 0.4.8pre1
5
+ prerelease: 5
6
6
  platform: ruby
7
7
  authors:
8
8
  - John Mair (banisterfiend)
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-04 00:00:00.000000000 Z
12
+ date: 2013-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: binding_of_caller
16
- requirement: &70257163759380 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.6.8
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70257163759380
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.6.8
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: bacon
27
- requirement: &70257163758760 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 1.1.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70257163758760
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.0
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rake
38
- requirement: &70257163758240 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,7 +53,12 @@ dependencies:
43
53
  version: '0.9'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70257163758240
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
47
62
  description: Walk the stack in a Pry session
48
63
  email: jrmair@gmail.com
49
64
  executables: []
@@ -88,12 +103,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
103
  required_rubygems_version: !ruby/object:Gem::Requirement
89
104
  none: false
90
105
  requirements:
91
- - - ! '>='
106
+ - - ! '>'
92
107
  - !ruby/object:Gem::Version
93
- version: '0'
108
+ version: 1.3.1
94
109
  requirements: []
95
110
  rubyforge_project:
96
- rubygems_version: 1.8.15
111
+ rubygems_version: 1.8.24
97
112
  signing_key:
98
113
  specification_version: 3
99
114
  summary: Walk the stack in a Pry session