private_please 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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/spec/sandbox/normal.rb
DELETED
data/spec/spec_helper.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# This file was (originally) generated by the `rspec --init` command. Conventionally, all
|
2
|
-
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
-
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
-
# loaded once.
|
5
|
-
#
|
6
|
-
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
-
|
8
|
-
module PrivatePlease
|
9
|
-
def self.reset_before_new_test
|
10
|
-
PrivatePlease .reset_before_new_test
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
RSpec.configure do |config|
|
15
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
16
|
-
config.run_all_when_everything_filtered = true
|
17
|
-
config.filter_run :focus
|
18
|
-
|
19
|
-
# Run specs in random order to surface order dependencies. If you find an
|
20
|
-
# order dependency and want to debug it, you can fix the order by providing
|
21
|
-
# the seed, which is printed after each run.
|
22
|
-
# --seed 1234
|
23
|
-
config.order = 'random'
|
24
|
-
|
25
|
-
config.before(:each) do
|
26
|
-
PrivatePlease.reset
|
27
|
-
PrivatePlease.pp_automatic_mode_disable
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
require '_helpers/assert_helpers'
|
32
|
-
|
33
|
-
#--------------------------------------------------------
|
34
|
-
|
35
|
-
require File.dirname(__FILE__) + '/../lib/private_please'
|
36
|
-
PrivatePlease.pp_automatic_mode_disable
|
37
|
-
|
38
|
-
$private_please_tests_are_running = true
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
|
4
|
-
describe PrivatePlease::Storage::CallsStore do
|
5
|
-
|
6
|
-
let(:calls_store ) { PrivatePlease::Storage::CallsStore.new }
|
7
|
-
|
8
|
-
context 'when fresh' do
|
9
|
-
it 'is empty (has no calls)' do
|
10
|
-
calls_store.internal_calls .should be_empty
|
11
|
-
calls_store.external_calls .should be_empty
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
|
4
|
-
describe PrivatePlease::Storage::CandidatesStore do
|
5
|
-
|
6
|
-
let(:candidates_store) { PrivatePlease::Storage::CandidatesStore.new }
|
7
|
-
|
8
|
-
# instance methods
|
9
|
-
let(:object_to_s) {PrivatePlease::Candidate.for_instance_method(Object, 'to_s' )}
|
10
|
-
let(:object_hash) {PrivatePlease::Candidate.for_instance_method(Object, 'hash' )}
|
11
|
-
# class methods
|
12
|
-
let(:object_new ) {PrivatePlease::Candidate.for_class_method(Object, 'new' )}
|
13
|
-
|
14
|
-
context 'when fresh' do
|
15
|
-
it 'is empty (has no candidates)' do
|
16
|
-
candidates_store .should be_empty
|
17
|
-
candidates_store.instance_methods.should be_empty
|
18
|
-
candidates_store.class_methods .should be_empty
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
example 'storing the 1st instance method candidate stores it so that it can be retrieved' do
|
23
|
-
candidates_store.store(object_to_s)
|
24
|
-
|
25
|
-
candidates_store.stored?(object_to_s).should be_true
|
26
|
-
candidates_store.instance_methods.should == {'Object' => mnames_for('to_s')}
|
27
|
-
candidates_store.class_methods .should be_empty
|
28
|
-
end
|
29
|
-
|
30
|
-
example 'storing the 1st class method candidate stores it so that it can be retrieved' do
|
31
|
-
candidates_store.store(object_new)
|
32
|
-
|
33
|
-
candidates_store.stored?(object_new).should be_true
|
34
|
-
candidates_store.instance_methods.should be_empty
|
35
|
-
candidates_store.class_methods .should == {'Object' => mnames_for('new')}
|
36
|
-
end
|
37
|
-
|
38
|
-
example 'storing the 2nd instance method candidate stores it so that it can be retrieved' do
|
39
|
-
candidates_store.store(object_to_s)
|
40
|
-
candidates_store.store(object_hash)
|
41
|
-
|
42
|
-
candidates_store.stored?(object_hash).should be_true
|
43
|
-
candidates_store.instance_methods.should == {'Object' => mnames_for(%w(hash to_s))}
|
44
|
-
candidates_store.class_methods .should be_empty
|
45
|
-
end
|
46
|
-
|
47
|
-
example 'storing avoids duplication' do
|
48
|
-
candidates_store.store(object_to_s)
|
49
|
-
candidates_store.store(object_to_s) # duplication : ignore it
|
50
|
-
|
51
|
-
candidates_store.instance_methods.should == {'Object' => mnames_for(%w(to_s))}
|
52
|
-
candidates_store.class_methods .should be_empty
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PrivatePlease::Reporter::DataCompiler do
|
4
|
-
|
5
|
-
context 'report generation for different scenarios' do
|
6
|
-
after { $expected_results = nil }
|
7
|
-
|
8
|
-
example('simple_case_1') { assert_report_data_matches(run_and_inspect("simple_case_1.rb", __FILE__)) }
|
9
|
-
example('simple_case_2') { assert_report_data_matches(run_and_inspect("simple_case_2.rb", __FILE__)) }
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
#---------
|
2
|
-
# Setup
|
3
|
-
#---------
|
4
|
-
|
5
|
-
class SimpleCase1
|
6
|
-
def entry_point; baz ; end
|
7
|
-
def baz ; end
|
8
|
-
def never; end
|
9
|
-
def self.c_entry_point; c_baz ; end
|
10
|
-
def self.c_baz ; end
|
11
|
-
def self.c_never; end
|
12
|
-
end
|
13
|
-
SimpleCase1.new.entry_point
|
14
|
-
SimpleCase1.c_entry_point
|
15
|
-
|
16
|
-
#------------------
|
17
|
-
# Expected results
|
18
|
-
#------------------
|
19
|
-
|
20
|
-
$expected_results = {
|
21
|
-
:candidates_classes_names => ['SimpleCase1'],
|
22
|
-
|
23
|
-
:good_candidates => {'SimpleCase1' => mnames_for([:baz]) },
|
24
|
-
:bad_candidates => {'SimpleCase1' => mnames_for([:entry_point]) },
|
25
|
-
:never_called_candidates => {'SimpleCase1' => mnames_for([:never]) },
|
26
|
-
|
27
|
-
:good_candidates_c => {'SimpleCase1' => mnames_for([:c_baz]) },
|
28
|
-
:bad_candidates_c => {'SimpleCase1' => mnames_for([:c_entry_point])},
|
29
|
-
:never_called_candidates_c => {'SimpleCase1' => mnames_for([:c_never]) }
|
30
|
-
}
|
@@ -1,55 +0,0 @@
|
|
1
|
-
#---------
|
2
|
-
# Scenario
|
3
|
-
#---------
|
4
|
-
# - additional internal calls are made to bad candidates (**1 )
|
5
|
-
# - an empty class is defined (**2 )
|
6
|
-
# - an ignored class is defined (**3 )
|
7
|
-
|
8
|
-
class SimpleCase2
|
9
|
-
def initialize
|
10
|
-
entry_point # **1
|
11
|
-
end
|
12
|
-
|
13
|
-
def entry_point
|
14
|
-
baz
|
15
|
-
self.class.c_entry_point # **1
|
16
|
-
end
|
17
|
-
def baz ; end
|
18
|
-
def never; end
|
19
|
-
def self.c_entry_point
|
20
|
-
c_baz
|
21
|
-
end
|
22
|
-
def self.c_baz ; end
|
23
|
-
def self.c_never; end
|
24
|
-
end
|
25
|
-
SimpleCase2.new.entry_point
|
26
|
-
SimpleCase2.c_entry_point
|
27
|
-
|
28
|
-
|
29
|
-
class SimpleCase2
|
30
|
-
class Empty # **2
|
31
|
-
end
|
32
|
-
class NotEmptyButNeverCalled # **3
|
33
|
-
def initialize ; neverr ; end
|
34
|
-
def neverr ; end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
#------------------
|
39
|
-
# Expected results
|
40
|
-
#------------------
|
41
|
-
|
42
|
-
$expected_results = {
|
43
|
-
:candidates_classes_names => ['SimpleCase2',
|
44
|
-
'SimpleCase2::NotEmptyButNeverCalled' # will produce a (hidden) empty 3-section block
|
45
|
-
], # TODO : filter it out in the DataCompiler
|
46
|
-
|
47
|
-
:good_candidates => {'SimpleCase2' => mnames_for([:baz]) },
|
48
|
-
:bad_candidates => {'SimpleCase2' => mnames_for([:entry_point]) },
|
49
|
-
:never_called_candidates => {'SimpleCase2' => mnames_for([:never]),
|
50
|
-
'SimpleCase2::NotEmptyButNeverCalled' => mnames_for([:neverr])
|
51
|
-
},
|
52
|
-
:good_candidates_c => {'SimpleCase2' => mnames_for([:c_baz]) },
|
53
|
-
:bad_candidates_c => {'SimpleCase2' => mnames_for([:c_entry_point])},
|
54
|
-
:never_called_candidates_c => {'SimpleCase2' => mnames_for([:c_never]) }
|
55
|
-
}
|