chutney 3.7.0 → 3.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +1 -2
- data/.rubocop.yml +4 -3
- data/Gemfile +9 -0
- data/README.md +49 -3
- data/chutney.gemspec +8 -17
- data/examples/emoji.feature +1 -2
- data/exe/chutney +2 -2
- data/exe/chutney-lsp +23 -0
- data/img/happy_chutney.png +0 -0
- data/lib/chutney/configuration.rb +4 -2
- data/lib/chutney/formatter/pie_formatter.rb +2 -2
- data/lib/chutney/linter/inconsistent_quoting.rb +1 -1
- data/lib/chutney/linter/invalid_file_name.rb +1 -1
- data/lib/chutney/linter/same_tag_different_case.rb +1 -1
- data/lib/chutney/linter/same_tag_for_all_scenarios.rb +2 -2
- data/lib/chutney/linter/unique_scenario_names.rb +1 -1
- data/lib/chutney/linter/unused_variable.rb +1 -1
- data/lib/chutney/linter/use_outline.rb +1 -1
- data/lib/chutney/linter.rb +1 -1
- data/lib/chutney/lsp/result.rb +16 -0
- data/lib/chutney/lsp/server.rb +177 -0
- data/lib/chutney/lsp.rb +7 -0
- data/lib/chutney/version.rb +1 -1
- data/lib/chutney.rb +0 -1
- data/usechutney.com/.gitignore +5 -0
- data/usechutney.com/Gemfile +37 -0
- data/usechutney.com/_config.yml +298 -0
- data/usechutney.com/_data/navigation.yml +112 -0
- data/usechutney.com/_data/ui-text.yml +2132 -0
- data/usechutney.com/_posts/2024-09-23-welcome-to-jekyll.markdown +28 -0
- data/usechutney.com/assets/images/mr_pickle.png +0 -0
- data/usechutney.com/assets/images/pug.png +0 -0
- data/usechutney.com/docs/configuration/index.md +104 -0
- data/usechutney.com/docs/disabling-rules/index.md +11 -0
- data/usechutney.com/docs/installing/index.md +30 -0
- data/usechutney.com/docs/language-server/index.md +24 -0
- data/usechutney.com/docs/rules/avoid-full-stops/index.md +23 -0
- data/usechutney.com/docs/rules/avoid-outline-for-single-example/index.md +28 -0
- data/usechutney.com/docs/rules/avoid-scripting/index.md +33 -0
- data/usechutney.com/docs/rules/avoid-splat-steps-in-background/index.md +25 -0
- data/usechutney.com/docs/rules/avoid-splat-steps-in-scenarios/index.md +29 -0
- data/usechutney.com/docs/rules/avoid-typographers-quotes/index.md +24 -0
- data/usechutney.com/docs/rules/background-does-more-than-setup/index.md +28 -0
- data/usechutney.com/docs/rules/background-requires-multiple-scenarios/index.md +26 -0
- data/usechutney.com/docs/rules/bad-scenario-name/index.md +28 -0
- data/usechutney.com/docs/rules/empty-feature-file/index.md +7 -0
- data/usechutney.com/docs/rules/file-name-differs-feature-name/index.md +37 -0
- data/usechutney.com/docs/rules/givens-after-background/index.md +36 -0
- data/usechutney.com/docs/rules/inconsistent-quoting/index.md +29 -0
- data/usechutney.com/docs/rules/invalid-step-flow/index.md +31 -0
- data/usechutney.com/docs/rules/invalid_file_name/index.md +19 -0
- data/usechutney.com/docs/rules/missing-example-name/index.md +49 -0
- data/usechutney.com/docs/rules/missing-example-table/index.md +34 -0
- data/usechutney.com/docs/rules/missing-feature-description/index.md +25 -0
- data/usechutney.com/docs/rules/missing-feature-name/index.md +19 -0
- data/usechutney.com/docs/rules/missing-scenario-name/index.md +19 -0
- data/usechutney.com/docs/rules/missing-scenario-outline/index.md +39 -0
- data/usechutney.com/docs/rules/missing-test-action/index.md +28 -0
- data/usechutney.com/docs/rules/missing-test-verification/index.md +28 -0
- data/usechutney.com/docs/rules/required-tag-starts-with/index.md +31 -0
- data/usechutney.com/docs/rules/same-tag-different-case/index.md +42 -0
- data/usechutney.com/docs/rules/same-tag-for-all-scenarios/index.md +42 -0
- data/usechutney.com/docs/rules/scenario-names-match/index.md +30 -0
- data/usechutney.com/docs/rules/tag-used-multiple-times/index.md +32 -0
- data/usechutney.com/docs/rules/too-clumsy/index.md +78 -0
- data/usechutney.com/docs/rules/too-long-step/index.md +30 -0
- data/usechutney.com/docs/rules/too-many-different-tags/index.md +32 -0
- data/usechutney.com/docs/rules/too-many-steps/index.md +79 -0
- data/usechutney.com/docs/rules/too-many-tags/index.md +32 -0
- data/usechutney.com/docs/rules/unique-scenario-names/index.md +39 -0
- data/usechutney.com/docs/rules/unknown-variable/index.md +38 -0
- data/usechutney.com/docs/rules/unused-variable/index.md +37 -0
- data/usechutney.com/docs/rules/use-background/index.md +40 -0
- data/usechutney.com/docs/rules/use-outline/index.md +39 -0
- data/usechutney.com/docs/running/index.md +33 -0
- data/usechutney.com/pages/404.html +25 -0
- data/usechutney.com/pages/about/index.md +22 -0
- data/usechutney.com/pages/index.markdown +40 -0
- metadata +76 -114
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
title: "Unknown Variable"
|
3
|
+
layout: single
|
4
|
+
permalink: /docs/rules/unknown-variable/
|
5
|
+
---
|
6
|
+
|
7
|
+
You are referencing a variable which does not appear to be defined in the example table. This is probably an accident and your test might not be doing what you expect. This rule will check that all variables used in a scenario are defined in the example table.
|
8
|
+
|
9
|
+
## Bad
|
10
|
+
|
11
|
+
```gherkin
|
12
|
+
Feature: logging in
|
13
|
+
|
14
|
+
Scenario Outline: logging in
|
15
|
+
Given I have visited the website
|
16
|
+
When I log in with "<username>" and "<password>" and "<admin>"
|
17
|
+
Then I will see my account
|
18
|
+
Then I will see my account
|
19
|
+
|
20
|
+
Examples:
|
21
|
+
| username | password |
|
22
|
+
| user1 | password |
|
23
|
+
```
|
24
|
+
|
25
|
+
## Good
|
26
|
+
|
27
|
+
```gherkin
|
28
|
+
Feature: logging in
|
29
|
+
|
30
|
+
Scenario Outline: logging in
|
31
|
+
Given I have visited the website
|
32
|
+
When I log in with "<username>" and "<password>" and "<admin>"
|
33
|
+
Then I will see my account
|
34
|
+
|
35
|
+
Examples:
|
36
|
+
| username | password | admin |
|
37
|
+
| user1 | password | true |
|
38
|
+
```
|
@@ -0,0 +1,37 @@
|
|
1
|
+
---
|
2
|
+
title: "Unused Variable"
|
3
|
+
layout: single
|
4
|
+
permalink: /docs/rules/unused-variable/
|
5
|
+
---
|
6
|
+
|
7
|
+
You have defined a variable in your example table but you are not using it. This is probably an accident and your test might not be doing what you expect. This rule will check that all variables defined in the example table are used in the scenario.
|
8
|
+
|
9
|
+
## Bad
|
10
|
+
|
11
|
+
```gherkin
|
12
|
+
Feature: logging in
|
13
|
+
|
14
|
+
Scenario Outline: logging in
|
15
|
+
Given I have visited the website
|
16
|
+
When I log in with "<username>" and "<password>"
|
17
|
+
Then I will see my account
|
18
|
+
|
19
|
+
Examples:
|
20
|
+
| username | password | admin |
|
21
|
+
| user1 | password | true |
|
22
|
+
```
|
23
|
+
|
24
|
+
## Good
|
25
|
+
|
26
|
+
```gherkin
|
27
|
+
Feature: logging in
|
28
|
+
|
29
|
+
Scenario Outline: logging in
|
30
|
+
Given I have visited the website
|
31
|
+
When I log in with "<username>" and "<password>"
|
32
|
+
Then I will see my account
|
33
|
+
|
34
|
+
Examples:
|
35
|
+
| username | password |
|
36
|
+
| user1 | password |
|
37
|
+
```
|
@@ -0,0 +1,40 @@
|
|
1
|
+
---
|
2
|
+
title: "Use Background"
|
3
|
+
layout: single
|
4
|
+
permalink: /docs/rules/use-background/
|
5
|
+
---
|
6
|
+
|
7
|
+
You have multiple scenarios that all have the same setup steps. This is a sign that you should use a background to define the common setup steps once and reuse them in each scenario. This rule will check that you are using a background when you have multiple scenarios with the same setup steps.
|
8
|
+
|
9
|
+
## Bad
|
10
|
+
|
11
|
+
```gherkin
|
12
|
+
Feature: logging in
|
13
|
+
|
14
|
+
Scenario: logging in
|
15
|
+
Given I have visited the website
|
16
|
+
When I log in with "<username>" and "<password>"
|
17
|
+
Then I will see my account
|
18
|
+
|
19
|
+
Scenario: logging out
|
20
|
+
Given I have visited the website
|
21
|
+
When I log out
|
22
|
+
Then I will see the login page
|
23
|
+
```
|
24
|
+
|
25
|
+
## Good
|
26
|
+
|
27
|
+
```gherkin
|
28
|
+
Feature: logging in
|
29
|
+
|
30
|
+
Background:
|
31
|
+
Given I have visited the website
|
32
|
+
|
33
|
+
Scenario: logging in
|
34
|
+
When I log in with "<username>" and "<password>"
|
35
|
+
Then I will see my account
|
36
|
+
|
37
|
+
Scenario: logging out
|
38
|
+
When I log out
|
39
|
+
Then I will see the login page
|
40
|
+
```
|
@@ -0,0 +1,39 @@
|
|
1
|
+
---
|
2
|
+
title: "Use Outline"
|
3
|
+
layout: single
|
4
|
+
permalink: /docs/rules/use-outline/
|
5
|
+
---
|
6
|
+
|
7
|
+
You have multiple scenarios that are almost identical. This is a sign that you should use a scenario outline to define the common steps once and reuse them with different inputs. This rule will check that you are using a scenario outline when you have multiple scenarios that are almost identical.
|
8
|
+
|
9
|
+
## Bad
|
10
|
+
|
11
|
+
```gherkin
|
12
|
+
Feature: logging in
|
13
|
+
|
14
|
+
Scenario: logging in with user1
|
15
|
+
Given I have visited the website
|
16
|
+
When I log in with "user1" and "password"
|
17
|
+
Then I will see my account
|
18
|
+
|
19
|
+
Scenario: logging in with user2
|
20
|
+
Given I have visited the website
|
21
|
+
When I log in with "user2" and "password"
|
22
|
+
Then I will see my account
|
23
|
+
```
|
24
|
+
|
25
|
+
## Good
|
26
|
+
|
27
|
+
```gherkin
|
28
|
+
Feature: logging in
|
29
|
+
|
30
|
+
Scenario Outline: logging in
|
31
|
+
Given I have visited the website
|
32
|
+
When I log in with "<username>" and "<password>"
|
33
|
+
Then I will see my account
|
34
|
+
|
35
|
+
Examples:
|
36
|
+
| username | password |
|
37
|
+
| user1 | password |
|
38
|
+
| user2 | password |
|
39
|
+
```
|
@@ -0,0 +1,33 @@
|
|
1
|
+
---
|
2
|
+
title: "Running Chutney"
|
3
|
+
layout: single
|
4
|
+
permalink: /docs/running/
|
5
|
+
---
|
6
|
+
|
7
|
+
Once you have [installed Chutney](/docs/installing/), you can run it from the command line.
|
8
|
+
|
9
|
+
```bash
|
10
|
+
chutney
|
11
|
+
```
|
12
|
+
|
13
|
+
This will run Chutney in the current directory where it will look for a folder called `features` and check all the `.feature` files in it. If you want to run Chutney on a specific file, you can specify that on the command line:
|
14
|
+
|
15
|
+
```bash
|
16
|
+
chutney path/to/your/file.feature
|
17
|
+
```
|
18
|
+
|
19
|
+
## Results
|
20
|
+
|
21
|
+
Chutney will output a list of any issues it finds in your feature files. If it finds no issues, it will output a message that all your features are delicious.
|
22
|
+
|
23
|
+
For example:
|
24
|
+
|
25
|
+
```text
|
26
|
+
foo.feature
|
27
|
+
MissingTestAction
|
28
|
+
Your test has no action step. All scenarios should have a 'When' step indicating the action being taken.
|
29
|
+
foo.feature:13
|
30
|
+
MissingScenarioName
|
31
|
+
This scenario is unnamed. You should name all scenarios.
|
32
|
+
foo.feature:13
|
33
|
+
```
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
permalink: /404.html
|
3
|
+
layout: default
|
4
|
+
---
|
5
|
+
|
6
|
+
<style type="text/css" media="screen">
|
7
|
+
.container {
|
8
|
+
margin: 10px auto;
|
9
|
+
max-width: 600px;
|
10
|
+
text-align: center;
|
11
|
+
}
|
12
|
+
h1 {
|
13
|
+
margin: 30px 0;
|
14
|
+
font-size: 4em;
|
15
|
+
line-height: 1;
|
16
|
+
letter-spacing: -1px;
|
17
|
+
}
|
18
|
+
</style>
|
19
|
+
|
20
|
+
<div class="container">
|
21
|
+
<h1>404</h1>
|
22
|
+
|
23
|
+
<p><strong>Page not found :(</strong></p>
|
24
|
+
<p>The requested page could not be found.</p>
|
25
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
---
|
2
|
+
title: "About"
|
3
|
+
layout: single
|
4
|
+
permalink: /pages/about/
|
5
|
+
author_profile: true
|
6
|
+
---
|
7
|
+
|
8
|
+
Chutney is originally a fork of the abandoned [gherkin_lint](https://github.com/funkwerk/gherkin_lint). The original authors remain credited in the gemspec. It has been reworked and extended to support more rules and to be more flexible.
|
9
|
+
|
10
|
+
It is much beloved by me. Although it's a personal project, it's used extensively by my employer and influenced by the needs of my colleagues. I hope it will be useful to you as well. I am very open to ideas, feedback and contributions.
|
11
|
+
|
12
|
+
Chutney is licenced under the [MIT licence](https://raw.githubusercontent.com/BillyRuffian/chutney/refs/heads/master/LICENSE.txt). Do with it what you will and have fun.
|
13
|
+
|
14
|
+
A huge hat tip to Eric Kessler for his work on [cuke_modeler](https://github.com/enkessler/cuke_modeler) which is used to parse the Gherkin files (he also publishes the gherkin linter [cuke_linter](https://github.com/enkessler/cuke_linter) if chutney does not fit your needs).
|
15
|
+
|
16
|
+
### What's the Billy Ruffian thing?
|
17
|
+
|
18
|
+
HMS Bellerophon was a 74-gun third-rate ship of the line of the Royal Navy. Launched in 1786, she served during the French Revolutionary and Napoleonic Wars, mostly on blockades or convoy escort duties. She fought in three fleet actions: the Glorious First of June, the Battle of the Nile and the Battle of Trafalgar. She became famous as the ship upon which Napoleon surrendered and which transported him into exile in 1815.
|
19
|
+
|
20
|
+
Her sailors, not being educated in the Classics, struggled to pronounce her name and so she became known as the Billy Ruffian and her crew as the "Billy Ruffians". The name stuck and was used as a nickname for the ship for the rest of her career.
|
21
|
+
|
22
|
+
Since no one in coffee shops can spell my name, I adopted 'Billy' which turned into 'Billy Ruffian'. It's also a bloody good story.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
---
|
2
|
+
# Feel free to add content and custom Front Matter to this file.
|
3
|
+
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
|
4
|
+
|
5
|
+
# layout: single
|
6
|
+
layout: splash
|
7
|
+
permalink: /
|
8
|
+
author_profile: false
|
9
|
+
|
10
|
+
feature_row:
|
11
|
+
- image_path: /assets/images/mr_pickle.png
|
12
|
+
alt: "A happy jar of pickles smiling at you"
|
13
|
+
title: "Best Practice Cucumber"
|
14
|
+
excerpt: "Love your documentation, and your documentation will love you back."
|
15
|
+
url: "/docs/installing/"
|
16
|
+
btn_label: "Get Started"
|
17
|
+
btn_class: "btn btn--success"
|
18
|
+
---
|
19
|
+
|
20
|
+
{% include feature_row type="center" %}
|
21
|
+
|
22
|
+
You’re trying to follow BDD or ATDD principles, you’re writing executable specifications in gherkin using Cucumber, you’re trying to do the *right thing* but are you doing the *thing right?*
|
23
|
+
|
24
|
+
# Tests are your documentation
|
25
|
+
|
26
|
+
Requirements are your longest-lived asset. Your implementation might change, your tests might change, but your requirements (specifications) continue to exist. They should be clear, concise, and easy to understand. They should be easy to read, easy to write, and easy to maintain. They should be your documentation.
|
27
|
+
|
28
|
+
Cucumber makes it easy to write requirements in a human-readable format. It doesn't need any tool other than a text editor to write and read. It's a great tool to write requirements in a way that everyone can understand and that can be versioned and stored in a version control system with the rest of your code.
|
29
|
+
|
30
|
+
# When cucumbers go bad
|
31
|
+
|
32
|
+
Cucumber specifications can be a great asset, but they can also be a liability. In the exchange between business language and the language of testers and software developers, it's easy to lose the meaning of the requirements. It's easy to write specifications that are hard to read, hard to write, and hard to maintain.
|
33
|
+
|
34
|
+
Chutney helps you write better Cucumber specifications. It helps you write specifications that are clear, concise, and easy to understand. It helps you write specifications that are easy to read, easy to write, and easy to maintain. Be kind to your future self and your team. Love your documentation, and your documentation will love you back.
|
35
|
+
|
36
|
+
# What is Chutney?
|
37
|
+
|
38
|
+
Chutney is a Ruby tool that reads your Cucumber feature files and tells you how you can make them better. It's a linter for Cucumber. It will help you avoid common pitfalls and anti-patterns in your Cucumber feature files. It will help you write better Cucumber specifications.
|
39
|
+
|
40
|
+
Chutney is able to lint feature files in any spoken language supported by Cucumber.
|
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.8.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:
|
14
|
+
date: 2024-09-26 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: amatch
|
@@ -33,14 +33,14 @@ dependencies:
|
|
33
33
|
requirements:
|
34
34
|
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '3.
|
36
|
+
version: '3.21'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: '3.
|
43
|
+
version: '3.21'
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: i18n
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
@@ -62,145 +62,47 @@ dependencies:
|
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: 1.15.0
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
|
-
name:
|
65
|
+
name: language_server-protocol
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
70
|
+
version: '3.17'
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
77
|
+
version: '3.17'
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
79
|
+
name: pastel
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '0.
|
84
|
+
version: '0.7'
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: '0.
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: coveralls
|
94
|
-
requirement: !ruby/object:Gem::Requirement
|
95
|
-
requirements:
|
96
|
-
- - "~>"
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0.8'
|
99
|
-
type: :development
|
100
|
-
prerelease: false
|
101
|
-
version_requirements: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
- - "~>"
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '0.8'
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
name: cucumber
|
108
|
-
requirement: !ruby/object:Gem::Requirement
|
109
|
-
requirements:
|
110
|
-
- - ">="
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '7.0'
|
113
|
-
type: :development
|
114
|
-
prerelease: false
|
115
|
-
version_requirements: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '7.0'
|
120
|
-
- !ruby/object:Gem::Dependency
|
121
|
-
name: pry-byebug
|
122
|
-
requirement: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - "~>"
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '3.0'
|
127
|
-
type: :development
|
128
|
-
prerelease: false
|
129
|
-
version_requirements: !ruby/object:Gem::Requirement
|
130
|
-
requirements:
|
131
|
-
- - "~>"
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '3.0'
|
134
|
-
- !ruby/object:Gem::Dependency
|
135
|
-
name: rake
|
136
|
-
requirement: !ruby/object:Gem::Requirement
|
137
|
-
requirements:
|
138
|
-
- - "~>"
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
version: '13.0'
|
141
|
-
type: :development
|
142
|
-
prerelease: false
|
143
|
-
version_requirements: !ruby/object:Gem::Requirement
|
144
|
-
requirements:
|
145
|
-
- - "~>"
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: '13.0'
|
148
|
-
- !ruby/object:Gem::Dependency
|
149
|
-
name: rerun
|
150
|
-
requirement: !ruby/object:Gem::Requirement
|
151
|
-
requirements:
|
152
|
-
- - "~>"
|
153
|
-
- !ruby/object:Gem::Version
|
154
|
-
version: '0.13'
|
155
|
-
type: :development
|
156
|
-
prerelease: false
|
157
|
-
version_requirements: !ruby/object:Gem::Requirement
|
158
|
-
requirements:
|
159
|
-
- - "~>"
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
version: '0.13'
|
162
|
-
- !ruby/object:Gem::Dependency
|
163
|
-
name: rspec-expectations
|
164
|
-
requirement: !ruby/object:Gem::Requirement
|
165
|
-
requirements:
|
166
|
-
- - "~>"
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
version: '3.0'
|
169
|
-
type: :development
|
170
|
-
prerelease: false
|
171
|
-
version_requirements: !ruby/object:Gem::Requirement
|
172
|
-
requirements:
|
173
|
-
- - "~>"
|
174
|
-
- !ruby/object:Gem::Version
|
175
|
-
version: '3.0'
|
176
|
-
- !ruby/object:Gem::Dependency
|
177
|
-
name: rubocop
|
178
|
-
requirement: !ruby/object:Gem::Requirement
|
179
|
-
requirements:
|
180
|
-
- - "~>"
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
version: 1.50.2
|
183
|
-
type: :development
|
184
|
-
prerelease: false
|
185
|
-
version_requirements: !ruby/object:Gem::Requirement
|
186
|
-
requirements:
|
187
|
-
- - "~>"
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: 1.50.2
|
91
|
+
version: '0.7'
|
190
92
|
- !ruby/object:Gem::Dependency
|
191
|
-
name:
|
93
|
+
name: tty-pie
|
192
94
|
requirement: !ruby/object:Gem::Requirement
|
193
95
|
requirements:
|
194
96
|
- - "~>"
|
195
97
|
- !ruby/object:Gem::Version
|
196
|
-
version: '3
|
197
|
-
type: :
|
98
|
+
version: '0.3'
|
99
|
+
type: :runtime
|
198
100
|
prerelease: false
|
199
101
|
version_requirements: !ruby/object:Gem::Requirement
|
200
102
|
requirements:
|
201
103
|
- - "~>"
|
202
104
|
- !ruby/object:Gem::Version
|
203
|
-
version: '3
|
105
|
+
version: '0.3'
|
204
106
|
description: A linter for your Cucumber features. Making sure you have nice, expressible
|
205
107
|
Gherkin is essential is making sure you have a readable test-base. Chutney is designed
|
206
108
|
to sniff out smells in your feature files. It supports any spoken language Cucumber
|
@@ -209,6 +111,7 @@ email:
|
|
209
111
|
- nigel@brookes-thomas.co.uk
|
210
112
|
executables:
|
211
113
|
- chutney
|
114
|
+
- chutney-lsp
|
212
115
|
extensions: []
|
213
116
|
extra_rdoc_files: []
|
214
117
|
files:
|
@@ -239,8 +142,10 @@ files:
|
|
239
142
|
- docs/usage/selective_enablement.md
|
240
143
|
- examples/emoji.feature
|
241
144
|
- exe/chutney
|
145
|
+
- exe/chutney-lsp
|
242
146
|
- img/chutney.svg
|
243
147
|
- img/formatters.png
|
148
|
+
- img/happy_chutney.png
|
244
149
|
- lib/chutney.rb
|
245
150
|
- lib/chutney/.DS_Store
|
246
151
|
- lib/chutney/configuration.rb
|
@@ -289,10 +194,67 @@ files:
|
|
289
194
|
- lib/chutney/linter/use_background.rb
|
290
195
|
- lib/chutney/linter/use_outline.rb
|
291
196
|
- lib/chutney/locator.rb
|
197
|
+
- lib/chutney/lsp.rb
|
198
|
+
- lib/chutney/lsp/result.rb
|
199
|
+
- lib/chutney/lsp/server.rb
|
292
200
|
- lib/chutney/version.rb
|
293
201
|
- lib/config/locales/en.yml
|
294
202
|
- spec/chutney_spec.rb
|
295
203
|
- spec/spec_helper.rb
|
204
|
+
- usechutney.com/.gitignore
|
205
|
+
- usechutney.com/Gemfile
|
206
|
+
- usechutney.com/_config.yml
|
207
|
+
- usechutney.com/_data/navigation.yml
|
208
|
+
- usechutney.com/_data/ui-text.yml
|
209
|
+
- usechutney.com/_posts/2024-09-23-welcome-to-jekyll.markdown
|
210
|
+
- usechutney.com/assets/images/mr_pickle.png
|
211
|
+
- usechutney.com/assets/images/pug.png
|
212
|
+
- usechutney.com/docs/configuration/index.md
|
213
|
+
- usechutney.com/docs/disabling-rules/index.md
|
214
|
+
- usechutney.com/docs/installing/index.md
|
215
|
+
- usechutney.com/docs/language-server/index.md
|
216
|
+
- usechutney.com/docs/rules/avoid-full-stops/index.md
|
217
|
+
- usechutney.com/docs/rules/avoid-outline-for-single-example/index.md
|
218
|
+
- usechutney.com/docs/rules/avoid-scripting/index.md
|
219
|
+
- usechutney.com/docs/rules/avoid-splat-steps-in-background/index.md
|
220
|
+
- usechutney.com/docs/rules/avoid-splat-steps-in-scenarios/index.md
|
221
|
+
- usechutney.com/docs/rules/avoid-typographers-quotes/index.md
|
222
|
+
- usechutney.com/docs/rules/background-does-more-than-setup/index.md
|
223
|
+
- usechutney.com/docs/rules/background-requires-multiple-scenarios/index.md
|
224
|
+
- usechutney.com/docs/rules/bad-scenario-name/index.md
|
225
|
+
- usechutney.com/docs/rules/empty-feature-file/index.md
|
226
|
+
- usechutney.com/docs/rules/file-name-differs-feature-name/index.md
|
227
|
+
- usechutney.com/docs/rules/givens-after-background/index.md
|
228
|
+
- usechutney.com/docs/rules/inconsistent-quoting/index.md
|
229
|
+
- usechutney.com/docs/rules/invalid-step-flow/index.md
|
230
|
+
- usechutney.com/docs/rules/invalid_file_name/index.md
|
231
|
+
- usechutney.com/docs/rules/missing-example-name/index.md
|
232
|
+
- usechutney.com/docs/rules/missing-example-table/index.md
|
233
|
+
- usechutney.com/docs/rules/missing-feature-description/index.md
|
234
|
+
- usechutney.com/docs/rules/missing-feature-name/index.md
|
235
|
+
- usechutney.com/docs/rules/missing-scenario-name/index.md
|
236
|
+
- usechutney.com/docs/rules/missing-scenario-outline/index.md
|
237
|
+
- usechutney.com/docs/rules/missing-test-action/index.md
|
238
|
+
- usechutney.com/docs/rules/missing-test-verification/index.md
|
239
|
+
- usechutney.com/docs/rules/required-tag-starts-with/index.md
|
240
|
+
- usechutney.com/docs/rules/same-tag-different-case/index.md
|
241
|
+
- usechutney.com/docs/rules/same-tag-for-all-scenarios/index.md
|
242
|
+
- usechutney.com/docs/rules/scenario-names-match/index.md
|
243
|
+
- usechutney.com/docs/rules/tag-used-multiple-times/index.md
|
244
|
+
- usechutney.com/docs/rules/too-clumsy/index.md
|
245
|
+
- usechutney.com/docs/rules/too-long-step/index.md
|
246
|
+
- usechutney.com/docs/rules/too-many-different-tags/index.md
|
247
|
+
- usechutney.com/docs/rules/too-many-steps/index.md
|
248
|
+
- usechutney.com/docs/rules/too-many-tags/index.md
|
249
|
+
- usechutney.com/docs/rules/unique-scenario-names/index.md
|
250
|
+
- usechutney.com/docs/rules/unknown-variable/index.md
|
251
|
+
- usechutney.com/docs/rules/unused-variable/index.md
|
252
|
+
- usechutney.com/docs/rules/use-background/index.md
|
253
|
+
- usechutney.com/docs/rules/use-outline/index.md
|
254
|
+
- usechutney.com/docs/running/index.md
|
255
|
+
- usechutney.com/pages/404.html
|
256
|
+
- usechutney.com/pages/about/index.md
|
257
|
+
- usechutney.com/pages/index.markdown
|
296
258
|
homepage: https://billyruffian.github.io/chutney/
|
297
259
|
licenses:
|
298
260
|
- MIT
|
@@ -308,14 +270,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
308
270
|
requirements:
|
309
271
|
- - ">="
|
310
272
|
- !ruby/object:Gem::Version
|
311
|
-
version: '2
|
273
|
+
version: '3.2'
|
312
274
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
313
275
|
requirements:
|
314
276
|
- - ">="
|
315
277
|
- !ruby/object:Gem::Version
|
316
278
|
version: '0'
|
317
279
|
requirements: []
|
318
|
-
rubygems_version: 3.
|
280
|
+
rubygems_version: 3.5.11
|
319
281
|
signing_key:
|
320
282
|
specification_version: 4
|
321
283
|
summary: A linter for multi-lingual Gherkin
|