chutney 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/chutney.gemspec +2 -2
- data/config/chutney_defaults.yml +2 -0
- data/docs/usage/rules.md +2 -0
- data/lib/chutney/linter/inconsistent_quoting.rb +42 -0
- data/lib/chutney/version.rb +1 -1
- data/lib/chutney.rb +1 -0
- data/lib/config/locales/en.yml +6 -0
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0badc9f82efb1e59bc755597c4ef3f7a4f973e37fec2fc25d4b93192319a75eb
|
4
|
+
data.tar.gz: 9459b41ac94999efc721d07f54e8e14b3c83c4f00786f003937a65dd2054fb9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 404c7bd04be47d2c2fb6c71e9d44bc317b5d0a9abe1a3362945ce2841a76f9cc25eb7703cc39134c2065dfcc8c83d5f615f24e035160cd10aab09178e8f8d6fe
|
7
|
+
data.tar.gz: 29150aae2c605d2ce489dd3a41b914ad7bc67dc53867122c7c11b67830d5fe82771a433d0b6250c926d0e7bd34c0fa8af53941c734e32d5d8db3f435153f8c0f
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
</div>
|
21
21
|
|
22
|
-
Read the documentation [here](https://billyruffian.github.io/chutney/)
|
22
|
+
Read the documentation [here](https://billyruffian.github.io/chutney/).
|
23
23
|
|
24
24
|
See [this page](https://billyruffian.github.io/chutney/usage/rules.html) for a full list of the rules chutney encourages.
|
25
25
|
|
data/chutney.gemspec
CHANGED
@@ -50,7 +50,7 @@ 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', '< 1.
|
53
|
+
spec.add_runtime_dependency 'i18n', '>= 1.8.2', '< 1.15.0'
|
54
54
|
spec.add_runtime_dependency 'pastel', '~> 0.7'
|
55
55
|
spec.add_runtime_dependency 'tty-pie', '~> 0.3'
|
56
56
|
|
@@ -61,7 +61,7 @@ Gem::Specification.new do |spec|
|
|
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.
|
64
|
+
spec.add_development_dependency 'rubocop', '~> 1.50.2'
|
65
65
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
66
66
|
|
67
67
|
spec.required_ruby_version = '>= 2.6'
|
data/config/chutney_defaults.yml
CHANGED
data/docs/usage/rules.md
CHANGED
@@ -33,6 +33,8 @@ Chutney enforces its rules with the linters. These are:
|
|
33
33
|
|
34
34
|
[GivensAfterBackground](https://github.com/BillyRuffian/chutney/blob/master/features/givens_after_background.feature): If you have a Background section and your scenario needs more preconditions then it should start immediately with an `And` step and not another `Given`.
|
35
35
|
|
36
|
+
[InconsistentQuoting](https://github.com/BillyRuffian/chutney/blob/master/features/inconsistent_quoting.feature): Use either single quotation marks *or* double quotation marks around parameters but don't use a mix of the two styles.
|
37
|
+
|
36
38
|
[InvalidFileName](https://github.com/BillyRuffian/chutney/blob/master/features/invalid_file_name.feature): Make sure your file name is in snake case, not mixed case or with spaces.
|
37
39
|
|
38
40
|
[InvalidStepFlow](https://github.com/BillyRuffian/chutney/blob/master/features/invalid_step_flow.feature): Your scenarios should follow Given → When → Then, in that order.
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Chutney
|
4
|
+
# service class to lint for avoiding periods
|
5
|
+
class InconsistentQuoting < Linter
|
6
|
+
# regular expression to extract quoted string
|
7
|
+
# matching group 1: opening quote; 2: quoted text; 3: closing quote
|
8
|
+
# opening and closing quote must match (via backrefs)
|
9
|
+
# apostrophes, both singular and plural posessives, are accounted for
|
10
|
+
QUOTED_STRING = /(?!\b\b)(['"])(.*(?:\b'\b[^\1]*)*(?!\b[\1]\b))(\1)/.freeze
|
11
|
+
Parameter = Struct.new('Parameter', :quotation_mark, :name)
|
12
|
+
|
13
|
+
def lint
|
14
|
+
quoted_params = parameters.group_by(&:quotation_mark)
|
15
|
+
single_quoted = quoted_params[%(')] || []
|
16
|
+
double_quoted = quoted_params[%(")] || []
|
17
|
+
return unless single_quoted.count.positive? && double_quoted.count.positive?
|
18
|
+
|
19
|
+
add_issue(
|
20
|
+
I18n.t('linters.inconsistent_quoting',
|
21
|
+
count_single: single_quoted.count, count_double: double_quoted.count,
|
22
|
+
example_single: %('#{single_quoted.first.name}'), example_double: %("#{double_quoted.first.name}")),
|
23
|
+
feature
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
def parameters
|
28
|
+
parameters = []
|
29
|
+
|
30
|
+
steps do |_feature, _child, step|
|
31
|
+
step_parameters = step
|
32
|
+
.text
|
33
|
+
.scan(QUOTED_STRING)
|
34
|
+
.map { |p| p.take(2) } # close quote will match open quote: drop it
|
35
|
+
.map { |p| Parameter.new(*p) }
|
36
|
+
parameters.concat(step_parameters)
|
37
|
+
end
|
38
|
+
|
39
|
+
parameters
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/chutney/version.rb
CHANGED
data/lib/chutney.rb
CHANGED
@@ -16,6 +16,7 @@ require 'chutney/linter/bad_scenario_name'
|
|
16
16
|
require 'chutney/linter/empty_feature_file'
|
17
17
|
require 'chutney/linter/file_name_differs_feature_name'
|
18
18
|
require 'chutney/linter/givens_after_background'
|
19
|
+
require 'chutney/linter/inconsistent_quoting'
|
19
20
|
require 'chutney/linter/invalid_file_name'
|
20
21
|
require 'chutney/linter/invalid_step_flow'
|
21
22
|
require 'chutney/linter/missing_example_name'
|
data/lib/config/locales/en.yml
CHANGED
@@ -33,6 +33,12 @@ en:
|
|
33
33
|
givens_after_background: >-
|
34
34
|
Avoid using the 'Given' keyword in scenarios if you have a background.
|
35
35
|
Instead, setup steps begin your scenario and should start with an 'And' or 'But' keyword.
|
36
|
+
inconsistent_quoting: >-
|
37
|
+
Avoid using inconsistent quoting for your parameters.
|
38
|
+
You have %{count_single} single-quoted parameters (e.g. %{example_single})
|
39
|
+
and %{count_double} double-quoted parameters (e.g. %{example_double}).
|
40
|
+
You should adopt a single style to avoid confusion about the meaning and purpose
|
41
|
+
of the parameters.
|
36
42
|
invalid_file_name: >-
|
37
43
|
Filenames of feature files should be in snake case.
|
38
44
|
You should name this file '%{recommended_name}'.
|
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.
|
4
|
+
version: 3.6.0
|
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: 2023-
|
14
|
+
date: 2023-07-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: amatch
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
version: 1.8.2
|
51
51
|
- - "<"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 1.
|
53
|
+
version: 1.15.0
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
version: 1.8.2
|
61
61
|
- - "<"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 1.
|
63
|
+
version: 1.15.0
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: pastel
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
@@ -179,14 +179,14 @@ dependencies:
|
|
179
179
|
requirements:
|
180
180
|
- - "~>"
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version: 1.
|
182
|
+
version: 1.50.2
|
183
183
|
type: :development
|
184
184
|
prerelease: false
|
185
185
|
version_requirements: !ruby/object:Gem::Requirement
|
186
186
|
requirements:
|
187
187
|
- - "~>"
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
version: 1.
|
189
|
+
version: 1.50.2
|
190
190
|
- !ruby/object:Gem::Dependency
|
191
191
|
name: rspec
|
192
192
|
requirement: !ruby/object:Gem::Requirement
|
@@ -262,6 +262,7 @@ files:
|
|
262
262
|
- lib/chutney/linter/empty_feature_file.rb
|
263
263
|
- lib/chutney/linter/file_name_differs_feature_name.rb
|
264
264
|
- lib/chutney/linter/givens_after_background.rb
|
265
|
+
- lib/chutney/linter/inconsistent_quoting.rb
|
265
266
|
- lib/chutney/linter/invalid_file_name.rb
|
266
267
|
- lib/chutney/linter/invalid_step_flow.rb
|
267
268
|
- lib/chutney/linter/missing_example_name.rb
|
@@ -314,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
314
315
|
- !ruby/object:Gem::Version
|
315
316
|
version: '0'
|
316
317
|
requirements: []
|
317
|
-
rubygems_version: 3.4.
|
318
|
+
rubygems_version: 3.4.10
|
318
319
|
signing_key:
|
319
320
|
specification_version: 4
|
320
321
|
summary: A linter for multi-lingual Gherkin
|