hiptest-publisher 1.9.1 → 1.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f79e8d0d83102a88f5c6ecbd646ca307fb148c27
4
- data.tar.gz: 8bbe4dfa77dd911f94b723032b7657aca5d6c508
3
+ metadata.gz: 1dd144d9f192a260569659d26360bf10a0c34992
4
+ data.tar.gz: 30d6081b77bd1226a55eff65398ea20a48ceeafd
5
5
  SHA512:
6
- metadata.gz: 936669461199b8722a7e24009bf1a4d83a180414ec89b3169a18785905e316987a7b93871fbb8f095424efcabf2bb345c309b482f6eb000ee5af179fcb99d3a4
7
- data.tar.gz: 75a41f2401a574648d59e978dbf8ba3f9e3ddc643c94a66af9c9ef1e3b206fb067c7f7181096b7d5615573af3c269a27b8087b41885883c2e67708ddb1a3c5eb
6
+ metadata.gz: 4cf3971eea3f78f5ac5eee01e6c8faf6963e658374f84ab65f674e9f7aabaea9167b99b8e0b6506ee8e0e21929eaab054510d5c426dd8d5e3f2b11427e6828ce
7
+ data.tar.gz: d77ea86b848d94276ecc5bc37313755a1206acca9464b02ae2a087ffba9f12f75e64a17a4d1e3c9c10489e53325c7c5a28a17d5343f9c32ee47e1fd1325b3b56
@@ -4,7 +4,7 @@ indentation = ' '
4
4
  dirname_convention = 'underscore'
5
5
  filename_convention = 'camelize'
6
6
  naming_convention = 'camelize_lower'
7
- custom_renderer = 'groovy/spock/renderer'
7
+ renderer_addons = 'GroovySpockAddon'
8
8
 
9
9
  [tests]
10
10
  filename = 'ProjectSpec.groovy'
@@ -3,22 +3,23 @@ require 'fileutils'
3
3
  require 'json'
4
4
  require 'yaml'
5
5
 
6
- require 'hiptest-publisher/formatters/reporter'
6
+ require 'hiptest-publisher/call_arguments_adder'
7
7
  require 'hiptest-publisher/cli_options_checker'
8
8
  require 'hiptest-publisher/client'
9
- require 'hiptest-publisher/string'
10
- require 'hiptest-publisher/utils'
11
- require 'hiptest-publisher/options_parser'
12
- require 'hiptest-publisher/xml_parser'
13
- require 'hiptest-publisher/parent_adder'
14
9
  require 'hiptest-publisher/datatable_fixer'
15
- require 'hiptest-publisher/parameter_type_adder'
16
- require 'hiptest-publisher/call_arguments_adder'
17
- require 'hiptest-publisher/signature_exporter'
18
- require 'hiptest-publisher/signature_differ'
19
- require 'hiptest-publisher/items_orderer'
10
+ require 'hiptest-publisher/formatters/reporter'
20
11
  require 'hiptest-publisher/gherkin_adder'
21
12
  require 'hiptest-publisher/handlebars_helper'
13
+ require 'hiptest-publisher/items_orderer'
14
+ require 'hiptest-publisher/options_parser'
15
+ require 'hiptest-publisher/parameter_type_adder'
16
+ require 'hiptest-publisher/parent_adder'
17
+ require 'hiptest-publisher/renderer'
18
+ require 'hiptest-publisher/signature_differ'
19
+ require 'hiptest-publisher/signature_exporter'
20
+ require 'hiptest-publisher/string'
21
+ require 'hiptest-publisher/utils'
22
+ require 'hiptest-publisher/xml_parser'
22
23
 
23
24
 
24
25
  module Hiptest
@@ -126,7 +127,7 @@ module Hiptest
126
127
  return true if @cli_options.force_overwrite
127
128
 
128
129
  if $stdout.isatty
129
- puts ""
130
+ STDOUT.print "\n"
130
131
  STDOUT.print "[#{"?".yellow}] File #{path} exists, do you want to overwrite it? [y/N] "
131
132
  answer = $stdin.gets.chomp.downcase.strip
132
133
  return ['y', 'yes'].include?(answer)
@@ -148,7 +149,7 @@ module Hiptest
148
149
 
149
150
  def write_node_to_file(path, node, context, message, ask_overwrite: false)
150
151
  write_to_file(path, message, ask_overwrite: ask_overwrite) do
151
- context.get_renderer.render(node, context)
152
+ Hiptest::Renderer.render(node, context)
152
153
  end
153
154
  end
154
155
 
@@ -2,6 +2,7 @@ require 'set'
2
2
 
3
3
  require 'hiptest-publisher/string'
4
4
  require 'hiptest-publisher/utils'
5
+ require 'hiptest-publisher/renderer'
5
6
 
6
7
  module Hiptest
7
8
  module Nodes
@@ -14,7 +15,7 @@ module Hiptest
14
15
  end
15
16
 
16
17
  def render(rendering_context)
17
- return rendering_context.get_renderer.render(self, rendering_context)
18
+ return Hiptest::Renderer.render(self, rendering_context)
18
19
  end
19
20
 
20
21
  def each_sub_nodes(*types, deep: false)
@@ -5,6 +5,7 @@ require 'digest/md5'
5
5
  require 'pathname'
6
6
 
7
7
  require 'hiptest-publisher/formatters/console_formatter'
8
+ require 'hiptest-publisher/renderer_addons'
8
9
  require 'hiptest-publisher/utils'
9
10
 
10
11
  class FileConfigParser
@@ -341,14 +342,11 @@ class NodeRenderingContext
341
342
  File.dirname(@properties.relative_path)
342
343
  end
343
344
 
344
- def get_renderer
345
- if @properties.renderer_path.nil?
346
- require 'hiptest-publisher/renderer'
347
- else
348
- require "hiptest-publisher/language_specifics/#{@properties.renderer_path}"
345
+ def renderer_addons
346
+ addons = @properties.renderer_addons || ""
347
+ addons.split.map do |addon_name|
348
+ Hiptest.const_get(addon_name)
349
349
  end
350
-
351
- Hiptest::Renderer
352
350
  end
353
351
  end
354
352
 
@@ -559,7 +557,7 @@ class LanguageGroupConfig
559
557
  package: @language_group_params[:package],
560
558
  namespace: @language_group_params[:namespace],
561
559
  uids: @user_params[:uids],
562
- renderer_path: @language_group_params[:custom_renderer]
560
+ renderer_addons: @language_group_params[:renderer_addons],
563
561
  )
564
562
  end
565
563
 
@@ -1,6 +1,111 @@
1
- require 'hiptest-publisher/base_renderer'
1
+ require 'ruby-handlebars'
2
+
3
+ require 'hiptest-publisher/nodes_walker'
4
+ require 'hiptest-publisher/render_context_maker'
2
5
 
3
6
  module Hiptest
4
- class Renderer < Hiptest::BaseRenderer
7
+ class Renderer < Hiptest::Nodes::Walker
8
+ attr_reader :rendered
9
+ include RenderContextMaker
10
+
11
+ def self.render(node, context)
12
+ renderer = self.new(context)
13
+ context.renderer_addons.each do |addon|
14
+ renderer.singleton_class.include(addon)
15
+ end
16
+ renderer.walk_node(node)
17
+ renderer.rendered[node]
18
+ end
19
+
20
+ def initialize(context)
21
+ @rendered = {}
22
+ @context = context
23
+ @template_finder = context.template_finder
24
+ end
25
+
26
+ def walk_call(call)
27
+ # For Gherkin, we need the special arguments rendered.
28
+ if call.free_text_arg
29
+ @rendered_children[:free_text_arg] = @rendered[call.free_text_arg.children[:value]]
30
+ end
31
+
32
+ if call.datatable_arg
33
+ @rendered_children[:datatable_arg] = @rendered[call.datatable_arg.children[:value]]
34
+ end
35
+
36
+ super(call)
37
+ end
38
+
39
+ def walk_scenarios(scs)
40
+ walk_scenario_container(scs)
41
+ super(scs)
42
+ end
43
+
44
+ def walk_actionword(aw)
45
+ add_splitted_tags(aw)
46
+ super(aw)
47
+ end
48
+
49
+ def walk_folder(folder)
50
+ ancestor_tags = folder.ancestors.map {|f| f.children[:tags]}.flatten.uniq
51
+ @rendered_children[:ancestor_tags] = ancestor_tags.map {|t| Hiptest::Renderer.render(t, @context)}
52
+
53
+ walk_scenario_container(folder)
54
+ super(folder)
55
+ end
56
+
57
+ def call_node_walker(node)
58
+ if node.is_a? Hiptest::Nodes::Node
59
+ @rendered_children = {}
60
+
61
+ node.children.each {|name, child| @rendered_children[name] = @rendered[child]}
62
+ @rendered[node] = render_node(node, super(node))
63
+ elsif node.is_a? Array
64
+ @rendered[node] = node.map {|item| @rendered[item]}
65
+ else
66
+ @rendered[node] = node
67
+ end
68
+ end
69
+
70
+ def render_node(node, render_context)
71
+ render_context ||= {}
72
+ render_context[:node] = node
73
+ render_context[:rendered_children] = @rendered_children
74
+ render_context[:context] = @context
75
+
76
+ @template_finder.get_compiled_handlebars(node.kind).call(render_context)
77
+ end
78
+
79
+ private
80
+
81
+ def add_splitted_tags(context)
82
+ @rendered_children[:splitted_tags] = context.children[:tags].map do |tag|
83
+ @rendered[tag]
84
+ end
85
+ end
86
+
87
+ def walk_scenario_container(container)
88
+ # For Robot framework, we need direct access to every scenario
89
+ # datatables and body rendered.
90
+
91
+ @rendered_children[:splitted_scenarios] = container.children[:scenarios].map {|sc|
92
+ {
93
+ name: @rendered[sc.children[:name]],
94
+ tags: sc.children[:tags].map {|tag| @rendered[tag]},
95
+ uid: @rendered[sc.children[:uid]],
96
+ datatable: @rendered[sc.children[:datatable]],
97
+ datasets: sc.children[:datatable].children[:datasets].map {|dataset|
98
+ {
99
+ scenario_name: @rendered[sc.children[:name]],
100
+ name: @rendered[dataset.children[:name]],
101
+ uid: @rendered[dataset.children[:uid]],
102
+ arguments: @rendered[dataset.children[:arguments]]
103
+ }
104
+ },
105
+ parameters: @rendered[sc.children[:parameters]],
106
+ body: @rendered[sc.children[:body]]
107
+ }
108
+ }
109
+ end
5
110
  end
6
111
  end
@@ -0,0 +1 @@
1
+ require 'hiptest-publisher/renderer_addons/groovy_spock_addon'
@@ -1,8 +1,7 @@
1
1
  require 'hiptest-publisher/nodes'
2
- require 'hiptest-publisher/base_renderer'
3
2
 
4
3
  module Hiptest
5
- class Renderer < Hiptest::BaseRenderer
4
+ module GroovySpockAddon
6
5
 
7
6
  def walk_call(call)
8
7
  base = super(call)
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: 1.9.1
4
+ version: 1.9.2
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: 2017-11-13 00:00:00.000000000 Z
11
+ date: 2017-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -248,7 +248,6 @@ files:
248
248
  - lib/config/specflow.conf
249
249
  - lib/hiptest-publisher.rb
250
250
  - lib/hiptest-publisher/actionword_indexer.rb
251
- - lib/hiptest-publisher/base_renderer.rb
252
251
  - lib/hiptest-publisher/call_arguments_adder.rb
253
252
  - lib/hiptest-publisher/cli_options_checker.rb
254
253
  - lib/hiptest-publisher/client.rb
@@ -258,7 +257,6 @@ files:
258
257
  - lib/hiptest-publisher/gherkin_adder.rb
259
258
  - lib/hiptest-publisher/handlebars_helper.rb
260
259
  - lib/hiptest-publisher/items_orderer.rb
261
- - lib/hiptest-publisher/language_specifics/groovy/spock/renderer.rb
262
260
  - lib/hiptest-publisher/nodes.rb
263
261
  - lib/hiptest-publisher/nodes_walker.rb
264
262
  - lib/hiptest-publisher/options_parser.rb
@@ -267,6 +265,8 @@ files:
267
265
  - lib/hiptest-publisher/project_grapher.rb
268
266
  - lib/hiptest-publisher/render_context_maker.rb
269
267
  - lib/hiptest-publisher/renderer.rb
268
+ - lib/hiptest-publisher/renderer_addons.rb
269
+ - lib/hiptest-publisher/renderer_addons/groovy_spock_addon.rb
270
270
  - lib/hiptest-publisher/signature_differ.rb
271
271
  - lib/hiptest-publisher/signature_exporter.rb
272
272
  - lib/hiptest-publisher/string.rb
@@ -626,7 +626,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
626
626
  version: '0'
627
627
  requirements: []
628
628
  rubyforge_project:
629
- rubygems_version: 2.6.10
629
+ rubygems_version: 2.5.1
630
630
  signing_key:
631
631
  specification_version: 4
632
632
  summary: Export your tests from Hiptest into executable tests.
@@ -1,108 +0,0 @@
1
- require 'ruby-handlebars'
2
-
3
- require 'hiptest-publisher/nodes_walker'
4
- require 'hiptest-publisher/render_context_maker'
5
-
6
- module Hiptest
7
- class BaseRenderer < Hiptest::Nodes::Walker
8
- attr_reader :rendered
9
- include RenderContextMaker
10
-
11
- def self.render(node, context)
12
- renderer = self.new(context)
13
- renderer.walk_node(node)
14
- renderer.rendered[node]
15
- end
16
-
17
- def initialize(context)
18
- @rendered = {}
19
- @context = context
20
- @template_finder = context.template_finder
21
- end
22
-
23
- def walk_call(call)
24
- # For Gherkin, we need the special arguments rendered.
25
- if call.free_text_arg
26
- @rendered_children[:free_text_arg] = @rendered[call.free_text_arg.children[:value]]
27
- end
28
-
29
- if call.datatable_arg
30
- @rendered_children[:datatable_arg] = @rendered[call.datatable_arg.children[:value]]
31
- end
32
-
33
- super(call)
34
- end
35
-
36
- def walk_scenarios(scs)
37
- walk_scenario_container(scs)
38
- super(scs)
39
- end
40
-
41
- def walk_actionword(aw)
42
- add_splitted_tags(aw)
43
- super(aw)
44
- end
45
-
46
- def walk_folder(folder)
47
- ancestor_tags = folder.ancestors.map {|f| f.children[:tags]}.flatten.uniq
48
- @rendered_children[:ancestor_tags] = ancestor_tags.map {|t| Hiptest::Renderer.render(t, @context)}
49
-
50
- walk_scenario_container(folder)
51
- super(folder)
52
- end
53
-
54
- def call_node_walker(node)
55
- if node.is_a? Hiptest::Nodes::Node
56
- @rendered_children = {}
57
-
58
- node.children.each {|name, child| @rendered_children[name] = @rendered[child]}
59
- @rendered[node] = render_node(node, super(node))
60
- elsif node.is_a? Array
61
- @rendered[node] = node.map {|item| @rendered[item]}
62
- else
63
- @rendered[node] = node
64
- end
65
- end
66
-
67
- def render_node(node, render_context)
68
- render_context ||= {}
69
- render_context[:node] = node
70
- render_context[:rendered_children] = @rendered_children
71
- render_context[:context] = @context
72
-
73
- @template_finder.get_compiled_handlebars(node.kind).call(render_context)
74
- end
75
-
76
- private
77
-
78
- def add_splitted_tags(context)
79
- @rendered_children[:splitted_tags] = context.children[:tags].map do |tag|
80
- @rendered[tag]
81
- end
82
- end
83
-
84
- def walk_scenario_container(container)
85
- # For Robot framework, we need direct access to every scenario
86
- # datatables and body rendered.
87
-
88
- @rendered_children[:splitted_scenarios] = container.children[:scenarios].map {|sc|
89
- {
90
- name: @rendered[sc.children[:name]],
91
- tags: sc.children[:tags].map {|tag| @rendered[tag]},
92
- uid: @rendered[sc.children[:uid]],
93
- datatable: @rendered[sc.children[:datatable]],
94
- datasets: sc.children[:datatable].children[:datasets].map {|dataset|
95
- {
96
- scenario_name: @rendered[sc.children[:name]],
97
- name: @rendered[dataset.children[:name]],
98
- uid: @rendered[dataset.children[:uid]],
99
- arguments: @rendered[dataset.children[:arguments]]
100
- }
101
- },
102
- parameters: @rendered[sc.children[:parameters]],
103
- body: @rendered[sc.children[:body]]
104
- }
105
- }
106
- end
107
- end
108
- end