pry-stack_explorer 0.4.7 → 0.4.8pre1

Sign up to get free protection for your applications and to get access to all the features.
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