peeek 1.0.1

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.
@@ -0,0 +1,78 @@
1
+ def hook_stub(attrs = {})
2
+ stub('Peeek::Hook').tap do |s|
3
+ calls = Array.new(attrs[:calls] || 0)
4
+ defined = attrs[:defined] || true
5
+ linked = attrs[:linked] || false
6
+
7
+ s.stub!(:object => attrs[:object])
8
+ s.stub!(:method_name => attrs[:method_name])
9
+ s.stub!(:calls => calls)
10
+ s.stub!(:defined?).and_return { defined }
11
+ s.stub!(:linked?).and_return { linked }
12
+
13
+ s.stub!(:link).and_return do
14
+ linked = true
15
+ s
16
+ end
17
+
18
+ s.stub!(:unlink).and_return do
19
+ linked = false
20
+ s
21
+ end
22
+ end
23
+ end
24
+
25
+ def instance_linker_stub(object, method_name)
26
+ original_method = object.instance_method(method_name)
27
+ linker = stub('Peeek::Hook::Linker', :link => original_method, :unlink => nil)
28
+ [linker, original_method]
29
+ end
30
+
31
+ def call_stub(result, attrs = {})
32
+ attrs = attrs.merge(
33
+ :returned? => result == :return_value,
34
+ :raised? => result == :exception
35
+ )
36
+
37
+ stub('Peeek::Call', attrs)
38
+ end
39
+
40
+ def one_or_more(array)
41
+ array.should_not be_empty
42
+ array
43
+ end
44
+
45
+ class SupervisionMatcher
46
+ def initialize(purpose)
47
+ @purpose = purpose
48
+ end
49
+
50
+ def matches?(object)
51
+ @object = object
52
+ callback_name = {:instance => :method_added, :singleton => :singleton_method_added}[@purpose]
53
+ method = object.method(callback_name)
54
+ require 'ruby18_source_location' unless method.respond_to?(:source_location)
55
+ source_location = method.source_location
56
+ !!(source_location && source_location[0].include?('lib/peeek/supervisor.rb'))
57
+ end
58
+
59
+ def description
60
+ "be supervised for #{@purpose} method"
61
+ end
62
+
63
+ def failure_message
64
+ "#{@object.inspect} should be supervised for #{@purpose} method, but not supervised"
65
+ end
66
+
67
+ def negative_failure_message
68
+ "#{@object.inspect} should not be supervised for #{@purpose} method, but supervised"
69
+ end
70
+ end
71
+
72
+ def be_supervised_for_instance
73
+ SupervisionMatcher.new(:instance)
74
+ end
75
+
76
+ def be_supervised_for_singleton
77
+ SupervisionMatcher.new(:singleton)
78
+ end
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: peeek
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Takahiro Kondo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Peek at calls of a method
56
+ email:
57
+ - heartery@gmail.com
58
+ executables:
59
+ - peeek
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - bin/peeek
69
+ - lib/peeek.rb
70
+ - lib/peeek/call.rb
71
+ - lib/peeek/calls.rb
72
+ - lib/peeek/hook.rb
73
+ - lib/peeek/hook/instance.rb
74
+ - lib/peeek/hook/linker.rb
75
+ - lib/peeek/hook/singleton.rb
76
+ - lib/peeek/hooks.rb
77
+ - lib/peeek/supervisor.rb
78
+ - lib/peeek/version.rb
79
+ - peeek.gemspec
80
+ - spec/peeek/call_spec.rb
81
+ - spec/peeek/calls_spec.rb
82
+ - spec/peeek/hook/instance_spec.rb
83
+ - spec/peeek/hook/linker_spec.rb
84
+ - spec/peeek/hook/singleton_spec.rb
85
+ - spec/peeek/hook_spec.rb
86
+ - spec/peeek/hooks_spec.rb
87
+ - spec/peeek/supervisor_spec.rb
88
+ - spec/peeek_spec.rb
89
+ - spec/spec_helper.rb
90
+ homepage: https://github.com/takkkun/peeek
91
+ licenses:
92
+ - MIT
93
+ metadata: {}
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: 1.8.7
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 2.0.2
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: Peek at calls of a method
114
+ test_files:
115
+ - spec/peeek/call_spec.rb
116
+ - spec/peeek/calls_spec.rb
117
+ - spec/peeek/hook/instance_spec.rb
118
+ - spec/peeek/hook/linker_spec.rb
119
+ - spec/peeek/hook/singleton_spec.rb
120
+ - spec/peeek/hook_spec.rb
121
+ - spec/peeek/hooks_spec.rb
122
+ - spec/peeek/supervisor_spec.rb
123
+ - spec/peeek_spec.rb
124
+ - spec/spec_helper.rb
125
+ has_rdoc: