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.
Files changed (49) hide show
  1. data/.gitignore +0 -1
  2. data/.travis.yml +10 -0
  3. data/CHANGELOG +8 -0
  4. data/README.md +92 -42
  5. data/bin/pp_ruby +62 -0
  6. data/bin/ruby_pp +62 -0
  7. data/doc/dev_notes.txt +32 -0
  8. data/doc/fixtures/complex.rb +103 -0
  9. data/doc/fixtures/empty_class.rb +7 -0
  10. data/doc/fixtures/fixture_helper.rb +8 -0
  11. data/doc/fixtures/sample.rb +57 -0
  12. data/lib/private_please/candidate.rb +10 -2
  13. data/lib/private_please/report/table.rb +44 -0
  14. data/lib/private_please/report.rb +6 -0
  15. data/lib/private_please/reporter/base.rb +28 -0
  16. data/lib/private_please/reporter/helpers/options_helpers.rb +12 -0
  17. data/lib/private_please/reporter/helpers/text_table_helpers.rb +9 -0
  18. data/lib/private_please/{report/reporter.rb → reporter/simple_text.rb} +12 -18
  19. data/lib/private_please/reporter/templates/simple.txt.erb +77 -0
  20. data/lib/private_please/reporter.rb +8 -0
  21. data/lib/private_please/storage/methods_names.rb +1 -0
  22. data/lib/private_please/storage.rb +8 -0
  23. data/lib/private_please/tracking/extension.rb +3 -10
  24. data/lib/private_please/tracking/instrumentor.rb +13 -35
  25. data/lib/private_please/tracking/instruments_all_methods_below.rb +28 -0
  26. data/lib/private_please/tracking/instruments_automatically_all_methods_in_all_classes.rb +52 -0
  27. data/lib/private_please/tracking/line_change_tracker.rb +8 -18
  28. data/lib/private_please/tracking/utils.rb +34 -0
  29. data/lib/private_please/tracking.rb +48 -0
  30. data/lib/private_please/version.rb +1 -1
  31. data/lib/private_please.rb +27 -44
  32. data/private_please.gemspec +7 -1
  33. data/spec/{01_marking_candidate_methods_to_observe_spec.rb → 01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb} +35 -70
  34. data/spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb +187 -0
  35. data/spec/{02_logging_calls_on_candidate_methods_spec.rb → 03_logging_calls_on_candidate_methods_spec.rb} +2 -4
  36. data/spec/04_instrumented_program_activity_observation_result_spec.rb +2 -5
  37. data/spec/05_reporting/report_table_spec.rb +51 -0
  38. data/spec/06_at_exit_spec.rb +18 -0
  39. data/spec/fixtures/bug_22.rb +17 -0
  40. data/spec/fixtures/sample_class_for_report.rb +2 -0
  41. data/spec/sandbox/Gemfile +4 -0
  42. data/spec/sandbox/Gemfile.lock +14 -0
  43. data/spec/sandbox/README.txt +26 -0
  44. data/spec/sandbox/normal.rb +7 -0
  45. data/spec/sandbox/normal_prepended_with_require.rb +8 -0
  46. data/spec/spec_helper.rb +6 -2
  47. metadata +50 -13
  48. data/lib/private_please/report/templates/simple.txt.erb +0 -61
  49. 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: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
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-28 00:00:00 +02:00
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/reporter.rb
100
- - lib/private_please/report/templates/simple.txt.erb
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/instruments_all_below.rb
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/01_marking_candidate_methods_to_observe_spec.rb
114
- - spec/02_logging_calls_on_candidate_methods_spec.rb
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/01_marking_candidate_methods_to_observe_spec.rb
157
- - spec/02_logging_calls_on_candidate_methods_spec.rb
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