private_please 0.0.5 → 0.1.0
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.
- checksums.yaml +7 -0
- data/.ruby-version +1 -1
- data/.travis.yml +3 -5
- data/CHANGELOG +4 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +21 -0
- data/README.md +58 -98
- data/Rakefile +6 -2
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/private_please/config.rb +15 -0
- data/lib/private_please/methods_calls_tracker.rb +44 -0
- data/lib/private_please/reporting/simple_text.rb +43 -0
- data/lib/private_please/reporting/templates/simple.txt.erb +11 -0
- data/lib/private_please/storage/called_methods_memory_store.rb +20 -0
- data/lib/private_please/tracking/debug/trace_point_data_logger.rb +81 -0
- data/lib/private_please/tracking/method_details.rb +27 -0
- data/lib/private_please/tracking/result.rb +25 -0
- data/lib/private_please/tracking/trace_point_details.rb +41 -0
- data/lib/private_please/tracking/trace_point_processor.rb +71 -0
- data/lib/private_please/utils/ruby_utils.rb +44 -0
- data/lib/private_please/utils/source_file_utils.rb +20 -0
- data/lib/private_please/utils/two_level_stack.rb +13 -0
- data/lib/private_please/version.rb +2 -1
- data/lib/private_please.rb +27 -34
- data/private_please.gemspec +32 -25
- metadata +106 -185
- data/Guardfile +0 -8
- data/LICENSE +0 -22
- data/TODO +0 -20
- data/bin/pp_ruby +0 -62
- data/bin/ruby_pp +0 -62
- data/doc/dev_notes.txt +0 -32
- data/doc/fixtures/complex.rb +0 -103
- data/doc/fixtures/empty_class.rb +0 -7
- data/doc/fixtures/fixture_helper.rb +0 -8
- data/doc/fixtures/sample.rb +0 -57
- data/lib/private_please/candidate.rb +0 -49
- data/lib/private_please/report/table.rb +0 -44
- data/lib/private_please/report.rb +0 -6
- data/lib/private_please/reporter/base.rb +0 -14
- data/lib/private_please/reporter/data_compiler.rb +0 -82
- data/lib/private_please/reporter/helpers/options_helpers.rb +0 -37
- data/lib/private_please/reporter/helpers/text_table_helpers.rb +0 -9
- data/lib/private_please/reporter/simple_text.rb +0 -18
- data/lib/private_please/reporter/templates/simple.txt.erb +0 -80
- data/lib/private_please/reporter.rb +0 -8
- data/lib/private_please/ruby_backports.rb +0 -22
- data/lib/private_please/storage/calls_store.rb +0 -41
- data/lib/private_please/storage/candidates_store.rb +0 -52
- data/lib/private_please/storage/methods_names.rb +0 -10
- data/lib/private_please/storage/methods_names_bucket.rb +0 -69
- data/lib/private_please/storage.rb +0 -8
- data/lib/private_please/tracking/extension.rb +0 -12
- data/lib/private_please/tracking/instrumentor.rb +0 -49
- data/lib/private_please/tracking/instruments_all_methods_below.rb +0 -28
- data/lib/private_please/tracking/instruments_automatically_all_methods_in_all_classes.rb +0 -68
- data/lib/private_please/tracking/line_change_tracker.rb +0 -26
- data/lib/private_please/tracking/load_utils/gem_utils.rb +0 -49
- data/lib/private_please/tracking/load_utils/standard_lib_utils.rb +0 -38
- data/lib/private_please/tracking/load_utils.rb +0 -32
- data/lib/private_please/tracking/utils.rb +0 -34
- data/lib/private_please/tracking.rb +0 -49
- data/sample.rb +0 -68
- data/spec/01_tracking_candidate_methods/excluding_gems_and_standard_libraries_spec.rb +0 -31
- data/spec/01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb +0 -118
- data/spec/01_tracking_candidate_methods/load_utils_spec.rb +0 -40
- data/spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb +0 -185
- data/spec/03_logging_calls_on_candidate_methods_spec.rb +0 -37
- data/spec/04_instrumented_program_activity_observation_result_spec.rb +0 -86
- data/spec/05_reporting/report_table_spec.rb +0 -51
- data/spec/06_at_exit_spec.rb +0 -18
- data/spec/_helpers/assert_helpers.rb +0 -76
- data/spec/fixtures/bug_22.rb +0 -17
- data/spec/fixtures/bug_30.rb +0 -6
- data/spec/fixtures/issue_25.rb +0 -12
- data/spec/fixtures/sample_class_for_report.rb +0 -56
- data/spec/fixtures/sample_class_with_all_calls_combinations.rb +0 -69
- data/spec/sandbox/Gemfile +0 -4
- data/spec/sandbox/Gemfile.lock +0 -14
- data/spec/sandbox/README.txt +0 -26
- data/spec/sandbox/normal.rb +0 -7
- data/spec/sandbox/normal_prepended_with_require.rb +0 -8
- data/spec/spec_helper.rb +0 -38
- data/spec/units/calls_store_spec.rb +0 -15
- data/spec/units/candidates_store_spec.rb +0 -55
- data/spec/units/reporter/data_compiler_spec.rb +0 -12
- data/spec/units/reporter/fixtures/simple_case_1.rb +0 -30
- data/spec/units/reporter/fixtures/simple_case_2.rb +0 -55
data/sample.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
# require 'private_please'
|
2
|
-
require 'lib/private_please' # use the latest version
|
3
|
-
|
4
|
-
module ReportSample
|
5
|
-
###########################################
|
6
|
-
class Simple # Internal calls : #
|
7
|
-
# -> called methods are _GOOD CANDIDATES_ #
|
8
|
-
def make_internal_calls ###########################################
|
9
|
-
instance_m_1 # i -> i
|
10
|
-
instance_m_3 # i -> i
|
11
|
-
self.class.class_m_1 # i -> C
|
12
|
-
self.class.class_m_2 # i -> C
|
13
|
-
self.class.c_make_internal_method_calls # i -> C --> C
|
14
|
-
end # +-> i
|
15
|
-
|
16
|
-
def self.c_make_internal_method_calls #
|
17
|
-
class_m_1 # C -> C
|
18
|
-
new.instance_m_2 # C -> i
|
19
|
-
end #
|
20
|
-
end
|
21
|
-
|
22
|
-
#######################################################
|
23
|
-
class AnotherClass # External calls (would fail if methods were private) #
|
24
|
-
private_please # -> called methods are _BAD CANDIDATES_ #
|
25
|
-
def make_external_calls #######################################################
|
26
|
-
Simple.new.instance_m_1 # i -> i
|
27
|
-
Simple .class_m_1 # i -> C
|
28
|
-
self.class.c_make_external_calls # i -> C -> i
|
29
|
-
end # -> C
|
30
|
-
def self.c_make_external_calls #
|
31
|
-
Simple.new.instance_m_1 # C -> i
|
32
|
-
Simple .class_m_1 # C -> C
|
33
|
-
Simple .class_m_2 # C -> C
|
34
|
-
end #
|
35
|
-
def call_the_candidate_from_inside_and_outside
|
36
|
-
make_external_calls
|
37
|
-
Simple.new.make_internal_calls
|
38
|
-
end
|
39
|
-
def never_called; end
|
40
|
-
def self.never_called_c; end
|
41
|
-
end
|
42
|
-
|
43
|
-
#-----------------------------------------------------------------------------------------------------------------------
|
44
|
-
class Simple
|
45
|
-
def self.not_a_candidate_c1;
|
46
|
-
class_m_2
|
47
|
-
end
|
48
|
-
|
49
|
-
private_please
|
50
|
-
def instance_m_1; end
|
51
|
-
def instance_m_2; end
|
52
|
-
def instance_m_3; end
|
53
|
-
|
54
|
-
def self.class_m_1;
|
55
|
-
class_m_2
|
56
|
-
end
|
57
|
-
def self.class_m_2; end
|
58
|
-
|
59
|
-
def never_called_1; end
|
60
|
-
def self.class_never_called_1; end
|
61
|
-
end
|
62
|
-
end unless defined?(ReportSample::Simple)
|
63
|
-
#-----------------------------------------------------------------------------------------------------------------------
|
64
|
-
|
65
|
-
ReportSample::Simple.new.make_internal_calls
|
66
|
-
ReportSample::AnotherClass.new.make_external_calls
|
67
|
-
ReportSample::AnotherClass.c_make_external_calls
|
68
|
-
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "acceptance : standard libs are not tracked" do
|
4
|
-
|
5
|
-
before { PrivatePlease.pp_automatic_mode_enable }
|
6
|
-
after { PrivatePlease.pp_automatic_mode_disable}
|
7
|
-
|
8
|
-
module RequireTest; end
|
9
|
-
#-----------------
|
10
|
-
|
11
|
-
example "the csv **standard library** is required but not tracked" do
|
12
|
-
|
13
|
-
class RequireTest::Case1
|
14
|
-
require 'csv'
|
15
|
-
def foo ; end
|
16
|
-
end
|
17
|
-
|
18
|
-
assert_classes_names ['RequireTest::Case1']
|
19
|
-
end
|
20
|
-
|
21
|
-
example "the rspec **gem** is required but not tracked" do
|
22
|
-
|
23
|
-
class RequireTest::Case2
|
24
|
-
require 'rspec/autorun'
|
25
|
-
def foo ; end
|
26
|
-
end
|
27
|
-
|
28
|
-
assert_classes_names ['RequireTest::Case2']
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PrivatePlease, 'collecting the details of selected candidate-methods to observe' do
|
4
|
-
module MarkingTest; end
|
5
|
-
|
6
|
-
let(:candidates_store) { PrivatePlease.storage }
|
7
|
-
|
8
|
-
# ----------------
|
9
|
-
context 'observing with `private_please`' do
|
10
|
-
# ----------------
|
11
|
-
|
12
|
-
example 'all the instance methods defined after `private_please` are stored as candidates' do
|
13
|
-
|
14
|
-
class MarkingTest::Automatic1
|
15
|
-
def foo ; end # NO (too early)
|
16
|
-
private_please # ---> # <start observing>
|
17
|
-
def baz ; end # *
|
18
|
-
public # *
|
19
|
-
def qux ; end # *
|
20
|
-
def included ; end # * special name, but valid candidate (in classes).
|
21
|
-
end
|
22
|
-
assert_instance_methods_candidates 'MarkingTest::Automatic1' =>[:baz, :qux, :included]
|
23
|
-
assert_class_methods_candidates ({})
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
example 'all the class methods defined after `private_please` are stored as candidates' do
|
28
|
-
class MarkingTest::Automatic1b
|
29
|
-
def self.foo ; end # NO (too early)
|
30
|
-
private_please # ---> # <start observing>
|
31
|
-
def self.baz ; end # YES
|
32
|
-
public # *
|
33
|
-
def self.qux ; end # YES
|
34
|
-
end
|
35
|
-
|
36
|
-
assert_instance_methods_candidates ({})
|
37
|
-
assert_class_methods_candidates 'MarkingTest::Automatic1b' =>[:baz, :qux]
|
38
|
-
end
|
39
|
-
|
40
|
-
example ('already private methods are ignored/not observed') do
|
41
|
-
class MarkingTest::Automatic1c
|
42
|
-
private_please # ---> # <start observing>
|
43
|
-
def self.baz ; end # YES
|
44
|
-
public # *
|
45
|
-
def qux ; end # YES
|
46
|
-
private #
|
47
|
-
def already_private ; end # NO
|
48
|
-
class << self
|
49
|
-
private
|
50
|
-
def class_already_private ; end # NO
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
assert_instance_methods_candidates 'MarkingTest::Automatic1c' =>[:qux]
|
55
|
-
assert_class_methods_candidates 'MarkingTest::Automatic1c' =>[:baz]
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
|
-
example 'method coming from an included module are observed too' do
|
60
|
-
|
61
|
-
module Extra002 ; private_please end # <<=== Pre-instrument.
|
62
|
-
module Extra002::ClassMethods ; private_please end # <<=== Pre-instrument.
|
63
|
-
|
64
|
-
module Extra002 # Reopen the pre-instrumented
|
65
|
-
def im_from_module ; end # module.
|
66
|
-
def self.included(base) #
|
67
|
-
base.extend ClassMethods #
|
68
|
-
end #
|
69
|
-
module ClassMethods #
|
70
|
-
def cm_from_module ; end #
|
71
|
-
end #
|
72
|
-
end #
|
73
|
-
assert_instance_methods_candidates 'Extra002' =>[:im_from_module],
|
74
|
-
'Extra002::ClassMethods' =>[:cm_from_module]
|
75
|
-
assert_class_methods_candidates ({})
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
# ----------------
|
80
|
-
describe 'overridden methods are not tracked' do
|
81
|
-
# ----------------
|
82
|
-
module ExplOverridingTest ; end
|
83
|
-
|
84
|
-
example 'overridden methods are NOT marked as candidate' do
|
85
|
-
module ExplOverridingTest::UserClasses
|
86
|
-
class Base #
|
87
|
-
def base_foo ; end #
|
88
|
-
def self.c_base_foo ; end #
|
89
|
-
private_please # <start tracking>
|
90
|
-
def base_t_bar ; end # is tracked
|
91
|
-
def self.c_base_t_bar ; end # is tracked
|
92
|
-
private
|
93
|
-
def base_priv ; end # private => not tracked
|
94
|
-
end
|
95
|
-
|
96
|
-
class Overrider < Base
|
97
|
-
private_please # <start tracking>
|
98
|
-
def base_priv ; end # overriding a private method => not tracked
|
99
|
-
def base_yes ; end # new -> tracked
|
100
|
-
def self.c_base_yes ; end # new -> tracked
|
101
|
-
|
102
|
-
def base_foo ; end # NOT tracked
|
103
|
-
def base_t_bar ; end # NOT tracked
|
104
|
-
def self.c_base_foo ; end # NOT tracked
|
105
|
-
def self.c_base_t_bar ; end # NOT tracked
|
106
|
-
|
107
|
-
def to_s ; end # NOT tracked
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
assert_instance_methods_candidates 'ExplOverridingTest::UserClasses::Base' => [:base_t_bar],
|
112
|
-
'ExplOverridingTest::UserClasses::Overrider' => [:base_yes]
|
113
|
-
assert_class_methods_candidates 'ExplOverridingTest::UserClasses::Base' => [:c_base_t_bar],
|
114
|
-
'ExplOverridingTest::UserClasses::Overrider' => [:c_base_yes]
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PrivatePlease::Tracking::LoadUtils do
|
4
|
-
|
5
|
-
def std_lib?(requiree)
|
6
|
-
PrivatePlease::Tracking::LoadUtils.standard_lib?(requiree)
|
7
|
-
end
|
8
|
-
|
9
|
-
def gem?(requiree)
|
10
|
-
PrivatePlease::Tracking::LoadUtils.gem?(requiree)
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
example '.standard_lib? detects if a string matches a standard library' do
|
15
|
-
std_lib?('csv' ).should be_true
|
16
|
-
std_lib?('csv.rb' ).should be_true
|
17
|
-
std_lib?('bigdecimal' ).should be_true
|
18
|
-
std_lib?('bigdecimal/util' ).should be_true
|
19
|
-
std_lib?('bigdecimal/util.rb' ).should be_true
|
20
|
-
|
21
|
-
std_lib?('rspec' ).should be_false
|
22
|
-
std_lib?('private_please' ).should be_false
|
23
|
-
end
|
24
|
-
|
25
|
-
example '.gem? detects if a string matches a gem' do
|
26
|
-
gem?('csv' ).should be_false
|
27
|
-
gem?('csv.rb' ).should be_false
|
28
|
-
gem?('bigdecimal' ).should be_false
|
29
|
-
gem?('bigdecimal/util' ).should be_false
|
30
|
-
gem?('bigdecimal/util.rb' ).should be_false
|
31
|
-
|
32
|
-
gem?('rspec' ).should be_true
|
33
|
-
gem?('rspec/core/rake_task').should be_true
|
34
|
-
gem?('rspec/autorun' ).should be_true
|
35
|
-
gem?('coderay' ).should be_true
|
36
|
-
#gem?('private_please' ).should be_false
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
end
|
@@ -1,185 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PrivatePlease, 'in $automatic mode, all the methods are tracked for observation by PP' do
|
4
|
-
|
5
|
-
before { PrivatePlease.pp_automatic_mode_enable }
|
6
|
-
after { PrivatePlease.pp_automatic_mode_disable}
|
7
|
-
|
8
|
-
# ----------------
|
9
|
-
context 'in a flat class,' do # simple class; no module nor inheritance
|
10
|
-
# ----------------
|
11
|
-
module AutFlatClass; end
|
12
|
-
|
13
|
-
example 'instance and singleton methods are tracked' do
|
14
|
-
class AutFlatClass::Case1
|
15
|
-
def foo ; end #
|
16
|
-
def baz ; end #
|
17
|
-
def self.foo ; end #
|
18
|
-
def self.baz ; end #
|
19
|
-
end
|
20
|
-
|
21
|
-
assert_instance_methods_candidates 'AutFlatClass::Case1' => [:baz, :foo]
|
22
|
-
assert_singleton_methods_candidates 'AutFlatClass::Case1' => [:baz, :foo]
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
example '.included and #included are 2 methods we track in classes.' do
|
27
|
-
class AutFlatClass::Case2
|
28
|
-
def foo ; end #
|
29
|
-
|
30
|
-
def self.baz ; end #
|
31
|
-
end
|
32
|
-
|
33
|
-
assert_instance_methods_candidates 'AutFlatClass::Case2' => [:foo]
|
34
|
-
assert_singleton_methods_candidates 'AutFlatClass::Case2' => [:baz]
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
example 'already private methods are not tracked' do
|
39
|
-
class AutFlatClass::Case3
|
40
|
-
def foo ; end # YES
|
41
|
-
def self.baz ; end # YES
|
42
|
-
private
|
43
|
-
def already_private ; end # NO
|
44
|
-
class << self
|
45
|
-
private
|
46
|
-
def class_already_private ; end # NO
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
assert_instance_methods_candidates 'AutFlatClass::Case3' => [:foo]
|
51
|
-
assert_singleton_methods_candidates 'AutFlatClass::Case3' => [:baz]
|
52
|
-
end
|
53
|
-
|
54
|
-
example 'metaprograpping-related Class methods are not tracked' do
|
55
|
-
class AutFlatClass::Case4
|
56
|
-
def singleton_method_added(_) ; end # NO
|
57
|
-
def method_added( _) ; end # NO
|
58
|
-
end
|
59
|
-
|
60
|
-
assert_instance_methods_candidates ({})
|
61
|
-
assert_singleton_methods_candidates ({})
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
# ----------------
|
66
|
-
context 'in a flat module,' do # no inheritance
|
67
|
-
# ----------------
|
68
|
-
module AutFlatModule; end
|
69
|
-
|
70
|
-
example 'instance and singleton methods are tracked' do
|
71
|
-
module AutFlatModule::Case1
|
72
|
-
def foo ; end #
|
73
|
-
def self.baz ; end #
|
74
|
-
end
|
75
|
-
|
76
|
-
assert_instance_methods_candidates 'AutFlatModule::Case1' => [:foo]
|
77
|
-
assert_singleton_methods_candidates 'AutFlatModule::Case1' => [:baz]
|
78
|
-
end
|
79
|
-
|
80
|
-
example 'we track #included but not .included' do
|
81
|
-
module AutFlatModule::Case2
|
82
|
-
def foo ; end #
|
83
|
-
def included ; end # : not a special name in classes
|
84
|
-
|
85
|
-
def self.baz ; end #
|
86
|
-
def self.included ; end # : not a special name in classes
|
87
|
-
end
|
88
|
-
|
89
|
-
assert_instance_methods_candidates 'AutFlatModule::Case2' => [:foo, :included]
|
90
|
-
assert_singleton_methods_candidates 'AutFlatModule::Case2' => [:baz]
|
91
|
-
end
|
92
|
-
|
93
|
-
|
94
|
-
example 'already private methods are not tracked' do
|
95
|
-
module AutFlatModule::Case3
|
96
|
-
private
|
97
|
-
def already_private ; end # NO
|
98
|
-
class << self
|
99
|
-
private
|
100
|
-
def class_already_private ; end # NO
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
assert_instance_methods_candidates ({})
|
105
|
-
assert_singleton_methods_candidates ({})
|
106
|
-
end
|
107
|
-
|
108
|
-
example 'metaprograpping-related Module methods are not tracked' do
|
109
|
-
module AutFlatModule::Case4
|
110
|
-
def singleton_method_added(_) ; end # NO
|
111
|
-
def method_added( _) ; end # NO
|
112
|
-
def self.included(base) ; end # NO
|
113
|
-
end
|
114
|
-
|
115
|
-
assert_instance_methods_candidates ({})
|
116
|
-
assert_singleton_methods_candidates ({})
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
120
|
-
|
121
|
-
|
122
|
-
# ----------------
|
123
|
-
context '1 class including 1 module' do
|
124
|
-
# ----------------
|
125
|
-
module IncludedModule ; end
|
126
|
-
|
127
|
-
example 'the tracked module methods are associated to the module, not the class(es) that includes the module' do
|
128
|
-
module IncludedModule
|
129
|
-
module Module1 #
|
130
|
-
def im_from_module ; end # YES
|
131
|
-
def self.included(base) # NO
|
132
|
-
base.extend ClassMethods #
|
133
|
-
end #
|
134
|
-
module ClassMethods #
|
135
|
-
def cm_from_module ; end # YES
|
136
|
-
end #
|
137
|
-
end #
|
138
|
-
class Case1
|
139
|
-
include Module1 # NO methods are associated to this class.
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
assert_instance_methods_candidates 'IncludedModule::Module1' =>[:im_from_module],
|
144
|
-
'IncludedModule::Module1::ClassMethods' =>[:cm_from_module]
|
145
|
-
assert_singleton_methods_candidates ({})
|
146
|
-
end
|
147
|
-
|
148
|
-
end
|
149
|
-
|
150
|
-
|
151
|
-
# ----------------
|
152
|
-
describe 'overridden methods are not tracked in classes' do
|
153
|
-
# ----------------
|
154
|
-
module ImplOverridingTest ; end
|
155
|
-
|
156
|
-
example 'overridden methods are NOT marked as candidate' do
|
157
|
-
module ImplOverridingTest
|
158
|
-
class Base
|
159
|
-
def base_t_foo ; end # is tracked
|
160
|
-
def self.c_base_t_foo ; end # is tracked
|
161
|
-
private
|
162
|
-
def base_priv ; end # private => not tracked
|
163
|
-
end
|
164
|
-
|
165
|
-
class Overrider < Base
|
166
|
-
def base_priv ; end # overriding a private method => not tracked
|
167
|
-
def base_yes ; end # new -> tracked
|
168
|
-
def self.c_base_yes ; end # new -> tracked
|
169
|
-
|
170
|
-
def base_t_foo ; end # NOT tracked
|
171
|
-
def self.c_base_t_foo ; end # NOT tracked
|
172
|
-
|
173
|
-
def to_s ; end # NOT tracked
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
assert_instance_methods_candidates 'ImplOverridingTest::Base' => [:base_t_foo],
|
178
|
-
'ImplOverridingTest::Overrider' => [:base_yes]
|
179
|
-
assert_class_methods_candidates 'ImplOverridingTest::Base' => [:c_base_t_foo],
|
180
|
-
'ImplOverridingTest::Overrider' => [:c_base_yes]
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
|
185
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PrivatePlease, 'calling observed methods and logging calls in 2 categories : internal or external' do
|
4
|
-
|
5
|
-
before do
|
6
|
-
#-----------------------------------------------------------------------------------------------------------------------
|
7
|
-
load File.dirname(__FILE__) + '/fixtures/sample_class_with_all_calls_combinations.rb'
|
8
|
-
#-----------------------------------------------------------------------------------------------------------------------
|
9
|
-
end
|
10
|
-
after { Object.send(:remove_const, :CallsSample) }
|
11
|
-
|
12
|
-
example ('pure internal calls are categorized correctly') do
|
13
|
-
CallsSample::Simple.new.make_internal_calls
|
14
|
-
assert_calls_detected :inside => {'CallsSample::Simple' => mnames_for([:instance_m_1, :instance_m_2])},
|
15
|
-
:outside => NO_CALLS_OBSERVED,
|
16
|
-
:inside_c => {'CallsSample::Simple' => mnames_for([:class_m_1, :class_m_2])},
|
17
|
-
:outside_c => NO_CALLS_OBSERVED
|
18
|
-
end
|
19
|
-
|
20
|
-
example ('pure external calls are categorized correctly') do
|
21
|
-
CallsSample::AnotherClass.new.make_external_calls
|
22
|
-
assert_calls_detected :inside => NO_CALLS_OBSERVED,
|
23
|
-
:outside => {'CallsSample::Simple' => mnames_for([:instance_m_1])},
|
24
|
-
:inside_c => {'CallsSample::Simple' => mnames_for([:class_m_2])},
|
25
|
-
:outside_c => {'CallsSample::Simple' => mnames_for([:class_m_1])}
|
26
|
-
end
|
27
|
-
|
28
|
-
example('when a method is called both from inside and from outside its class, it is recorded is both categories') do
|
29
|
-
CallsSample::AnotherClass.new.call_the_candidate_from_inside_and_outside
|
30
|
-
assert_calls_detected :inside => {'CallsSample::Simple' => mnames_for([:instance_m_1, :instance_m_2])},
|
31
|
-
:outside => {'CallsSample::Simple' => mnames_for([:instance_m_1])},
|
32
|
-
:inside_c => {'CallsSample::Simple' => mnames_for([:class_m_2, :class_m_1])},
|
33
|
-
:outside_c => {'CallsSample::Simple' => mnames_for([:class_m_1])}
|
34
|
-
end
|
35
|
-
|
36
|
-
#-----------------------------------------------------------------------------------------------------------------------
|
37
|
-
end
|