hiptest-publisher 2.4.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +310 -0
- data/LICENSE +1 -2
- data/README.md +26 -21
- data/bin/hiptest-publisher +11 -7
- data/config/locales/en.yml +14 -13
- data/lib/config/cucumber-typescript.conf +41 -41
- data/lib/config/cucumber_legacy-groovy.conf +40 -0
- data/lib/config/cucumber_legacy-java.conf +24 -0
- data/lib/config/{cucumber_expressions-typescript.conf → cucumber_legacy-typescript.conf} +41 -41
- data/lib/hiptest-publisher/formatters/console_formatter.rb +1 -0
- data/lib/hiptest-publisher/handlebars_helper.rb +1 -1
- data/lib/hiptest-publisher/options_parser.rb +22 -5
- data/lib/hiptest-publisher/renderer.rb +5 -1
- data/lib/templates/cucumber/groovy/step-definitions/actionword.hbs +1 -1
- data/lib/templates/cucumber/groovy/step-definitions/actionwords.hbs +3 -2
- data/lib/templates/cucumber/groovy/step-definitions/library.hbs +3 -2
- data/lib/templates/cucumber/groovy/step-definitions/libraryactionword.hbs +1 -1
- data/lib/templates/cucumber/java/actionword.hbs +1 -1
- data/lib/templates/cucumber/java/actionwords.hbs +2 -2
- data/lib/templates/cucumber/typescript/actionword.hbs +1 -1
- data/lib/templates/cucumber/typescript/libraryactionword.hbs +1 -1
- data/lib/templates/cucumber_legacy/groovy/step-definitions/actionword.hbs +5 -0
- data/lib/templates/cucumber_legacy/groovy/step-definitions/actionwords.hbs +10 -0
- data/lib/templates/cucumber_legacy/groovy/step-definitions/library.hbs +10 -0
- data/lib/templates/cucumber_legacy/groovy/step-definitions/libraryactionword.hbs +5 -0
- data/lib/templates/cucumber_legacy/java/actionword.hbs +6 -0
- data/lib/templates/cucumber_legacy/java/actionwords.hbs +12 -0
- data/lib/templates/cucumber_legacy/typescript/actionword.hbs +5 -0
- data/lib/templates/{cucumber_expressions → cucumber_legacy}/typescript/libraryactionword.hbs +1 -1
- data/lib/templates/gherkin/scenarios.hbs +1 -1
- metadata +38 -14
- data/lib/templates/cucumber_expressions/typescript/actionword.hbs +0 -5
data/bin/hiptest-publisher
CHANGED
@@ -16,14 +16,18 @@ require 'ruby_version'
|
|
16
16
|
require 'hiptest-publisher/i18n'
|
17
17
|
require 'hiptest-publisher/utils'
|
18
18
|
|
19
|
-
# Ensure ruby version >= 2.
|
20
|
-
if RubyVersion < '2.
|
21
|
-
STDERR.puts(I18n.t('ruby_version.required_version', version: '2.
|
19
|
+
# Ensure ruby version >= 2.5
|
20
|
+
if RubyVersion < '2.5.0'
|
21
|
+
STDERR.puts(I18n.t('ruby_version.required_version', version: '2.5.0'))
|
22
22
|
STDERR.puts(I18n.t('ruby_version.current_version', engine: RUBY_ENGINE, version: RUBY_VERSION))
|
23
23
|
STDERR.puts(I18n.t('ruby_version.use_more_recent'))
|
24
24
|
|
25
|
-
if RubyVersion.is? 2.
|
26
|
-
STDERR.puts(I18n.('ruby_version.support_ended', version: '2.
|
25
|
+
if RubyVersion.is? 2.4
|
26
|
+
STDERR.puts(I18n.('ruby_version.support_ended', version: '2.4.0', year: '2020', month: '03', day: '31'))
|
27
|
+
elsif RubyVersion.is? 2.3
|
28
|
+
STDERR.puts(I18n.('ruby_version.support_ended', version: '2.3.0', year: '2019', month: '03', day: '31'))
|
29
|
+
elsif RubyVersion.is? 2.2
|
30
|
+
STDERR.puts(I18n.('ruby_version.support_ended', version: '2.2.0', year: '2018', month: '03', day: '31'))
|
27
31
|
elsif RubyVersion.is? 2.1
|
28
32
|
STDERR.puts(I18n.('ruby_version.support_ended', version: '2.1.0', year: '2017', month: '04', day: '01'))
|
29
33
|
elsif RubyVersion.is? 2.0
|
@@ -36,7 +40,7 @@ if RubyVersion < '2.3.0'
|
|
36
40
|
exit 1
|
37
41
|
end
|
38
42
|
|
39
|
-
if RubyVersion < '2.4'
|
43
|
+
if RubyVersion < '2.4' # TODO: deprecate ruby 2.5 (eol 2021-03-31)
|
40
44
|
STDERR.puts(I18n.t('ruby_version.current_version', engine: RUBY_ENGINE, version: RUBY_VERSION))
|
41
45
|
STDERR.puts(I18n.t('ruby_version.deprecation_warning', version: '2.3'))
|
42
46
|
STDERR.puts(I18n.t('ruby_version.support_ended', version: '2.3', year: '2019', month: '03', day: '31'))
|
@@ -45,7 +49,7 @@ end
|
|
45
49
|
require 'hiptest-publisher'
|
46
50
|
begin
|
47
51
|
require 'pry' # only available in development
|
48
|
-
rescue LoadError
|
52
|
+
rescue StandardError, LoadError
|
49
53
|
end
|
50
54
|
|
51
55
|
Hiptest::Publisher.new(ARGV).run
|
data/config/locales/en.yml
CHANGED
@@ -66,7 +66,7 @@ en:
|
|
66
66
|
up_to_date: Your current install of hiptest-publisher (%{current}) is up-to-date.
|
67
67
|
default: default
|
68
68
|
errors:
|
69
|
-
api_error:
|
69
|
+
api_error: CucumberStudio API returned error %{code}
|
70
70
|
cli_options:
|
71
71
|
actionwords_signature_directory: 'Bad Action Words signature file: the file "%{path}" is a directory'
|
72
72
|
filter_status_without_test_run: |
|
@@ -86,7 +86,7 @@ en:
|
|
86
86
|
|
87
87
|
Found: %{incorrect_value}
|
88
88
|
invalid_tag_value_list: |
|
89
|
-
%{option} should be a list of comma separated tags
|
89
|
+
%{option} should be a list of comma separated tags from CucumberStudio
|
90
90
|
|
91
91
|
Found: %{incorrect_value}
|
92
92
|
invalid_test_run_id: 'Invalid format --test-run-id="%{test_run_id}": the test run id must be numeric'
|
@@ -100,7 +100,7 @@ en:
|
|
100
100
|
missing_token: |
|
101
101
|
Missing argument --token: you must specify project secret token with --token=<project-token>
|
102
102
|
|
103
|
-
The project secret token can be found on
|
103
|
+
The project secret token can be found on CucumberStudio in the settings section, under
|
104
104
|
'Test code generation'. It is a sequence of numbers uniquely identifying your
|
105
105
|
project.
|
106
106
|
|
@@ -128,9 +128,9 @@ en:
|
|
128
128
|
no_test_runs: 'No matching test run found: this project does not have any test runs.'
|
129
129
|
project_not_found: No project found with this secret token.
|
130
130
|
template_not_found: no template with name %{template_name} in dirs %{dirs}
|
131
|
-
test_run_list_unavailable: Cannot get the list of available test runs from
|
131
|
+
test_run_list_unavailable: Cannot get the list of available test runs from CucumberStudio. Try using --test-run-id instead of --test-run-name
|
132
132
|
exporting_file: Exporting %{name}
|
133
|
-
fetching_data: Fetching data from
|
133
|
+
fetching_data: Fetching data from CucumberStudio
|
134
134
|
using_cached_data: Using cached data from previous export
|
135
135
|
caching_data: Caching data
|
136
136
|
using_cache: "Using cache: %{full_path}"
|
@@ -148,7 +148,7 @@ en:
|
|
148
148
|
hiptest-publisher --language=%{language} --only=%{first},%{second}
|
149
149
|
description: |2
|
150
150
|
|
151
|
-
Exports tests from
|
151
|
+
Exports tests from CucumberStudio for automation.
|
152
152
|
|
153
153
|
Specific options:
|
154
154
|
header: 'Usage: hiptest-publisher [options]'
|
@@ -183,9 +183,9 @@ en:
|
|
183
183
|
framework: Test framework to use
|
184
184
|
global_failure_on_missing_reports: When there is no results file to push, report a global failure
|
185
185
|
help: Show this message
|
186
|
-
http_proxy: 'Specify your http proxy to access
|
187
|
-
keep_filenames: 'Keep the same name as in
|
188
|
-
keep_foldernames: 'Keep the same name as in
|
186
|
+
http_proxy: 'Specify your http proxy to access CucumberStudio'
|
187
|
+
keep_filenames: 'Keep the same name as in CucumberStudio for the test files (note: may cause encoding issues)'
|
188
|
+
keep_foldernames: 'Keep the same name as in CucumberStudio for the folders (note: may cause encoding issues)'
|
189
189
|
language: Target language
|
190
190
|
languages_help: Show languages and framework options
|
191
191
|
leafless_export: Use only last level action word
|
@@ -195,12 +195,13 @@ en:
|
|
195
195
|
only: Restrict export to given file categories (--only=list to list them)
|
196
196
|
output_directory: Output directory
|
197
197
|
overriden_templates: Folder for overriden templates
|
198
|
+
overriden_language_configs: Folder for overriden language configs
|
198
199
|
parameter_delimiter: Parameter delimiter (for Gherkin based export only)
|
199
200
|
parent_folder_tags: 'Export tags from parent folders (note: if set to false, those tags are never rendered. Only available for Gherkin base exports)'
|
200
201
|
push: Push a results file to the server
|
201
202
|
push_format: Format of the test results (cucumber-json, junit, nunit, robot, tap)
|
202
203
|
site: Site to fetch from
|
203
|
-
sort: 'Sorting of tests in output: id will sort them by age, order will keep the same order
|
204
|
+
sort: 'Sorting of tests in output: id will sort them by age, order will keep the same order as in CucumberStudio (only with --with-folders option, will fallback to id otherwise), alpha will sort them by name'
|
204
205
|
split_scenarios: Export each scenario in a single file (except for Gherkin based languages)
|
205
206
|
test_run_id: Export data from a test run identified by its id
|
206
207
|
test_run_name: Export data from a test run identified by its name
|
@@ -211,9 +212,9 @@ en:
|
|
211
212
|
with_dataset_names: 'Export dataset name when creating feature files (note: available only for Gherkin-based exports)'
|
212
213
|
with_folders: Use folders hierarchy to export files in respective directories
|
213
214
|
without: Exclude file categories from import (--only=list to list them)
|
214
|
-
xml_file: XML file to use instead of fetching it from
|
215
|
-
cache_dir: "Path to the directory to store cache of
|
216
|
-
cache_duration: "Validity of the
|
215
|
+
xml_file: XML file to use instead of fetching it from CucumberStudio
|
216
|
+
cache_dir: "Path to the directory to store cache of CucumberStudio data"
|
217
|
+
cache_duration: "Validity of the CucumberStudio data cache in seconds"
|
217
218
|
indentation: Customize indentation
|
218
219
|
overwrite:
|
219
220
|
ask_confirmation: 'File %{path} exists, do you want to overwrite it? [y/N] '
|
@@ -1,41 +1,41 @@
|
|
1
|
-
[_common]
|
2
|
-
indentation = ' '
|
3
|
-
fallback_template = 'empty'
|
4
|
-
|
5
|
-
[features]
|
6
|
-
node_name = folders
|
7
|
-
template_dirs = gherkin/inlined_uids, gherkin, common
|
8
|
-
named_filename = '%s.feature'
|
9
|
-
indentation = ' '
|
10
|
-
renderer_addons = 'GherkinAddon'
|
11
|
-
|
12
|
-
[step_definitions]
|
13
|
-
node_name = actionwords
|
14
|
-
template_dirs = cucumber/typescript, javascript, common
|
15
|
-
filename = 'step_definitions.ts'
|
16
|
-
naming_convention = 'camelize_lower'
|
17
|
-
call_prefix = 'actionwords'
|
18
|
-
renderer_addons = 'GherkinAddon'
|
19
|
-
|
20
|
-
[step_definitions_library]
|
21
|
-
node_name = libraries
|
22
|
-
template_dirs = cucumber/typescript, javascript, common
|
23
|
-
named_filename = 'steps_%s.ts'
|
24
|
-
naming_convention = 'camelize_lower'
|
25
|
-
call_prefix = 'actionwords'
|
26
|
-
renderer_addons = 'GherkinAddon'
|
27
|
-
|
28
|
-
[actionwords]
|
29
|
-
template_dirs = typescript, javascript, common
|
30
|
-
filename = 'actionwords.ts'
|
31
|
-
naming_convention = 'camelize_lower'
|
32
|
-
|
33
|
-
|
34
|
-
[library]
|
35
|
-
template_dirs = typescript, javascript, common
|
36
|
-
filename = 'actionword_library.ts'
|
37
|
-
|
38
|
-
[libraries]
|
39
|
-
template_dirs = typescript, javascript, common
|
40
|
-
named_filename = '%s_library.ts'
|
41
|
-
filename_convention = 'underscore'
|
1
|
+
[_common]
|
2
|
+
indentation = ' '
|
3
|
+
fallback_template = 'empty'
|
4
|
+
|
5
|
+
[features]
|
6
|
+
node_name = folders
|
7
|
+
template_dirs = gherkin/inlined_uids, gherkin, common
|
8
|
+
named_filename = '%s.feature'
|
9
|
+
indentation = ' '
|
10
|
+
renderer_addons = 'GherkinAddon'
|
11
|
+
|
12
|
+
[step_definitions]
|
13
|
+
node_name = actionwords
|
14
|
+
template_dirs = cucumber/typescript, javascript, common
|
15
|
+
filename = 'step_definitions.ts'
|
16
|
+
naming_convention = 'camelize_lower'
|
17
|
+
call_prefix = 'actionwords'
|
18
|
+
renderer_addons = 'GherkinAddon'
|
19
|
+
|
20
|
+
[step_definitions_library]
|
21
|
+
node_name = libraries
|
22
|
+
template_dirs = cucumber/typescript, javascript, common
|
23
|
+
named_filename = 'steps_%s.ts'
|
24
|
+
naming_convention = 'camelize_lower'
|
25
|
+
call_prefix = 'actionwords'
|
26
|
+
renderer_addons = 'GherkinAddon'
|
27
|
+
|
28
|
+
[actionwords]
|
29
|
+
template_dirs = typescript, javascript, common
|
30
|
+
filename = 'actionwords.ts'
|
31
|
+
naming_convention = 'camelize_lower'
|
32
|
+
|
33
|
+
|
34
|
+
[library]
|
35
|
+
template_dirs = typescript, javascript, common
|
36
|
+
filename = 'actionword_library.ts'
|
37
|
+
|
38
|
+
[libraries]
|
39
|
+
template_dirs = typescript, javascript, common
|
40
|
+
named_filename = '%s_library.ts'
|
41
|
+
filename_convention = 'underscore'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
[_common]
|
2
|
+
package = 'com.example'
|
3
|
+
fallback_template = 'empty'
|
4
|
+
indentation = ' '
|
5
|
+
dirname_convention = 'underscore'
|
6
|
+
filename_convention = 'camelize'
|
7
|
+
naming_convention = 'camelize_lower'
|
8
|
+
|
9
|
+
[features]
|
10
|
+
node_name = folders
|
11
|
+
template_dirs = gherkin/inlined_uids, gherkin/java, gherkin, common
|
12
|
+
named_filename = '%s.feature'
|
13
|
+
indentation = ' '
|
14
|
+
renderer_addons = 'GherkinAddon'
|
15
|
+
|
16
|
+
[step_definitions]
|
17
|
+
node_name = actionwords
|
18
|
+
template_dirs = cucumber_legacy/groovy/step-definitions, cucumber/groovy/step-definitions, groovy, java, common
|
19
|
+
filename = 'StepDefinitions.groovy'
|
20
|
+
call_prefix = 'actionwords'
|
21
|
+
renderer_addons = 'GherkinAddon'
|
22
|
+
|
23
|
+
[step_definitions_library]
|
24
|
+
node_name = libraries
|
25
|
+
call_prefix = 'actionwords'
|
26
|
+
template_dirs = cucumber_legacy/groovy/step-definitions, cucumber/groovy/step-definitions, groovy, java, common
|
27
|
+
named_filename = 'StepDefinitions%s.groovy'
|
28
|
+
renderer_addons = 'GherkinAddon'
|
29
|
+
|
30
|
+
[actionwords]
|
31
|
+
template_dirs = groovy, java, common
|
32
|
+
filename = 'Actionwords.groovy'
|
33
|
+
|
34
|
+
[library]
|
35
|
+
template_dirs = groovy, java, common
|
36
|
+
filename = 'ActionwordLibrary.groovy'
|
37
|
+
|
38
|
+
[libraries]
|
39
|
+
template_dirs = groovy, java, common
|
40
|
+
named_filename = '%sLibrary.groovy'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
[_common]
|
2
|
+
package = 'com.example'
|
3
|
+
indentation = ' '
|
4
|
+
fallback_template = 'empty'
|
5
|
+
|
6
|
+
[features]
|
7
|
+
node_name = folders
|
8
|
+
template_dirs = gherkin/inlined_uids, gherkin/java, gherkin, common
|
9
|
+
named_filename = '%s.feature'
|
10
|
+
indentation = ' '
|
11
|
+
renderer_addons = 'GherkinAddon'
|
12
|
+
|
13
|
+
[step_definitions]
|
14
|
+
node_name = actionwords
|
15
|
+
template_dirs = cucumber_legacy/java, cucumber/java, java, common
|
16
|
+
filename = 'StepDefinitions.java'
|
17
|
+
naming_convention = 'camelize_lower'
|
18
|
+
call_prefix = 'actionwords'
|
19
|
+
renderer_addons = 'GherkinAddon'
|
20
|
+
|
21
|
+
[actionwords]
|
22
|
+
template_dirs = cucumber_legacy/java/actionwords, cucumber/java/actionwords, java, common
|
23
|
+
filename = 'Actionwords.java'
|
24
|
+
naming_convention = 'camelize_lower'
|
@@ -1,41 +1,41 @@
|
|
1
|
-
[_common]
|
2
|
-
indentation = ' '
|
3
|
-
fallback_template = 'empty'
|
4
|
-
|
5
|
-
[features]
|
6
|
-
node_name = folders
|
7
|
-
template_dirs = gherkin/inlined_uids, gherkin, common
|
8
|
-
named_filename = '%s.feature'
|
9
|
-
indentation = ' '
|
10
|
-
renderer_addons = 'GherkinAddon'
|
11
|
-
|
12
|
-
[step_definitions]
|
13
|
-
node_name = actionwords
|
14
|
-
template_dirs =
|
15
|
-
filename = 'step_definitions.ts'
|
16
|
-
naming_convention = 'camelize_lower'
|
17
|
-
call_prefix = 'actionwords'
|
18
|
-
renderer_addons = 'GherkinAddon'
|
19
|
-
|
20
|
-
[step_definitions_library]
|
21
|
-
node_name = libraries
|
22
|
-
template_dirs =
|
23
|
-
named_filename = 'steps_%s.ts'
|
24
|
-
naming_convention = 'camelize_lower'
|
25
|
-
call_prefix = 'actionwords'
|
26
|
-
renderer_addons = 'GherkinAddon'
|
27
|
-
|
28
|
-
[actionwords]
|
29
|
-
template_dirs = typescript, javascript, common
|
30
|
-
filename = 'actionwords.ts'
|
31
|
-
naming_convention = 'camelize_lower'
|
32
|
-
|
33
|
-
|
34
|
-
[library]
|
35
|
-
template_dirs = typescript, javascript, common
|
36
|
-
filename = 'actionword_library.ts'
|
37
|
-
|
38
|
-
[libraries]
|
39
|
-
template_dirs = typescript, javascript, common
|
40
|
-
named_filename = '%s_library.ts'
|
41
|
-
filename_convention = 'underscore'
|
1
|
+
[_common]
|
2
|
+
indentation = ' '
|
3
|
+
fallback_template = 'empty'
|
4
|
+
|
5
|
+
[features]
|
6
|
+
node_name = folders
|
7
|
+
template_dirs = gherkin/inlined_uids, gherkin, common
|
8
|
+
named_filename = '%s.feature'
|
9
|
+
indentation = ' '
|
10
|
+
renderer_addons = 'GherkinAddon'
|
11
|
+
|
12
|
+
[step_definitions]
|
13
|
+
node_name = actionwords
|
14
|
+
template_dirs = cucumber_legacy/typescript, cucumber/typescript, javascript, common
|
15
|
+
filename = 'step_definitions.ts'
|
16
|
+
naming_convention = 'camelize_lower'
|
17
|
+
call_prefix = 'actionwords'
|
18
|
+
renderer_addons = 'GherkinAddon'
|
19
|
+
|
20
|
+
[step_definitions_library]
|
21
|
+
node_name = libraries
|
22
|
+
template_dirs = cucumber_legacy/typescript, cucumber/typescript, javascript, common
|
23
|
+
named_filename = 'steps_%s.ts'
|
24
|
+
naming_convention = 'camelize_lower'
|
25
|
+
call_prefix = 'actionwords'
|
26
|
+
renderer_addons = 'GherkinAddon'
|
27
|
+
|
28
|
+
[actionwords]
|
29
|
+
template_dirs = typescript, javascript, common
|
30
|
+
filename = 'actionwords.ts'
|
31
|
+
naming_convention = 'camelize_lower'
|
32
|
+
|
33
|
+
|
34
|
+
[library]
|
35
|
+
template_dirs = typescript, javascript, common
|
36
|
+
filename = 'actionword_library.ts'
|
37
|
+
|
38
|
+
[libraries]
|
39
|
+
template_dirs = typescript, javascript, common
|
40
|
+
named_filename = '%s_library.ts'
|
41
|
+
filename_convention = 'underscore'
|
@@ -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
|
@@ -203,14 +203,14 @@ class OptionsParser
|
|
203
203
|
{
|
204
204
|
'Ruby' => ['Rspec', 'MiniTest'],
|
205
205
|
'Cucumber' => ['Ruby', 'Java', 'Javascript', 'Groovy', 'TypeScript'],
|
206
|
-
'
|
206
|
+
'Cucumber_Legacy' => ['Java', 'Groovy', 'TypeScript'],
|
207
207
|
'Java' => ['JUnit', 'Test NG', 'Espresso'],
|
208
208
|
'Python' => ['Unittest'],
|
209
209
|
'Robot Framework' => [''],
|
210
210
|
'Selenium IDE' => [''],
|
211
211
|
'Javascript' => ['qUnit', 'Jasmine', 'Mocha', 'Protractor', 'CodeceptJS'],
|
212
212
|
'CSharp' => ['NUnit'],
|
213
|
-
'PHP' => ['PHPUnit'
|
213
|
+
'PHP' => ['PHPUnit'],
|
214
214
|
'SpecFlow' => [''],
|
215
215
|
'Behave' => [''],
|
216
216
|
'Behat' => [''],
|
@@ -229,6 +229,7 @@ class OptionsParser
|
|
229
229
|
Option.new(nil, 'filename-pattern=PATTERN', nil, String, I18n.t('options.filename_pattern'), :filename_pattern),
|
230
230
|
Option.new('c', 'config-file=PATH', nil, String, I18n.t('options.config'), :config),
|
231
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),
|
232
233
|
Option.new(nil, 'test-run-id=ID', '', String, I18n.t('options.test_run_id'), :test_run_id),
|
233
234
|
Option.new(nil, 'test-run-name=NAME', '', String, I18n.t('options.test_run_name'), :test_run_name),
|
234
235
|
Option.new(nil, 'only=CATEGORIES', nil, String, I18n.t('options.only'), :only),
|
@@ -251,7 +252,7 @@ class OptionsParser
|
|
251
252
|
Option.new(nil, 'empty-folders', false, nil, I18n.t('options.empty_folders'), :empty_folders),
|
252
253
|
Option.new(nil, 'split-scenarios', false, nil, I18n.t('options.split_scenarios'), :split_scenarios),
|
253
254
|
Option.new(nil, 'leafless-export', false, nil, I18n.t('options.leafless_export'), :leafless_export),
|
254
|
-
Option.new('s', 'site=SITE', 'https://
|
255
|
+
Option.new('s', 'site=SITE', 'https://studio.cucumber.io', String, I18n.t('options.site'), :site),
|
255
256
|
Option.new(nil, 'http-proxy=PROXY_URL', nil, String, I18n.t('options.http_proxy'), :http_proxy),
|
256
257
|
Option.new('p', 'push=FILE.TAP', '', String, I18n.t('options.push'), :push),
|
257
258
|
Option.new(nil, 'global-failure-on-missing-reports', false, nil, I18n.t('options.global_failure_on_missing_reports'), :global_failure_on_missing_reports),
|
@@ -383,6 +384,7 @@ class NodeRenderingContext
|
|
383
384
|
|
384
385
|
def renderer_addons
|
385
386
|
addons = @properties.renderer_addons || ""
|
387
|
+
|
386
388
|
addons.split.map do |addon_name|
|
387
389
|
Hiptest.const_get(addon_name)
|
388
390
|
end
|
@@ -390,11 +392,12 @@ class NodeRenderingContext
|
|
390
392
|
end
|
391
393
|
|
392
394
|
class TemplateFinder
|
393
|
-
attr_reader :template_dirs, :overriden_templates, :forced_templates, :fallback_template
|
395
|
+
attr_reader :template_dirs, :overriden_templates, :overriden_language_configs, :forced_templates, :fallback_template
|
394
396
|
|
395
397
|
def initialize(
|
396
398
|
template_dirs: nil,
|
397
399
|
overriden_templates: nil,
|
400
|
+
overriden_language_configs: nil,
|
398
401
|
indentation: ' ',
|
399
402
|
forced_templates: nil,
|
400
403
|
fallback_template: nil,
|
@@ -696,7 +699,21 @@ class LanguageConfigParser
|
|
696
699
|
else
|
697
700
|
"#{cli_options.language}-#{cli_options.framework}.conf"
|
698
701
|
end
|
699
|
-
config_path =
|
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}")
|
700
717
|
|
701
718
|
if !File.file?(config_path)
|
702
719
|
if cli_options.framework.to_s.empty?
|