private_please 0.0.3 → 0.0.4
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/.gitignore +0 -1
- data/.travis.yml +10 -0
- data/CHANGELOG +8 -0
- data/README.md +92 -42
- data/bin/pp_ruby +62 -0
- data/bin/ruby_pp +62 -0
- data/doc/dev_notes.txt +32 -0
- data/doc/fixtures/complex.rb +103 -0
- data/doc/fixtures/empty_class.rb +7 -0
- data/doc/fixtures/fixture_helper.rb +8 -0
- data/doc/fixtures/sample.rb +57 -0
- data/lib/private_please/candidate.rb +10 -2
- data/lib/private_please/report/table.rb +44 -0
- data/lib/private_please/report.rb +6 -0
- data/lib/private_please/reporter/base.rb +28 -0
- data/lib/private_please/reporter/helpers/options_helpers.rb +12 -0
- data/lib/private_please/reporter/helpers/text_table_helpers.rb +9 -0
- data/lib/private_please/{report/reporter.rb → reporter/simple_text.rb} +12 -18
- data/lib/private_please/reporter/templates/simple.txt.erb +77 -0
- data/lib/private_please/reporter.rb +8 -0
- data/lib/private_please/storage/methods_names.rb +1 -0
- data/lib/private_please/storage.rb +8 -0
- data/lib/private_please/tracking/extension.rb +3 -10
- data/lib/private_please/tracking/instrumentor.rb +13 -35
- data/lib/private_please/tracking/instruments_all_methods_below.rb +28 -0
- data/lib/private_please/tracking/instruments_automatically_all_methods_in_all_classes.rb +52 -0
- data/lib/private_please/tracking/line_change_tracker.rb +8 -18
- data/lib/private_please/tracking/utils.rb +34 -0
- data/lib/private_please/tracking.rb +48 -0
- data/lib/private_please/version.rb +1 -1
- data/lib/private_please.rb +27 -44
- data/private_please.gemspec +7 -1
- data/spec/{01_marking_candidate_methods_to_observe_spec.rb → 01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb} +35 -70
- data/spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb +187 -0
- data/spec/{02_logging_calls_on_candidate_methods_spec.rb → 03_logging_calls_on_candidate_methods_spec.rb} +2 -4
- data/spec/04_instrumented_program_activity_observation_result_spec.rb +2 -5
- data/spec/05_reporting/report_table_spec.rb +51 -0
- data/spec/06_at_exit_spec.rb +18 -0
- data/spec/fixtures/bug_22.rb +17 -0
- data/spec/fixtures/sample_class_for_report.rb +2 -0
- data/spec/sandbox/Gemfile +4 -0
- data/spec/sandbox/Gemfile.lock +14 -0
- data/spec/sandbox/README.txt +26 -0
- data/spec/sandbox/normal.rb +7 -0
- data/spec/sandbox/normal_prepended_with_require.rb +8 -0
- data/spec/spec_helper.rb +6 -2
- metadata +50 -13
- data/lib/private_please/report/templates/simple.txt.erb +0 -61
- data/lib/private_please/tracking/instruments_all_below.rb +0 -41
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: private_please
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alain Ravet
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-04
|
18
|
+
date: 2013-05-04 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -77,8 +77,9 @@ dependencies:
|
|
77
77
|
description: Test if methods can be made private
|
78
78
|
email:
|
79
79
|
- alainravet@gmail.com
|
80
|
-
executables:
|
81
|
-
|
80
|
+
executables:
|
81
|
+
- pp_ruby
|
82
|
+
- ruby_pp
|
82
83
|
extensions: []
|
83
84
|
|
84
85
|
extra_rdoc_files: []
|
@@ -87,6 +88,7 @@ files:
|
|
87
88
|
- .gitignore
|
88
89
|
- .rspec
|
89
90
|
- .ruby-version
|
91
|
+
- .travis.yml
|
90
92
|
- CHANGELOG
|
91
93
|
- Gemfile
|
92
94
|
- Guardfile
|
@@ -94,27 +96,53 @@ files:
|
|
94
96
|
- README.md
|
95
97
|
- Rakefile
|
96
98
|
- TODO
|
99
|
+
- bin/pp_ruby
|
100
|
+
- bin/ruby_pp
|
101
|
+
- doc/dev_notes.txt
|
102
|
+
- doc/fixtures/complex.rb
|
103
|
+
- doc/fixtures/empty_class.rb
|
104
|
+
- doc/fixtures/fixture_helper.rb
|
105
|
+
- doc/fixtures/sample.rb
|
97
106
|
- lib/private_please.rb
|
98
107
|
- lib/private_please/candidate.rb
|
99
|
-
- lib/private_please/report
|
100
|
-
- lib/private_please/report/
|
108
|
+
- lib/private_please/report.rb
|
109
|
+
- lib/private_please/report/table.rb
|
110
|
+
- lib/private_please/reporter.rb
|
111
|
+
- lib/private_please/reporter/base.rb
|
112
|
+
- lib/private_please/reporter/helpers/options_helpers.rb
|
113
|
+
- lib/private_please/reporter/helpers/text_table_helpers.rb
|
114
|
+
- lib/private_please/reporter/simple_text.rb
|
115
|
+
- lib/private_please/reporter/templates/simple.txt.erb
|
101
116
|
- lib/private_please/ruby_backports.rb
|
117
|
+
- lib/private_please/storage.rb
|
102
118
|
- lib/private_please/storage/calls_store.rb
|
103
119
|
- lib/private_please/storage/candidates_store.rb
|
104
120
|
- lib/private_please/storage/methods_names.rb
|
105
121
|
- lib/private_please/storage/methods_names_bucket.rb
|
122
|
+
- lib/private_please/tracking.rb
|
106
123
|
- lib/private_please/tracking/extension.rb
|
107
124
|
- lib/private_please/tracking/instrumentor.rb
|
108
|
-
- lib/private_please/tracking/
|
125
|
+
- lib/private_please/tracking/instruments_all_methods_below.rb
|
126
|
+
- lib/private_please/tracking/instruments_automatically_all_methods_in_all_classes.rb
|
109
127
|
- lib/private_please/tracking/line_change_tracker.rb
|
128
|
+
- lib/private_please/tracking/utils.rb
|
110
129
|
- lib/private_please/version.rb
|
111
130
|
- private_please.gemspec
|
112
131
|
- sample.rb
|
113
|
-
- spec/
|
114
|
-
- spec/
|
132
|
+
- spec/01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb
|
133
|
+
- spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb
|
134
|
+
- spec/03_logging_calls_on_candidate_methods_spec.rb
|
115
135
|
- spec/04_instrumented_program_activity_observation_result_spec.rb
|
136
|
+
- spec/05_reporting/report_table_spec.rb
|
137
|
+
- spec/06_at_exit_spec.rb
|
138
|
+
- spec/fixtures/bug_22.rb
|
116
139
|
- spec/fixtures/sample_class_for_report.rb
|
117
140
|
- spec/fixtures/sample_class_with_all_calls_combinations.rb
|
141
|
+
- spec/sandbox/Gemfile
|
142
|
+
- spec/sandbox/Gemfile.lock
|
143
|
+
- spec/sandbox/README.txt
|
144
|
+
- spec/sandbox/normal.rb
|
145
|
+
- spec/sandbox/normal_prepended_with_require.rb
|
118
146
|
- spec/spec_helper.rb
|
119
147
|
- spec/units/calls_store_spec.rb
|
120
148
|
- spec/units/candidates_store_spec.rb
|
@@ -153,11 +181,20 @@ signing_key:
|
|
153
181
|
specification_version: 3
|
154
182
|
summary: Test if methods can be made private
|
155
183
|
test_files:
|
156
|
-
- spec/
|
157
|
-
- spec/
|
184
|
+
- spec/01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb
|
185
|
+
- spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb
|
186
|
+
- spec/03_logging_calls_on_candidate_methods_spec.rb
|
158
187
|
- spec/04_instrumented_program_activity_observation_result_spec.rb
|
188
|
+
- spec/05_reporting/report_table_spec.rb
|
189
|
+
- spec/06_at_exit_spec.rb
|
190
|
+
- spec/fixtures/bug_22.rb
|
159
191
|
- spec/fixtures/sample_class_for_report.rb
|
160
192
|
- spec/fixtures/sample_class_with_all_calls_combinations.rb
|
193
|
+
- spec/sandbox/Gemfile
|
194
|
+
- spec/sandbox/Gemfile.lock
|
195
|
+
- spec/sandbox/README.txt
|
196
|
+
- spec/sandbox/normal.rb
|
197
|
+
- spec/sandbox/normal_prepended_with_require.rb
|
161
198
|
- spec/spec_helper.rb
|
162
199
|
- spec/units/calls_store_spec.rb
|
163
200
|
- spec/units/candidates_store_spec.rb
|
@@ -1,61 +0,0 @@
|
|
1
|
-
====================================================================================
|
2
|
-
= PrivatePlease report : =
|
3
|
-
====================================================================================
|
4
|
-
% @candidates_classes_names .sort.each do |class_name|
|
5
|
-
%
|
6
|
-
% good_lines =
|
7
|
-
% [good_candidates_c.get_methods_names(class_name).collect{|n|".#{n}"},
|
8
|
-
% good_candidates .get_methods_names(class_name).collect{|n|"##{n}"}
|
9
|
-
% ].reject(&:empty?)
|
10
|
-
% good_lines.insert(1, '') if good_lines.length == 2
|
11
|
-
% good_lines.flatten!
|
12
|
-
%
|
13
|
-
% bad_lines =
|
14
|
-
% [bad_candidates_c.get_methods_names(class_name).collect{|n|".#{n}"},
|
15
|
-
% bad_candidates .get_methods_names(class_name).collect{|n|"##{n}"}
|
16
|
-
% ].reject(&:empty?)
|
17
|
-
% bad_lines.insert(1, '') if bad_lines.length == 2
|
18
|
-
% bad_lines.flatten!
|
19
|
-
|
20
|
-
% never_called_lines =
|
21
|
-
% [never_called_candidates_c.get_methods_names(class_name).collect{|n|".#{n}"},
|
22
|
-
% never_called_candidates .get_methods_names(class_name).collect{|n|"##{n}"}
|
23
|
-
% ]
|
24
|
-
% never_called_lines.insert(1, '') if never_called_lines.length == 2
|
25
|
-
|
26
|
-
%
|
27
|
-
**********************************************************
|
28
|
-
<%= class_name
|
29
|
-
%>
|
30
|
-
**********************************************************
|
31
|
-
%
|
32
|
-
% unless good_lines.empty?
|
33
|
-
|
34
|
-
* Good candidates : can be made private :
|
35
|
-
------------------------------------------
|
36
|
-
|
37
|
-
% good_lines.each do |line|
|
38
|
-
<%= line %>
|
39
|
-
% end
|
40
|
-
% end
|
41
|
-
% unless bad_lines.empty?
|
42
|
-
|
43
|
-
* Bad candidates : must stay public/protected
|
44
|
-
------------------------------------------
|
45
|
-
|
46
|
-
% bad_lines.each do |line|
|
47
|
-
<%= line %>
|
48
|
-
% end
|
49
|
-
% end
|
50
|
-
%
|
51
|
-
% unless never_called_lines.empty?
|
52
|
-
|
53
|
-
* Methods that were never called
|
54
|
-
------------------------------------------
|
55
|
-
% never_called_lines.each do |line|
|
56
|
-
<%= line %>
|
57
|
-
% end
|
58
|
-
% end
|
59
|
-
|
60
|
-
% end
|
61
|
-
====================================================================================
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# Usage :
|
2
|
-
# class MarkingTest::Automatic2
|
3
|
-
# def foo ; end <---- but not this one.
|
4
|
-
# include PrivatePlease::Tracking::InstrumentsAllBelow <-- add this line
|
5
|
-
#
|
6
|
-
# def baz ; end <---- to observe this method
|
7
|
-
# protected
|
8
|
-
# def self.qux ; end <---- and this one too
|
9
|
-
# end
|
10
|
-
|
11
|
-
module PrivatePlease ; module Tracking
|
12
|
-
|
13
|
-
module InstrumentsAllBelow
|
14
|
-
include PrivatePlease::Tracking::Extension
|
15
|
-
|
16
|
-
def self.included(base)
|
17
|
-
|
18
|
-
def base.singleton_method_added(method_name)
|
19
|
-
return if [:method_added, :singleton_method_added].include?(method_name)
|
20
|
-
return if [:included].include?(method_name) && !self.is_a?(Class)
|
21
|
-
|
22
|
-
is_private_class_method = singleton_class.private_method_defined?(method_name)
|
23
|
-
return if is_private_class_method
|
24
|
-
|
25
|
-
candidate = Candidate.for_class_method(klass = self, method_name)
|
26
|
-
Tracking::Instrumentor.instrument_candidate_for_pp_observation(candidate)
|
27
|
-
end
|
28
|
-
|
29
|
-
|
30
|
-
def base.method_added(method_name)
|
31
|
-
is_private_instance_method = self.private_method_defined?(method_name)
|
32
|
-
return if is_private_instance_method
|
33
|
-
|
34
|
-
candidate = Candidate.for_instance_method(klass = self, method_name)
|
35
|
-
Tracking::Instrumentor.instrument_candidate_for_pp_observation(candidate)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end end
|