factory_trace 0.2.3 → 0.2.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.
- checksums.yaml +4 -4
- data/lib/factory_trace/helpers/converter.rb +2 -1
- data/lib/factory_trace/preprocessors/extract_used.rb +1 -1
- data/lib/factory_trace/processors/find_unused.rb +16 -15
- data/lib/factory_trace/readers/trace_reader.rb +1 -1
- data/lib/factory_trace/structures/collection.rb +42 -29
- data/lib/factory_trace/structures/factory.rb +10 -4
- data/lib/factory_trace/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33c0207895ffee9e1ce968b396f9acf75a298664e9cd9dd7a8766031c8bfbcb9
|
4
|
+
data.tar.gz: 4bb96700eefd658c71639b9423b058a604e8c8ad29cdc96a1569883e62d4c0c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a590c9294896d635673d8a3f3864fcc09cf3fded38ace341d1d9874f190171809027218ec6331987b26235cd2a855a39a76fe8bfb4b0900453edf74c2a0d35c4
|
7
|
+
data.tar.gz: 98237229d930694a1459a4c052d2221c6cf15bb5c85bf76124d9ea81c0c3d98ff620192e1f94b6b1286aad38f7f1d02301a8e9c15cb4abad2025d4767a4a790f
|
@@ -21,7 +21,8 @@ module FactoryTrace
|
|
21
21
|
FactoryTrace::Structures::Factory.new(
|
22
22
|
factory.name.to_s,
|
23
23
|
factory.send(:parent).respond_to?(:name) ? factory.send(:parent).name.to_s : nil,
|
24
|
-
factory.defined_traits.map(&:name).map(&:to_s)
|
24
|
+
factory.defined_traits.map(&:name).map(&:to_s),
|
25
|
+
factory.names.map(&:to_s) - [factory.name.to_s]
|
25
26
|
)
|
26
27
|
end
|
27
28
|
end
|
@@ -10,7 +10,7 @@ module FactoryTrace
|
|
10
10
|
collection = FactoryTrace::Structures::Collection.new
|
11
11
|
|
12
12
|
trace.each do |factory_name, trait_names|
|
13
|
-
collection.add(FactoryTrace::Structures::Factory.new(factory_name, nil, trait_names.to_a))
|
13
|
+
collection.add(FactoryTrace::Structures::Factory.new(factory_name, nil, trait_names.to_a, []))
|
14
14
|
end
|
15
15
|
|
16
16
|
collection
|
@@ -13,8 +13,8 @@ module FactoryTrace
|
|
13
13
|
|
14
14
|
output = []
|
15
15
|
|
16
|
-
defined.factories.
|
17
|
-
unless used.
|
16
|
+
defined.factories.each do |factory|
|
17
|
+
unless used.find(factory)
|
18
18
|
if used_child_factories[factory.name]
|
19
19
|
output << {code: :used_indirectly, factory_name: factory.name, child_factories_names: used_child_factories[factory.name]}
|
20
20
|
else
|
@@ -23,14 +23,14 @@ module FactoryTrace
|
|
23
23
|
end
|
24
24
|
|
25
25
|
factory.trait_names.each do |trait_name|
|
26
|
-
unless trait_used?(used, factory
|
26
|
+
unless trait_used?(used, factory, trait_name) || trait_used?(used_inherited_traits, factory, trait_name)
|
27
27
|
output << {code: :unused, factory_name: factory.name, trait_name: trait_name}
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
defined.traits.
|
33
|
-
unless used_inherited_traits.
|
32
|
+
defined.traits.each do |trait|
|
33
|
+
unless used_inherited_traits.find(trait)
|
34
34
|
output << {code: :unused, trait_name: trait.name}
|
35
35
|
next
|
36
36
|
end
|
@@ -51,12 +51,13 @@ module FactoryTrace
|
|
51
51
|
# Checks if factory of the collection contains a trait
|
52
52
|
#
|
53
53
|
# @param [FactoryTrace::Structures::Collection] collection
|
54
|
-
# @param [
|
54
|
+
# @param [FactoryTrace::Structures::Factory] factory
|
55
55
|
# @param [String] trait_name
|
56
56
|
#
|
57
57
|
# @return [Boolean]
|
58
|
-
def self.trait_used?(collection,
|
59
|
-
|
58
|
+
def self.trait_used?(collection, factory, trait_name)
|
59
|
+
factory = collection.find(factory)
|
60
|
+
factory && factory.trait_names.include?(trait_name)
|
60
61
|
end
|
61
62
|
|
62
63
|
# Returns a new collection where traits which were used moved to their owner factory
|
@@ -68,18 +69,18 @@ module FactoryTrace
|
|
68
69
|
def self.used_inherited_traits(defined, used)
|
69
70
|
collection = FactoryTrace::Structures::Collection.new
|
70
71
|
|
71
|
-
used.factories.
|
72
|
+
used.factories.each do |factory|
|
72
73
|
factory.trait_names.each do |trait_name|
|
73
74
|
possible_owner_name = factory.name
|
74
75
|
|
75
76
|
while possible_owner_name
|
76
|
-
break if defined.
|
77
|
-
possible_owner_name = defined.
|
77
|
+
break if defined.find_factory_by_names(possible_owner_name).trait_names.include?(trait_name)
|
78
|
+
possible_owner_name = defined.find_factory_by_names(possible_owner_name).parent_name
|
78
79
|
end
|
79
80
|
|
80
81
|
if possible_owner_name
|
81
|
-
factory = collection.
|
82
|
-
factory ||= collection.add(FactoryTrace::Structures::Factory.new(possible_owner_name, nil, []))
|
82
|
+
factory = collection.find_factory_by_names(possible_owner_name)
|
83
|
+
factory ||= collection.add(FactoryTrace::Structures::Factory.new(possible_owner_name, nil, [], []))
|
83
84
|
|
84
85
|
factory.trait_names << trait_name unless factory.trait_names.include?(trait_name)
|
85
86
|
else
|
@@ -102,8 +103,8 @@ module FactoryTrace
|
|
102
103
|
def self.used_child_factories(defined, used)
|
103
104
|
hash = {}
|
104
105
|
|
105
|
-
used.factories.
|
106
|
-
parent_name = defined.
|
106
|
+
used.factories.each do |factory|
|
107
|
+
parent_name = defined.find(factory).parent_name
|
107
108
|
|
108
109
|
if parent_name
|
109
110
|
hash[parent_name] ||= []
|
@@ -45,7 +45,7 @@ module FactoryTrace
|
|
45
45
|
collection = FactoryTrace::Structures::Collection.new
|
46
46
|
|
47
47
|
hash['factories'].each do |h|
|
48
|
-
collection.add(FactoryTrace::Structures::Factory.new(h['name'], h['parent_name'], h['trait_names']))
|
48
|
+
collection.add(FactoryTrace::Structures::Factory.new(h['name'], h['parent_name'], h['trait_names'], h['alias_names']))
|
49
49
|
end
|
50
50
|
|
51
51
|
hash['traits'].each do |h|
|
@@ -3,9 +3,9 @@ module FactoryTrace
|
|
3
3
|
class Collection
|
4
4
|
attr_reader :factories, :traits
|
5
5
|
|
6
|
-
# @param [
|
7
|
-
# @param [
|
8
|
-
def initialize(factories =
|
6
|
+
# @param [Array<String, FactoryTrace::Structures::Factory>]
|
7
|
+
# @param [Array<String, FactoryTrace::Structures::Trait>]
|
8
|
+
def initialize(factories = [], traits = [])
|
9
9
|
@factories = factories
|
10
10
|
@traits = traits
|
11
11
|
end
|
@@ -15,8 +15,36 @@ module FactoryTrace
|
|
15
15
|
# @return [FactoryTrace::Structures::Factory, FactoryTrace::Structures::Trait]
|
16
16
|
def add(element)
|
17
17
|
case element
|
18
|
-
when FactoryTrace::Structures::Factory then
|
19
|
-
when FactoryTrace::Structures::Trait then
|
18
|
+
when FactoryTrace::Structures::Factory then factories << element
|
19
|
+
when FactoryTrace::Structures::Trait then traits << element
|
20
|
+
else
|
21
|
+
fail "Unknown element: #{element.inspect}"
|
22
|
+
end
|
23
|
+
|
24
|
+
element
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param [Array<String>] names
|
28
|
+
#
|
29
|
+
# @return [FactoryTrace::Structures::Factory|nil]
|
30
|
+
def find_factory_by_names(*names)
|
31
|
+
factories.find { |factory| names.include?(factory.name) || (names & factory.alias_names).size > 0 }
|
32
|
+
end
|
33
|
+
|
34
|
+
# @param [Array<String>] names
|
35
|
+
#
|
36
|
+
# @return [FactoryTrace::Structures::Trait|nil]
|
37
|
+
def find_trait_by_names(*names)
|
38
|
+
traits.find { |trait| names.include?(trait.name) }
|
39
|
+
end
|
40
|
+
|
41
|
+
# @param [FactoryTrace::Structures::Factory|FactoryTrace::Structures::Trait]
|
42
|
+
#
|
43
|
+
# @return [FactoryTrace::Structures::Factory|FactoryTrace::Structures::Trait]
|
44
|
+
def find(element)
|
45
|
+
case element
|
46
|
+
when FactoryTrace::Structures::Factory then find_factory_by_names(element.name, *element.alias_names)
|
47
|
+
when FactoryTrace::Structures::Trait then find_trait_by_names(element.name)
|
20
48
|
else
|
21
49
|
fail "Unknown element: #{element.inspect}"
|
22
50
|
end
|
@@ -28,24 +56,24 @@ module FactoryTrace
|
|
28
56
|
#
|
29
57
|
# @return [FactoryTrace::Structures::Collection]
|
30
58
|
def merge!(collection)
|
31
|
-
collection.factories.
|
32
|
-
if
|
33
|
-
|
59
|
+
collection.factories.each do |factory|
|
60
|
+
if (persisted = find(factory))
|
61
|
+
persisted.merge!(factory)
|
34
62
|
else
|
35
|
-
add(FactoryTrace::Structures::Factory.new(factory.name, factory.parent_name, factory.trait_names))
|
63
|
+
add(FactoryTrace::Structures::Factory.new(factory.name, factory.parent_name, factory.trait_names, factory.alias_names))
|
36
64
|
end
|
37
65
|
end
|
38
66
|
|
39
|
-
collection.traits.
|
40
|
-
add(FactoryTrace::Structures::Trait.new(trait.name, trait.owner_name)) unless
|
67
|
+
collection.traits.each do |trait|
|
68
|
+
add(FactoryTrace::Structures::Trait.new(trait.name, trait.owner_name)) unless find(trait)
|
41
69
|
end
|
42
70
|
end
|
43
71
|
|
44
72
|
# @return [Hash]
|
45
73
|
def to_h
|
46
74
|
{
|
47
|
-
factories:
|
48
|
-
traits:
|
75
|
+
factories: factories.map(&:to_h),
|
76
|
+
traits: traits.map(&:to_h)
|
49
77
|
}
|
50
78
|
end
|
51
79
|
|
@@ -53,7 +81,7 @@ module FactoryTrace
|
|
53
81
|
#
|
54
82
|
# @return [Integer]
|
55
83
|
def total
|
56
|
-
traits.size + factories.size + factories.
|
84
|
+
traits.size + factories.size + factories.sum { |factory| factory.trait_names.size }
|
57
85
|
end
|
58
86
|
|
59
87
|
# @return [Boolean]
|
@@ -62,21 +90,6 @@ module FactoryTrace
|
|
62
90
|
|
63
91
|
factories == collection.factories && traits == collection.traits
|
64
92
|
end
|
65
|
-
|
66
|
-
private
|
67
|
-
|
68
|
-
# @param [Hash] hash
|
69
|
-
# @param [FactoryTrace::Structures::Factory, FactoryTrace::Structures::Trait] element
|
70
|
-
#
|
71
|
-
# @return [FactoryTrace::Structures::Factory, FactoryTrace::Structures::Trait] element
|
72
|
-
def store(hash, element)
|
73
|
-
hash[element.name] = element
|
74
|
-
end
|
75
|
-
|
76
|
-
# @return [Hash]
|
77
|
-
def convert(hash)
|
78
|
-
hash.each_value.map(&:to_h)
|
79
|
-
end
|
80
93
|
end
|
81
94
|
end
|
82
95
|
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
module FactoryTrace
|
2
2
|
module Structures
|
3
3
|
class Factory
|
4
|
-
attr_reader :name, :parent_name, :trait_names
|
4
|
+
attr_reader :name, :parent_name, :trait_names, :alias_names
|
5
5
|
|
6
6
|
# @param [String] name
|
7
7
|
# @param [String, nil] parent_name
|
8
8
|
# @param [Array<String>] trait_names
|
9
|
-
|
9
|
+
# @param [Array<String>] alias_names
|
10
|
+
def initialize(name, parent_name, trait_names, alias_names)
|
10
11
|
@name = name
|
11
12
|
@parent_name = parent_name
|
12
13
|
@trait_names = trait_names
|
14
|
+
@alias_names = alias_names
|
13
15
|
end
|
14
16
|
|
15
17
|
# @return [Hash<Symbol, String>]
|
@@ -17,7 +19,8 @@ module FactoryTrace
|
|
17
19
|
{
|
18
20
|
name: name,
|
19
21
|
parent_name: parent_name,
|
20
|
-
trait_names: trait_names
|
22
|
+
trait_names: trait_names,
|
23
|
+
alias_names: alias_names
|
21
24
|
}
|
22
25
|
end
|
23
26
|
|
@@ -34,7 +37,10 @@ module FactoryTrace
|
|
34
37
|
def ==(factory)
|
35
38
|
return false unless factory.is_a?(FactoryTrace::Structures::Factory)
|
36
39
|
|
37
|
-
name == factory.name &&
|
40
|
+
name == factory.name &&
|
41
|
+
parent_name == factory.parent_name &&
|
42
|
+
trait_names == factory.trait_names &&
|
43
|
+
alias_names == factory.alias_names
|
38
44
|
end
|
39
45
|
end
|
40
46
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factory_trace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- djezzzl
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: factory_bot
|