hiptest-publisher 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hiptest-publisher/nodes.rb +4 -3
- data/lib/hiptest-publisher/nodes_walker.rb +11 -23
- data/lib/hiptest-publisher/parameter_type_adder.rb +51 -83
- data/lib/hiptest-publisher/parent_adder.rb +6 -6
- data/lib/hiptest-publisher/render_context_maker.rb +1 -1
- data/lib/hiptest-publisher/renderer.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be7fd459ab07a79f34477a18657baa1367f26e81
|
4
|
+
data.tar.gz: 5548f034c80c2ecddc9e7b1ffdc3c17a64606e6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e715cabfcb276bb95d66ef79da2ec30f730775f193cbf2add0a311a309399fd3b44bf4405e44116a9c4e3f81aac1caee8651af7d5f4d45fdd89cf2d1a1d0a6c3
|
7
|
+
data.tar.gz: 54f46b5ad213a4a94a0ec1f90059ced3ffefb64564849d7a5ad7b2cd776d7b7a15dc048712f3d61808dffadecb423a692eedd75aeb2d56408ce8774b5a332491
|
@@ -18,8 +18,8 @@ module Hiptest
|
|
18
18
|
return Hiptest::Renderer.render(self, rendering_context)
|
19
19
|
end
|
20
20
|
|
21
|
-
def each_sub_nodes(*types)
|
22
|
-
return to_enum(:each_sub_nodes, *types) unless block_given?
|
21
|
+
def each_sub_nodes(*types, deep: false)
|
22
|
+
return to_enum(:each_sub_nodes, *types, deep: deep) unless block_given?
|
23
23
|
path = [self]
|
24
24
|
parsed_nodes_id = Set.new
|
25
25
|
|
@@ -28,11 +28,12 @@ module Hiptest
|
|
28
28
|
|
29
29
|
if current_node.is_a?(Node)
|
30
30
|
next if parsed_nodes_id.include? current_node.object_id
|
31
|
+
parsed_nodes_id << current_node.object_id
|
31
32
|
|
32
33
|
if types.empty? || types.any? {|type| current_node.is_a?(type)}
|
33
34
|
yield current_node
|
35
|
+
next unless deep
|
34
36
|
end
|
35
|
-
parsed_nodes_id << current_node.object_id
|
36
37
|
current_node.children.each_value {|item| path << item}
|
37
38
|
elsif current_node.is_a?(Array)
|
38
39
|
current_node.each {|item| path << item}
|
@@ -1,6 +1,14 @@
|
|
1
1
|
module Hiptest
|
2
2
|
module Nodes
|
3
3
|
class Walker
|
4
|
+
|
5
|
+
def walk_node(node)
|
6
|
+
walk_children(node)
|
7
|
+
|
8
|
+
node.each {|item| walk_node(item)} if node.is_a? Array
|
9
|
+
call_node_walker(node)
|
10
|
+
end
|
11
|
+
|
4
12
|
private
|
5
13
|
|
6
14
|
def walk_children(node)
|
@@ -16,30 +24,10 @@ module Hiptest
|
|
16
24
|
end
|
17
25
|
end
|
18
26
|
|
19
|
-
|
20
|
-
walk_method_names[node.class] ||= "walk_#{node.kind}".to_sym
|
21
|
-
end
|
27
|
+
WALK_METHOD_NAMES = {}
|
22
28
|
|
23
|
-
def
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
class ParentFirstWalker < Walker
|
29
|
-
def walk_node(node)
|
30
|
-
call_node_walker(node)
|
31
|
-
node.each {|item| walk_node(item)} if node.is_a? Array
|
32
|
-
|
33
|
-
walk_children(node)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class ChildrenFirstWalker < Walker
|
38
|
-
def walk_node(node)
|
39
|
-
walk_children(node)
|
40
|
-
|
41
|
-
node.each {|item| walk_node(item)} if node.is_a? Array
|
42
|
-
call_node_walker(node)
|
29
|
+
def walk_method_name(node)
|
30
|
+
WALK_METHOD_NAMES[node.class] ||= "walk_#{node.kind}".to_sym
|
43
31
|
end
|
44
32
|
end
|
45
33
|
end
|
@@ -2,135 +2,103 @@ require 'hiptest-publisher/nodes_walker'
|
|
2
2
|
|
3
3
|
module Hiptest
|
4
4
|
module Nodes
|
5
|
-
class ParameterTypeAdder
|
5
|
+
class ParameterTypeAdder
|
6
6
|
attr_reader :call_types
|
7
7
|
|
8
8
|
def self.add(project)
|
9
|
-
|
10
|
-
walker.walk_node(project)
|
11
|
-
|
12
|
-
Hiptest::Nodes::TypeWriter.new(walker.call_types).walk_node(project)
|
9
|
+
Hiptest::Nodes::ParameterTypeAdder.new.process(project)
|
13
10
|
end
|
14
11
|
|
15
|
-
def
|
12
|
+
def initialize
|
16
13
|
@call_types = CallTypes.new
|
17
14
|
end
|
18
15
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
def walk_argument(arg)
|
24
|
-
get_literal_values(arg).each {|value|
|
25
|
-
@call_types.add_argument(arg.children[:name], value[0], value[1])
|
26
|
-
}
|
16
|
+
def process(project)
|
17
|
+
gather_scenarios_argument_types(project)
|
18
|
+
gather_call_argument_types(project)
|
19
|
+
write_parameter_types(project)
|
27
20
|
end
|
28
21
|
|
29
|
-
def
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
@call_types.add_callable_item(scenario.children[:name])
|
22
|
+
def gather_scenarios_argument_types(project)
|
23
|
+
project.children[:scenarios].children[:scenarios].each do |scenario|
|
24
|
+
@call_types.add_callable_item(scenario.children[:name])
|
25
|
+
add_arguments_from(scenario.children[:datatable])
|
26
|
+
end
|
35
27
|
end
|
36
28
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
node.each_sub_nodes(StringLiteral, NumericLiteral, BooleanLiteral) do |literal|
|
42
|
-
values << [literal.class, literal.children[:value]]
|
29
|
+
def gather_call_argument_types(project)
|
30
|
+
project.each_sub_nodes(Call) do |call|
|
31
|
+
@call_types.add_callable_item(call.children[:actionword])
|
32
|
+
add_arguments_from(call)
|
43
33
|
end
|
44
|
-
values << [NullLiteral, nil] if values.empty?
|
45
|
-
values
|
46
34
|
end
|
47
|
-
end
|
48
35
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
36
|
+
def write_parameter_types(project)
|
37
|
+
project.each_sub_nodes(Actionword, Scenario) do |callable_item|
|
38
|
+
callable_item.each_sub_nodes(Parameter) do |parameter|
|
39
|
+
parameter.children[:type] = @call_types.type_of(callable_item.children[:name], parameter.children[:name])
|
40
|
+
end
|
41
|
+
end
|
53
42
|
end
|
54
43
|
|
55
|
-
def
|
56
|
-
|
44
|
+
def add_arguments_from(node)
|
45
|
+
node.each_sub_nodes(Argument) do |argument|
|
46
|
+
@call_types.add_argument_type(argument.children[:name], get_type(argument))
|
47
|
+
end
|
57
48
|
end
|
58
49
|
|
59
|
-
|
60
|
-
@callable_item_name = scenario.children[:name]
|
61
|
-
end
|
50
|
+
private
|
62
51
|
|
63
|
-
def
|
64
|
-
|
52
|
+
def get_type(node)
|
53
|
+
value = node.children[:value]
|
54
|
+
case value
|
55
|
+
when StringLiteral, Template then :String
|
56
|
+
when NumericLiteral then value.children[:value].include?(".") ? :float : :int
|
57
|
+
when BooleanLiteral then :bool
|
58
|
+
else :null
|
59
|
+
end
|
65
60
|
end
|
66
61
|
end
|
67
62
|
|
68
63
|
class CallTypes
|
69
64
|
def initialize
|
70
65
|
@callable_items = {}
|
71
|
-
@
|
72
|
-
end
|
73
|
-
|
74
|
-
def select_callable_item(name)
|
75
|
-
@current = @callable_items[name]
|
66
|
+
@current_callable_item = nil
|
76
67
|
end
|
77
68
|
|
78
69
|
def add_callable_item(name)
|
79
|
-
@callable_items[name]
|
80
|
-
|
70
|
+
@callable_items[name] ||= {}
|
71
|
+
@current_callable_item = @callable_items[name]
|
81
72
|
end
|
82
73
|
|
83
|
-
def
|
84
|
-
|
85
|
-
@
|
86
|
-
end
|
87
|
-
|
88
|
-
def add_default_value(name, type, value)
|
89
|
-
add_parameter(name)
|
90
|
-
@current[name][:default] = {type: type, value: value}
|
74
|
+
def add_argument_type(name, type)
|
75
|
+
@current_callable_item[name] ||= {types: Set.new}
|
76
|
+
@current_callable_item[name][:types] << type
|
91
77
|
end
|
92
78
|
|
93
79
|
def type_of(item_name, parameter_name)
|
94
|
-
|
95
|
-
|
80
|
+
callable_item = @callable_items[item_name]
|
81
|
+
return :String if callable_item.nil?
|
82
|
+
parameter = callable_item[parameter_name]
|
96
83
|
|
97
|
-
return :String if parameter.nil?
|
98
|
-
return
|
84
|
+
return :String if parameter.nil?
|
85
|
+
return type_from_types(parameter[:types])
|
99
86
|
end
|
100
87
|
|
101
88
|
private
|
102
89
|
|
103
|
-
def
|
104
|
-
|
105
|
-
@current[name] = {default: nil, values: []}
|
106
|
-
end
|
107
|
-
|
108
|
-
def type_from_values(values)
|
109
|
-
types = values.map {|val| val[:type] unless val[:type] == Hiptest::Nodes::NullLiteral}.compact.uniq
|
110
|
-
|
90
|
+
def type_from_types(types)
|
91
|
+
types = types - [:null]
|
111
92
|
if types.empty?
|
112
93
|
:null
|
113
94
|
elsif types.length == 1
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
:bool
|
118
|
-
elsif types.first == Hiptest::Nodes::NumericLiteral
|
119
|
-
determine_numeric(values)
|
120
|
-
end
|
95
|
+
types.first
|
96
|
+
elsif types == Set[:float, :int]
|
97
|
+
:float
|
121
98
|
else
|
122
99
|
:String
|
123
100
|
end
|
124
101
|
end
|
125
|
-
|
126
|
-
def determine_numeric(values)
|
127
|
-
types = values.map do |val|
|
128
|
-
next unless val[:type] == Hiptest::Nodes::NumericLiteral
|
129
|
-
return :float if val[:value].include?(".")
|
130
|
-
end.compact.uniq
|
131
|
-
|
132
|
-
:int
|
133
|
-
end
|
134
102
|
end
|
135
103
|
end
|
136
104
|
end
|
@@ -1,16 +1,16 @@
|
|
1
|
+
require 'hiptest-publisher/nodes_walker'
|
2
|
+
|
1
3
|
module Hiptest
|
2
4
|
module Nodes
|
3
|
-
class ParentAdder
|
5
|
+
class ParentAdder
|
4
6
|
def self.add(project)
|
5
|
-
Hiptest::Nodes::ParentAdder.new.
|
7
|
+
Hiptest::Nodes::ParentAdder.new.process(project)
|
6
8
|
end
|
7
9
|
|
8
|
-
def
|
9
|
-
super(node)
|
10
|
-
return unless node.is_a? Hiptest::Nodes::Node
|
11
|
-
|
10
|
+
def process(node)
|
12
11
|
node.each_direct_children {|child|
|
13
12
|
child.parent ||= node
|
13
|
+
process(child)
|
14
14
|
}
|
15
15
|
end
|
16
16
|
end
|
@@ -6,7 +6,7 @@ require 'hiptest-publisher/handlebars_helper'
|
|
6
6
|
require 'hiptest-publisher/render_context_maker'
|
7
7
|
|
8
8
|
module Hiptest
|
9
|
-
class Renderer < Hiptest::Nodes::
|
9
|
+
class Renderer < Hiptest::Nodes::Walker
|
10
10
|
attr_reader :rendered
|
11
11
|
include RenderContextMaker
|
12
12
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiptest-publisher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiptest R&D
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|