chutney 3.1.0 → 3.2.1

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
  SHA256:
3
- metadata.gz: ad89ad439835c7acb1f2d3d0b4ee44895f714c7b6fc4f1a07f68e23594384979
4
- data.tar.gz: c8eb1551cd49f668882ccbf047f65403e6f5724d8193c483d5fd16c14e456747
3
+ metadata.gz: cc456f7ef0c0788108026c08c161d0883fdf046b87d3851901eb3cabf80bbde3
4
+ data.tar.gz: fdd038b05c9650b1a785175f633397eb5bb00640ae82d9169f04f43e45c5fa42
5
5
  SHA512:
6
- metadata.gz: 4a1a21294785d98f9e1997eb02547ddc6556200d0d3261d0e57ee2586725808aa2221452b341a7f9badb9ed3fdf9784b185a552ef15fa7f9c30e4c50cee99190
7
- data.tar.gz: ffc03086fba54bdd0747593170f33e696d009241778d6794392517d3541aa45fe20d20bd64aab41fbbdbb4382d47c47832f3d17762f316a8f6e11d245558fbb9
6
+ metadata.gz: 423221898076fd513aa1dd07eb7778660b89ee615f814dca871b08cc700f1080190f37c72440cba8a4d6524ecc9ac6cb5b656d1983a8eae1e1bfac4a13805a38
7
+ data.tar.gz: feea3300f389e31739e184f60e6226ab3586f438da71ccfcfaa9edc355d673059e2a06469ded959c718ef4b6dd7c2f2c14ae9a6e36fa8614839a58e91044b873
data/.rubocop.yml CHANGED
@@ -63,3 +63,4 @@ Style/StringConcatenation:
63
63
 
64
64
  AllCops:
65
65
  NewCops: enable
66
+ SuggestExtensions: false
data/Rakefile CHANGED
@@ -27,7 +27,7 @@ rescue RuntimeError => e
27
27
  end
28
28
 
29
29
  task :spec do
30
- sh 'rspec'
30
+ sh 'bundle exec rspec'
31
31
  end
32
32
 
33
33
  task :cucumber do
data/chutney.gemspec CHANGED
@@ -50,19 +50,19 @@ Gem::Specification.new do |spec|
50
50
 
51
51
  spec.add_runtime_dependency 'amatch', '~> 0.4.0'
52
52
  spec.add_runtime_dependency 'cuke_modeler', '~> 3.3'
53
- spec.add_runtime_dependency 'i18n', '~> 1.8.2'
53
+ spec.add_runtime_dependency 'i18n', '>= 1.8.2', '< 1.12.0'
54
54
  spec.add_runtime_dependency 'pastel', '~> 0.7'
55
55
  spec.add_runtime_dependency 'tty-pie', '~> 0.3'
56
56
 
57
57
 
58
58
  spec.add_development_dependency 'coveralls', '~> 0.8'
59
- spec.add_development_dependency 'cucumber', '~> 6.0'
59
+ spec.add_development_dependency 'cucumber', '>= 7.0'
60
60
  spec.add_development_dependency 'pry-byebug', '~> 3.0'
61
61
  spec.add_development_dependency 'rake', '~> 13.0'
62
62
  spec.add_development_dependency 'rerun', '~> 0.13'
63
63
  spec.add_development_dependency 'rspec-expectations', '~> 3.0'
64
- spec.add_development_dependency 'rubocop', '~> 1.14.0'
64
+ spec.add_development_dependency 'rubocop', '~> 1.31.2'
65
65
  spec.add_development_dependency 'rspec', '~> 3.8'
66
66
 
67
- spec.required_ruby_version = '~> 2.6'
67
+ spec.required_ruby_version = '>= 2.6'
68
68
  end
data/config/cucumber.yml CHANGED
@@ -1 +1 @@
1
- default: --publish-quiet
1
+ default: --publish-quiet
@@ -66,7 +66,14 @@ module Chutney
66
66
  end
67
67
 
68
68
  def dialect
69
- @content.feature&.parsing_data&.dig(:language) || 'en'
69
+ parsing_data = @content.feature&.parsing_data
70
+ if !parsing_data.nil? && parsing_data.respond_to?(:language)
71
+ parsing_data.language
72
+ elsif parsing_data
73
+ parsing_data[:language]
74
+ else
75
+ raise UnsupportedCucumberError, 'This version of cucumber is unsupported (langauge detection)'
76
+ end
70
77
  end
71
78
 
72
79
  def tags_for(element)
@@ -79,19 +86,12 @@ module Chutney
79
86
  gherkin_type: type(feature, scenario, item),
80
87
  location: location(feature, scenario, item),
81
88
  feature: feature&.name,
82
- scenario: scenario&.name,
83
- step: item&.parsing_data&.dig(:name)
89
+ scenario: scenario&.name
84
90
  ).to_h
85
91
  end
86
92
 
87
93
  def location(feature, scenario, step)
88
- if step
89
- step.parsing_data[:location]
90
- elsif scenario
91
- scenario.parsing_data.dig(:scenario, :location) || scenario.parsing_data.dig(:background, :location)
92
- else
93
- feature ? feature.parsing_data[:location] : { line: 0, column: 0 }
94
- end
94
+ Locator.locate(feature, scenario, step)
95
95
  end
96
96
 
97
97
  def type(_feature, scenario, step)
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Chutney
4
+ # Utility module to assist in locating the source of parts of a gherkin specification
5
+ module Locator
6
+ module_function
7
+
8
+ def locate(feature, scenario, step)
9
+ if step
10
+ locate_step(step)
11
+ elsif scenario
12
+ locate_scenario(scenario)
13
+ elsif feature
14
+ locate_feature(feature)
15
+ else
16
+ feature
17
+ end
18
+ end
19
+
20
+ def locate_step(step)
21
+ return step.parsing_data.location.to_h if step.parsing_data.respond_to?(:location)
22
+ return step.parsing_data[:location] if step.parsing_data.is_a?(Hash)
23
+
24
+ raise UnsupportedCucumberError, 'This version of cucumber is unsupported (step location)'
25
+ end
26
+
27
+ def locate_scenario(scenario)
28
+ parsing_data = scenario.parsing_data
29
+
30
+ if parsing_data.is_a?(Hash)
31
+ parsing_data.dig(:scenario, :location) || parsing_data.dig(:background, :location)
32
+ elsif parsing_data.respond_to?(:scenario)
33
+ (parsing_data.scenario || parsing_data.background).location.to_h
34
+ else
35
+ raise UnsupportedCucumberError, 'This version of cucumber is unsupported (scenario location)'
36
+ end
37
+ end
38
+
39
+ def locate_feature(feature)
40
+ return feature.parsing_data.location.to_h if feature.parsing_data.respond_to?(:location)
41
+ return feature.parsing_data[:location] if feature.parsing_data.is_a?(Hash)
42
+
43
+ raise UnsupportedCucumberError, 'This version of cucumber is unsupported (feature location)'
44
+ end
45
+ end
46
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Chutney
4
- VERSION = '3.1.0'
4
+ VERSION = '3.2.1'
5
5
  end
data/lib/chutney.rb CHANGED
@@ -37,6 +37,7 @@ require 'chutney/linter/unknown_variable'
37
37
  require 'chutney/linter/unused_variable'
38
38
  require 'chutney/linter/use_background'
39
39
  require 'chutney/linter/use_outline'
40
+ require 'chutney/locator'
40
41
  require 'chutney/version'
41
42
 
42
43
  require 'cuke_modeler'
@@ -48,6 +49,8 @@ require 'set'
48
49
  require 'yaml'
49
50
 
50
51
  module Chutney
52
+ class UnsupportedCucumberError < StandardError; end
53
+
51
54
  # gherkin linter
52
55
  class ChutneyLint
53
56
  extend Forwardable
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chutney
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nigel Brookes-Thomas
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2021-05-05 00:00:00.000000000 Z
14
+ date: 2022-07-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: amatch
@@ -45,16 +45,22 @@ dependencies:
45
45
  name: i18n
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - "~>"
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: 1.8.2
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: 1.12.0
51
54
  type: :runtime
52
55
  prerelease: false
53
56
  version_requirements: !ruby/object:Gem::Requirement
54
57
  requirements:
55
- - - "~>"
58
+ - - ">="
56
59
  - !ruby/object:Gem::Version
57
60
  version: 1.8.2
61
+ - - "<"
62
+ - !ruby/object:Gem::Version
63
+ version: 1.12.0
58
64
  - !ruby/object:Gem::Dependency
59
65
  name: pastel
60
66
  requirement: !ruby/object:Gem::Requirement
@@ -101,16 +107,16 @@ dependencies:
101
107
  name: cucumber
102
108
  requirement: !ruby/object:Gem::Requirement
103
109
  requirements:
104
- - - "~>"
110
+ - - ">="
105
111
  - !ruby/object:Gem::Version
106
- version: '6.0'
112
+ version: '7.0'
107
113
  type: :development
108
114
  prerelease: false
109
115
  version_requirements: !ruby/object:Gem::Requirement
110
116
  requirements:
111
- - - "~>"
117
+ - - ">="
112
118
  - !ruby/object:Gem::Version
113
- version: '6.0'
119
+ version: '7.0'
114
120
  - !ruby/object:Gem::Dependency
115
121
  name: pry-byebug
116
122
  requirement: !ruby/object:Gem::Requirement
@@ -173,14 +179,14 @@ dependencies:
173
179
  requirements:
174
180
  - - "~>"
175
181
  - !ruby/object:Gem::Version
176
- version: 1.14.0
182
+ version: 1.31.2
177
183
  type: :development
178
184
  prerelease: false
179
185
  version_requirements: !ruby/object:Gem::Requirement
180
186
  requirements:
181
187
  - - "~>"
182
188
  - !ruby/object:Gem::Version
183
- version: 1.14.0
189
+ version: 1.31.2
184
190
  - !ruby/object:Gem::Dependency
185
191
  name: rspec
186
192
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +283,7 @@ files:
277
283
  - lib/chutney/linter/unused_variable.rb
278
284
  - lib/chutney/linter/use_background.rb
279
285
  - lib/chutney/linter/use_outline.rb
286
+ - lib/chutney/locator.rb
280
287
  - lib/chutney/version.rb
281
288
  - lib/config/locales/en.yml
282
289
  - spec/chutney_spec.rb
@@ -294,7 +301,7 @@ require_paths:
294
301
  - lib
295
302
  required_ruby_version: !ruby/object:Gem::Requirement
296
303
  requirements:
297
- - - "~>"
304
+ - - ">="
298
305
  - !ruby/object:Gem::Version
299
306
  version: '2.6'
300
307
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -303,7 +310,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
310
  - !ruby/object:Gem::Version
304
311
  version: '0'
305
312
  requirements: []
306
- rubygems_version: 3.1.4
313
+ rubygems_version: 3.3.7
307
314
  signing_key:
308
315
  specification_version: 4
309
316
  summary: A linter for multi-lingual Gherkin