hiptest-publisher 2.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +310 -0
  3. data/LICENSE +1 -2
  4. data/README.md +38 -22
  5. data/bin/hiptest-publisher +11 -7
  6. data/config/locales/en.yml +16 -14
  7. data/lib/config/cucumber-typescript.conf +41 -41
  8. data/lib/config/cucumber_legacy-groovy.conf +40 -0
  9. data/lib/config/cucumber_legacy-java.conf +24 -0
  10. data/lib/config/cucumber_legacy-typescript.conf +41 -0
  11. data/lib/hiptest-publisher.rb +1 -1
  12. data/lib/hiptest-publisher/client.rb +61 -10
  13. data/lib/hiptest-publisher/formatters/console_formatter.rb +1 -0
  14. data/lib/hiptest-publisher/handlebars_helper.rb +1 -1
  15. data/lib/hiptest-publisher/options_parser.rb +44 -8
  16. data/lib/hiptest-publisher/renderer.rb +5 -1
  17. data/lib/hiptest-publisher/renderer_addons/gherkin_addon.rb +21 -0
  18. data/lib/templates/common/_gherkin_typed_pattern.hbs +1 -0
  19. data/lib/templates/cucumber/groovy/step-definitions/actionword.hbs +1 -1
  20. data/lib/templates/cucumber/groovy/step-definitions/actionwords.hbs +3 -2
  21. data/lib/templates/cucumber/groovy/step-definitions/library.hbs +3 -2
  22. data/lib/templates/cucumber/groovy/step-definitions/libraryactionword.hbs +1 -1
  23. data/lib/templates/cucumber/java/actionword.hbs +1 -1
  24. data/lib/templates/cucumber/java/actionwords.hbs +2 -2
  25. data/lib/templates/cucumber/typescript/actionword.hbs +1 -1
  26. data/lib/templates/cucumber/typescript/libraryactionword.hbs +1 -1
  27. data/lib/templates/cucumber_legacy/groovy/step-definitions/actionword.hbs +5 -0
  28. data/lib/templates/cucumber_legacy/groovy/step-definitions/actionwords.hbs +10 -0
  29. data/lib/templates/cucumber_legacy/groovy/step-definitions/library.hbs +10 -0
  30. data/lib/templates/cucumber_legacy/groovy/step-definitions/libraryactionword.hbs +5 -0
  31. data/lib/templates/cucumber_legacy/java/actionword.hbs +6 -0
  32. data/lib/templates/cucumber_legacy/java/actionwords.hbs +12 -0
  33. data/lib/templates/cucumber_legacy/typescript/actionword.hbs +5 -0
  34. data/lib/templates/cucumber_legacy/typescript/libraryactionword.hbs +5 -0
  35. data/lib/templates/gherkin/scenarios.hbs +1 -1
  36. data/lib/templates/groovy/_scenario.hbs +1 -1
  37. metadata +64 -35
@@ -63,6 +63,7 @@ class ConsoleFormatter
63
63
  cursor_offset = ""
64
64
  else
65
65
  return unless tty?
66
+ return if IO.console.nil?
66
67
  rows, columns = IO.console.winsize
67
68
  return if columns == 0
68
69
  @immediate_verbose = false
@@ -88,7 +88,7 @@ module Hiptest
88
88
  end
89
89
 
90
90
  def hh_join_gherkin_dataset(context, items, block, else_block = nil)
91
- items.map! {|item| item.gsub(/\|/, "\\|")}
91
+ items.map! { |item| item.gsub(/\|/, "\\|").gsub("\n", "\\n") }
92
92
 
93
93
  hh_join(context, items, ' | ', block, else_block)
94
94
  end
@@ -114,6 +114,10 @@ class CliOptions < OpenStruct
114
114
  option_present?(test_run_name)
115
115
  end
116
116
 
117
+ def test_run?
118
+ test_run_id? || test_run_name?
119
+ end
120
+
117
121
  def language_framework
118
122
  if framework.empty?
119
123
  language
@@ -132,10 +136,15 @@ class CliOptions < OpenStruct
132
136
  "--#{key.to_s.gsub('_', '-')}=#{self[key]}"
133
137
  end.compact
134
138
 
135
- return "hiptest-publisher #{args.join(' ')}".strip
139
+ "hiptest-publisher #{args.join(' ')}".strip
140
+ end
141
+
142
+ def uids_not_set_yet?
143
+ !__cli_args.include?(:uids) && !__config_args.include?(:uids)
136
144
  end
137
145
 
138
146
  def normalize!(reporter = nil)
147
+ self.uids = true if test_run? && uids_not_set_yet?
139
148
  self.no_uids = !uids # silent normalization
140
149
  modified_options = self.clone
141
150
  if actionwords_only
@@ -194,6 +203,7 @@ class OptionsParser
194
203
  {
195
204
  'Ruby' => ['Rspec', 'MiniTest'],
196
205
  'Cucumber' => ['Ruby', 'Java', 'Javascript', 'Groovy', 'TypeScript'],
206
+ 'Cucumber_Legacy' => ['Java', 'Groovy', 'TypeScript'],
197
207
  'Java' => ['JUnit', 'Test NG', 'Espresso'],
198
208
  'Python' => ['Unittest'],
199
209
  'Robot Framework' => [''],
@@ -205,7 +215,8 @@ class OptionsParser
205
215
  'Behave' => [''],
206
216
  'Behat' => [''],
207
217
  'Groovy' => ['Spock'],
208
- 'JBehave' => ['']
218
+ 'JBehave' => [''],
219
+ 'Swift' => ['XCTest']
209
220
  }
210
221
  end
211
222
 
@@ -218,6 +229,7 @@ class OptionsParser
218
229
  Option.new(nil, 'filename-pattern=PATTERN', nil, String, I18n.t('options.filename_pattern'), :filename_pattern),
219
230
  Option.new('c', 'config-file=PATH', nil, String, I18n.t('options.config'), :config),
220
231
  Option.new(nil, 'overriden-templates=PATH', '', String, I18n.t('options.overriden_templates'), :overriden_templates),
232
+ Option.new(nil, 'overriden-language-configs=PATH', '', String, I18n.t('options.overriden_language_configs'), :overriden_language_configs),
221
233
  Option.new(nil, 'test-run-id=ID', '', String, I18n.t('options.test_run_id'), :test_run_id),
222
234
  Option.new(nil, 'test-run-name=NAME', '', String, I18n.t('options.test_run_name'), :test_run_name),
223
235
  Option.new(nil, 'only=CATEGORIES', nil, String, I18n.t('options.only'), :only),
@@ -240,14 +252,14 @@ class OptionsParser
240
252
  Option.new(nil, 'empty-folders', false, nil, I18n.t('options.empty_folders'), :empty_folders),
241
253
  Option.new(nil, 'split-scenarios', false, nil, I18n.t('options.split_scenarios'), :split_scenarios),
242
254
  Option.new(nil, 'leafless-export', false, nil, I18n.t('options.leafless_export'), :leafless_export),
243
- Option.new('s', 'site=SITE', 'https://app.hiptest.com', String, I18n.t('options.site'), :site),
255
+ Option.new('s', 'site=SITE', 'https://studio.cucumber.io', String, I18n.t('options.site'), :site),
244
256
  Option.new(nil, 'http-proxy=PROXY_URL', nil, String, I18n.t('options.http_proxy'), :http_proxy),
245
257
  Option.new('p', 'push=FILE.TAP', '', String, I18n.t('options.push'), :push),
246
258
  Option.new(nil, 'global-failure-on-missing-reports', false, nil, I18n.t('options.global_failure_on_missing_reports'), :global_failure_on_missing_reports),
247
259
  Option.new(nil, 'push-format=tap', 'tap', String, I18n.t('options.push_format'), :push_format),
248
260
  Option.new(nil, 'execution-environment=NAME', '', String, I18n.t('options.execution_environment'), :execution_environment),
249
261
  Option.new(nil, 'sort=[id,order,alpha]', 'order', String, I18n.t('options.sort'), :sort),
250
- Option.new(nil, '[no-]uids', true, nil, I18n.t('options.uids'), :uids),
262
+ Option.new(nil, '[no-]uids', false, nil, I18n.t('options.uids'), :uids),
251
263
  Option.new(nil, '[no-]parent-folder-tags', true, nil, I18n.t('options.parent_folder_tags'), :parent_folder_tags),
252
264
  Option.new(nil, 'parameter-delimiter=DELIMITER', '"', EmptiableString, I18n.t('options.parameter_delimiter'), :parameter_delimiter),
253
265
  Option.new(nil, 'with-dataset-names', false, nil, I18n.t('options.with_dataset_names'), :with_dataset_names),
@@ -264,12 +276,19 @@ class OptionsParser
264
276
  Option.new(nil, 'check-version', false, nil, I18n.t('options.check_version'), :check_version),
265
277
  Option.new(nil, 'force', false, nil, I18n.t('options.force_overwrite'), :force_overwrite),
266
278
  Option.new(nil, '[no-]color', nil, nil, I18n.t('options.color'), :color),
267
- Option.new('v', 'verbose', false, nil, I18n.t('options.verbose'), :verbose)
279
+ Option.new('v', 'verbose', false, nil, I18n.t('options.verbose'), :verbose),
280
+ Option.new(nil, 'indentation=INDENTATION', nil, EmptiableString, I18n.t('options.indentation'), :indent)
268
281
  ]
269
282
  end
270
283
 
271
284
  def self.default_cache_directory
272
- File.join(Dir.home, '.hiptest-publisher', 'cache')
285
+ home_dir = begin
286
+ Dir.home
287
+ rescue
288
+ '.'
289
+ end
290
+
291
+ File.join(home_dir, '.hiptest-publisher', 'cache')
273
292
  end
274
293
 
275
294
  def self.parse(args, reporter)
@@ -365,6 +384,7 @@ class NodeRenderingContext
365
384
 
366
385
  def renderer_addons
367
386
  addons = @properties.renderer_addons || ""
387
+
368
388
  addons.split.map do |addon_name|
369
389
  Hiptest.const_get(addon_name)
370
390
  end
@@ -372,11 +392,12 @@ class NodeRenderingContext
372
392
  end
373
393
 
374
394
  class TemplateFinder
375
- attr_reader :template_dirs, :overriden_templates, :forced_templates, :fallback_template
395
+ attr_reader :template_dirs, :overriden_templates, :overriden_language_configs, :forced_templates, :fallback_template
376
396
 
377
397
  def initialize(
378
398
  template_dirs: nil,
379
399
  overriden_templates: nil,
400
+ overriden_language_configs: nil,
380
401
  indentation: ' ',
381
402
  forced_templates: nil,
382
403
  fallback_template: nil,
@@ -556,6 +577,7 @@ class LanguageGroupConfig
556
577
  end
557
578
 
558
579
  def indentation
580
+ return @user_params[:indent] unless @user_params[:indent].nil?
559
581
  @language_group_params[:indentation] || ' '
560
582
  end
561
583
 
@@ -677,7 +699,21 @@ class LanguageConfigParser
677
699
  else
678
700
  "#{cli_options.language}-#{cli_options.framework}.conf"
679
701
  end
680
- config_path = File.expand_path("#{hiptest_publisher_path}/lib/config/#{config_name.downcase}")
702
+ config_path = "/lib/config/#{config_name.downcase}"
703
+ config_prefix = if !cli_options.overriden_language_configs.to_s.empty?
704
+ # If the user has specified a overiden language config path, check it first. If the config
705
+ # exists there, return that, otherwise fall back to the default setup and look for a config there.
706
+ expanded = File.expand_path("#{cli_options.overriden_language_configs}/#{config_name.downcase}")
707
+
708
+ # If the file exists in the path the user specified, set the config path to blank so we will be
709
+ # looking in the exact path that the user requested.
710
+ if File.file?(expanded)
711
+ config_path = ''
712
+ expanded
713
+ end
714
+ end
715
+
716
+ config_path = File.expand_path("#{config_prefix || hiptest_publisher_path}#{config_path}")
681
717
 
682
718
  if !File.file?(config_path)
683
719
  if cli_options.framework.to_s.empty?
@@ -27,7 +27,11 @@ module Hiptest
27
27
  if node.is_a? Hiptest::Nodes::Node
28
28
  @rendered_children = {}
29
29
 
30
- node.children.each {|name, child| @rendered_children[name] = @rendered[child]}
30
+ node.children.each do |name, child|
31
+ @rendered_children[name] = @rendered[child]
32
+
33
+ @rendered_children[name].uniq! if name == :actionwords && @rendered_children[name].is_a?(Array)
34
+ end
31
35
  @rendered[node] = render_node(node, super(node))
32
36
  elsif node.is_a? Array
33
37
  @rendered[node] = node.map {|item| @rendered[item]}
@@ -14,6 +14,14 @@ module Hiptest
14
14
  super(call)
15
15
  end
16
16
 
17
+ def walk_actionword(aw)
18
+ parameters = aw.children[:parameters]
19
+ aw.chunks = replace_parameter_value_with_type(aw.chunks, parameters)
20
+ aw.extra_inlined_parameters = replace_parameter_value_with_type(aw.extra_inlined_parameters, parameters)
21
+
22
+ super(aw)
23
+ end
24
+
17
25
  def walk_folder(folder)
18
26
  @rendered_children[:ancestor_tags] = ancestor_tags(folder)
19
27
 
@@ -34,5 +42,18 @@ module Hiptest
34
42
  ancestor_tags = folder.ancestors.map { |f| f.children[:tags] }.flatten.uniq
35
43
  ancestor_tags.map { |t| Hiptest::Renderer.render(t, @context) }
36
44
  end
45
+
46
+ def replace_parameter_value_with_type(collection, parameters)
47
+ collection.map do |obj|
48
+ if obj[:is_parameter]
49
+ parameter = parameters.find { |parameter| parameter.children[:name] == obj[:name] }
50
+ obj[:typed_value] = parameter ? "{#{parameter.type.downcase}}" : "{}"
51
+ else
52
+ obj[:typed_value] = obj[:value]
53
+ end
54
+
55
+ obj
56
+ end
57
+ end
37
58
  end
38
59
  end
@@ -0,0 +1 @@
1
+ {{#strip}}{{#each chunks as |treated_chunk|}}{{treated_chunk.typed_value}}{{/each}}{{#each extra_inlined_parameters as |param|}} {{param.typed_value}}{{/each}}{{/strip}}
@@ -1,4 +1,4 @@
1
- {{#if rendered_children.gherkin_annotation }}{{{ rendered_children.gherkin_annotation }}}(~"^{{#escape_backslashes_and_double_quotes}}{{> gherkin_pattern}}{{/escape_backslashes_and_double_quotes}}\$") { {{{ join rendered_children.parameters_ordered_by_pattern ', '}}} ->{{#indent}}
1
+ {{#if rendered_children.gherkin_annotation }}{{{ rendered_children.gherkin_annotation }}}("{{#escape_backslashes_and_double_quotes}}{{> gherkin_typed_pattern}}{{/escape_backslashes_and_double_quotes}}") { {{{ join rendered_children.parameters_ordered_by_pattern ', '}}} ->{{#indent}}
2
2
  {{{ context.call_prefix }}}.{{{camelize_lower uniq_name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{camelize_lower param}}}{{/join}}{{/if}})
3
3
  {{/indent}}
4
4
  }
@@ -1,8 +1,9 @@
1
1
  package {{{ context.package }}}
2
2
 
3
- import cucumber.api.DataTable
3
+ import io.cucumber.datatable.DataTable
4
+ import io.cucumber.groovy.EN
4
5
 
5
- this.metaClass.mixin(cucumber.api.groovy.EN)
6
+ this.metaClass.mixin(EN)
6
7
 
7
8
  Actionwords {{{ context.call_prefix }}} = new Actionwords()
8
9
 
@@ -1,8 +1,9 @@
1
1
  package {{{ context.package }}}
2
2
 
3
- import cucumber.api.DataTable
3
+ import io.cucumber.datatable.DataTable
4
+ import io.cucumber.groovy.EN
4
5
 
5
- this.metaClass.mixin(cucumber.api.groovy.EN)
6
+ this.metaClass.mixin(EN)
6
7
 
7
8
  Actionwords {{{ context.call_prefix }}} = new Actionwords()
8
9
 
@@ -1,4 +1,4 @@
1
- {{#if rendered_children.gherkin_annotation }}{{{ rendered_children.gherkin_annotation }}}(~"^{{#escape_backslashes_and_double_quotes}}{{> gherkin_pattern}}{{/escape_backslashes_and_double_quotes}}\$") { {{{ join rendered_children.parameters_ordered_by_pattern ', '}}} ->{{#indent}}
1
+ {{#if rendered_children.gherkin_annotation }}{{{ rendered_children.gherkin_annotation }}}("{{#escape_backslashes_and_double_quotes}}{{> gherkin_typed_pattern}}{{/escape_backslashes_and_double_quotes}}") { {{{ join rendered_children.parameters_ordered_by_pattern ', '}}} ->{{#indent}}
2
2
  {{{ context.call_prefix }}}.get{{{camelize library_name}}}Library().{{{camelize_lower uniq_name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{camelize_lower param}}}{{/join}}{{/if}})
3
3
  {{/indent}}
4
4
  }
@@ -1,4 +1,4 @@
1
- {{#if rendered_children.gherkin_annotation }}@{{{ rendered_children.gherkin_annotation }}}("{{#escape_backslashes_and_double_quotes}}{{> gherkin_pattern}}{{/escape_backslashes_and_double_quotes}}")
1
+ {{#if rendered_children.gherkin_annotation }}@{{{ rendered_children.gherkin_annotation }}}("{{#escape_backslashes_and_double_quotes}}{{> gherkin_typed_pattern}}{{/escape_backslashes_and_double_quotes}}")
2
2
  public void {{{camelize_lower rendered_children.name}}}({{{ join rendered_children.parameters_ordered_by_pattern ', '}}}) {{#curly}}{{#indent}}
3
3
  {{{ context.call_prefix }}}.{{{camelize_lower rendered_children.name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{camelize_lower param}}}{{/join}}{{/if}});
4
4
  {{/indent}}
@@ -1,7 +1,7 @@
1
1
  package {{{ context.package }}};
2
2
 
3
- import cucumber.api.DataTable;
4
- import cucumber.api.java.en.*;
3
+ import io.cucumber.datatable.DataTable;
4
+ import io.cucumber.java.en.*;
5
5
 
6
6
  public class StepDefinitions {{#curly}}{{#indent}}
7
7
  public Actionwords {{{ context.call_prefix }}} = new Actionwords();
@@ -1,5 +1,5 @@
1
1
  {{#if rendered_children.gherkin_annotation }}
2
- {{{ rendered_children.gherkin_annotation }}}(/{{> gherkin_pattern}}/, async ({{#if rendered_children.parameters}}{{{ join rendered_children.parameters_ordered_by_pattern ', '}}}{{/if}}) => {{#curly}}{{#indent}}
2
+ {{{ rendered_children.gherkin_annotation }}}('{{> gherkin_typed_pattern}}', async ({{#if rendered_children.parameters}}{{{ join rendered_children.parameters_ordered_by_pattern ', '}}}{{/if}}) => {{#curly}}{{#indent}}
3
3
  actionWords.{{{camelize_lower rendered_children.name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{underscore param}}}{{/join}}{{/if}});
4
4
  {{/indent}}
5
5
  {{/curly}});{{/if}}
@@ -1,5 +1,5 @@
1
1
  {{#if rendered_children.gherkin_annotation}}
2
- {{{ rendered_children.gherkin_annotation }}}(/{{> gherkin_pattern}}/, async ({{#if rendered_children.parameters}}{{{ join rendered_children.parameters_ordered_by_pattern ', '}}}{{/if}}) => {{#curly}}{{#indent}}
2
+ {{{ rendered_children.gherkin_annotation }}}('{{> gherkin_typed_pattern}}', async ({{#if rendered_children.parameters}}{{{ join rendered_children.parameters_ordered_by_pattern ', '}}}{{/if}}) => {{#curly}}{{#indent}}
3
3
  libraryActionWord.getDefaultLibrary().{{{camelize_lower rendered_children.name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{underscore param}}}{{/join}}{{/if}});
4
4
  {{/indent}}
5
5
  {{/curly}});{{/if}}
@@ -0,0 +1,5 @@
1
+ {{#if rendered_children.gherkin_annotation }}{{{ rendered_children.gherkin_annotation }}}(~"^{{#escape_backslashes_and_double_quotes}}{{> gherkin_pattern}}{{/escape_backslashes_and_double_quotes}}\$") { {{{ join rendered_children.parameters_ordered_by_pattern ', '}}} ->{{#indent}}
2
+ {{{ context.call_prefix }}}.{{{camelize_lower uniq_name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{camelize_lower param}}}{{/join}}{{/if}})
3
+ {{/indent}}
4
+ }
5
+ {{/if}}
@@ -0,0 +1,10 @@
1
+ package {{{ context.package }}}
2
+
3
+ import cucumber.api.DataTable
4
+
5
+ this.metaClass.mixin(cucumber.api.groovy.EN)
6
+
7
+ Actionwords {{{ context.call_prefix }}} = new Actionwords()
8
+
9
+ {{#each rendered_children.actionwords as |actionword|}}{{{actionword}}}
10
+ {{/each}}
@@ -0,0 +1,10 @@
1
+ package {{{ context.package }}}
2
+
3
+ import cucumber.api.DataTable
4
+
5
+ this.metaClass.mixin(cucumber.api.groovy.EN)
6
+
7
+ Actionwords {{{ context.call_prefix }}} = new Actionwords()
8
+
9
+ {{#each rendered_children.library_actionwords as |actionword|}}{{{actionword}}}
10
+ {{/each}}
@@ -0,0 +1,5 @@
1
+ {{#if rendered_children.gherkin_annotation }}{{{ rendered_children.gherkin_annotation }}}(~"^{{#escape_backslashes_and_double_quotes}}{{> gherkin_pattern}}{{/escape_backslashes_and_double_quotes}}\$") { {{{ join rendered_children.parameters_ordered_by_pattern ', '}}} ->{{#indent}}
2
+ {{{ context.call_prefix }}}.get{{{camelize library_name}}}Library().{{{camelize_lower uniq_name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{camelize_lower param}}}{{/join}}{{/if}})
3
+ {{/indent}}
4
+ }
5
+ {{/if}}
@@ -0,0 +1,6 @@
1
+ {{#if rendered_children.gherkin_annotation }}@{{{ rendered_children.gherkin_annotation }}}("{{#escape_backslashes_and_double_quotes}}{{> gherkin_pattern}}{{/escape_backslashes_and_double_quotes}}")
2
+ public void {{{camelize_lower rendered_children.name}}}({{{ join rendered_children.parameters_ordered_by_pattern ', '}}}) {{#curly}}{{#indent}}
3
+ {{{ context.call_prefix }}}.{{{camelize_lower rendered_children.name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{camelize_lower param}}}{{/join}}{{/if}});
4
+ {{/indent}}
5
+ {{/curly}}
6
+ {{/if}}
@@ -0,0 +1,12 @@
1
+ package {{{ context.package }}};
2
+
3
+ import cucumber.api.DataTable;
4
+ import cucumber.api.java.en.*;
5
+
6
+ public class StepDefinitions {{#curly}}{{#indent}}
7
+ public Actionwords {{{ context.call_prefix }}} = new Actionwords();
8
+
9
+ {{#each rendered_children.actionwords as |actionword|}}{{{actionword}}}
10
+ {{/each}}
11
+ {{/indent}}
12
+ {{/curly}}
@@ -0,0 +1,5 @@
1
+ {{#if rendered_children.gherkin_annotation }}
2
+ {{{ rendered_children.gherkin_annotation }}}(/{{> gherkin_pattern}}/, async ({{#if rendered_children.parameters}}{{{ join rendered_children.parameters_ordered_by_pattern ', '}}}{{/if}}) => {{#curly}}{{#indent}}
3
+ actionWords.{{{camelize_lower rendered_children.name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{underscore param}}}{{/join}}{{/if}});
4
+ {{/indent}}
5
+ {{/curly}});{{/if}}
@@ -0,0 +1,5 @@
1
+ {{#if rendered_children.gherkin_annotation}}
2
+ {{{ rendered_children.gherkin_annotation }}}(/{{> gherkin_pattern}}/, async ({{#if rendered_children.parameters}}{{{ join rendered_children.parameters_ordered_by_pattern ', '}}}{{/if}}) => {{#curly}}{{#indent}}
3
+ libraryActionWord.getDefaultLibrary().{{{camelize_lower rendered_children.name}}}({{#if has_parameters?}}{{#join raw_parameter_names ', ' as |param|}}{{{underscore param}}}{{/join}}{{/if}});
4
+ {{/indent}}
5
+ {{/curly}});{{/if}}
@@ -1,3 +1,3 @@
1
1
  # To export your project to Gherkin correctly, you can add the option
2
2
  # --with-folders when calling hiptest-publisher. It will keep the
3
- # HipTest folders hierarchy of your project.
3
+ # folders hierarchy of your CucumberStudio Test Management project.
@@ -1,5 +1,5 @@
1
1
  {{#if has_datasets?}}
2
- @Unroll("{{{ escape_double_quotes rendered_children.name }}} #hiptestUid")
2
+ @Unroll("{{{ escape_double_quotes rendered_children.name }}}{{#if context.uids}} #hiptestUid{{/if}}")
3
3
  {{/if}}def "{{{ escape_double_quotes rendered_children.name }}}{{#if rendered_children.uid}} (uid:{{{ rendered_children.uid}}}){{/if}}"() {{#curly}}{{#indent}}{{> desc}}{{#unless has_annotations?}}{{#unless is_empty?}}
4
4
  expect:{{/unless}}{{/unless}}
5
5
  {{> steps}}{{#if has_datasets?}}
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiptest-publisher
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - HipTest R&D
8
- autorequire:
7
+ - CucumberStudio R&D
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-03 00:00:00.000000000 Z
11
+ date: 2021-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.7'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 0.7.5
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '0.7'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '0.7'
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 0.7.5
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.7'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: parseconfig
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '1.0'
40
37
  - - ">="
41
38
  - !ruby/object:Gem::Version
42
39
  version: 1.0.4
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.0'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '1.0'
50
47
  - - ">="
51
48
  - !ruby/object:Gem::Version
52
49
  version: 1.0.4
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: i18n
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -88,22 +88,22 @@ dependencies:
88
88
  name: multipart-post
89
89
  requirement: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - "~>"
92
- - !ruby/object:Gem::Version
93
- version: '2.1'
94
91
  - - ">="
95
92
  - !ruby/object:Gem::Version
96
93
  version: 2.1.1
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.1'
97
97
  type: :runtime
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.1'
104
101
  - - ">="
105
102
  - !ruby/object:Gem::Version
106
103
  version: 2.1.1
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '2.1'
107
107
  - !ruby/object:Gem::Dependency
108
108
  name: ruby_version
109
109
  requirement: !ruby/object:Gem::Requirement
@@ -192,22 +192,22 @@ dependencies:
192
192
  name: codeclimate-test-reporter
193
193
  requirement: !ruby/object:Gem::Requirement
194
194
  requirements:
195
- - - "~>"
196
- - !ruby/object:Gem::Version
197
- version: '0.4'
198
195
  - - ">="
199
196
  - !ruby/object:Gem::Version
200
197
  version: 0.4.6
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '0.4'
201
201
  type: :development
202
202
  prerelease: false
203
203
  version_requirements: !ruby/object:Gem::Requirement
204
204
  requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: '0.4'
208
205
  - - ">="
209
206
  - !ruby/object:Gem::Version
210
207
  version: 0.4.6
208
+ - - "~>"
209
+ - !ruby/object:Gem::Version
210
+ version: '0.4'
211
211
  - !ruby/object:Gem::Dependency
212
212
  name: i18n-tasks
213
213
  requirement: !ruby/object:Gem::Requirement
@@ -236,16 +236,32 @@ dependencies:
236
236
  - - "~>"
237
237
  - !ruby/object:Gem::Version
238
238
  version: 0.1.1
239
+ - !ruby/object:Gem::Dependency
240
+ name: actionview
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - "~>"
244
+ - !ruby/object:Gem::Version
245
+ version: '5.2'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - "~>"
251
+ - !ruby/object:Gem::Version
252
+ version: '5.2'
239
253
  description: Provides a command-line tool that generates Java, Python or Ruby code
240
254
  to run the tests.
241
- email: contact@hiptest.com
255
+ email: studio@cucumber.io
242
256
  executables:
243
257
  - hiptest-publisher
244
258
  extensions: []
245
259
  extra_rdoc_files:
260
+ - CHANGELOG.md
246
261
  - LICENSE
247
262
  - README.md
248
263
  files:
264
+ - CHANGELOG.md
249
265
  - LICENSE
250
266
  - README.md
251
267
  - bin/hiptest-publisher
@@ -259,6 +275,9 @@ files:
259
275
  - lib/config/cucumber-javascript.conf
260
276
  - lib/config/cucumber-ruby.conf
261
277
  - lib/config/cucumber-typescript.conf
278
+ - lib/config/cucumber_legacy-groovy.conf
279
+ - lib/config/cucumber_legacy-java.conf
280
+ - lib/config/cucumber_legacy-typescript.conf
262
281
  - lib/config/groovy-spock.conf
263
282
  - lib/config/java-espresso.conf
264
283
  - lib/config/java-junit.conf
@@ -326,6 +345,7 @@ files:
326
345
  - lib/templates/behave/libraryactionword.hbs
327
346
  - lib/templates/behave/nullliteral.hbs
328
347
  - lib/templates/common/_gherkin_pattern.hbs
348
+ - lib/templates/common/_gherkin_typed_pattern.hbs
329
349
  - lib/templates/common/booleanliteral.hbs
330
350
  - lib/templates/common/dataset.hbs
331
351
  - lib/templates/common/datatable.hbs
@@ -391,6 +411,14 @@ files:
391
411
  - lib/templates/cucumber/typescript/actionwords.hbs
392
412
  - lib/templates/cucumber/typescript/library.hbs
393
413
  - lib/templates/cucumber/typescript/libraryactionword.hbs
414
+ - lib/templates/cucumber_legacy/groovy/step-definitions/actionword.hbs
415
+ - lib/templates/cucumber_legacy/groovy/step-definitions/actionwords.hbs
416
+ - lib/templates/cucumber_legacy/groovy/step-definitions/library.hbs
417
+ - lib/templates/cucumber_legacy/groovy/step-definitions/libraryactionword.hbs
418
+ - lib/templates/cucumber_legacy/java/actionword.hbs
419
+ - lib/templates/cucumber_legacy/java/actionwords.hbs
420
+ - lib/templates/cucumber_legacy/typescript/actionword.hbs
421
+ - lib/templates/cucumber_legacy/typescript/libraryactionword.hbs
394
422
  - lib/templates/gherkin/_call.hbs
395
423
  - lib/templates/gherkin/_gherkin_text.hbs
396
424
  - lib/templates/gherkin/_scenario.hbs
@@ -729,11 +757,11 @@ files:
729
757
  - lib/templates/typescript/library.hbs
730
758
  - lib/templates/typescript/libraryactionword.hbs
731
759
  - lib/templates/typescript/parameter.hbs
732
- homepage: https://hiptest.com
760
+ homepage: https://cucumber.io
733
761
  licenses:
734
- - GPL-2.0
762
+ - MIT
735
763
  metadata: {}
736
- post_install_message:
764
+ post_install_message:
737
765
  rdoc_options: []
738
766
  require_paths:
739
767
  - lib
@@ -748,8 +776,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
748
776
  - !ruby/object:Gem::Version
749
777
  version: '0'
750
778
  requirements: []
751
- rubygems_version: 3.0.1
752
- signing_key:
779
+ rubyforge_project:
780
+ rubygems_version: 2.7.6.2
781
+ signing_key:
753
782
  specification_version: 4
754
- summary: Export your tests from HipTest into executable tests.
783
+ summary: Export your tests from CucumberStudio into executable tests.
755
784
  test_files: []