private_please 0.0.3 → 0.0.4

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