chutney 3.7.0 → 3.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -2
  3. data/.rubocop.yml +4 -3
  4. data/Gemfile +9 -0
  5. data/README.md +49 -3
  6. data/chutney.gemspec +8 -17
  7. data/examples/emoji.feature +1 -2
  8. data/exe/chutney +2 -2
  9. data/exe/chutney-lsp +23 -0
  10. data/img/happy_chutney.png +0 -0
  11. data/lib/chutney/configuration.rb +4 -2
  12. data/lib/chutney/formatter/pie_formatter.rb +2 -2
  13. data/lib/chutney/linter/inconsistent_quoting.rb +1 -1
  14. data/lib/chutney/linter/invalid_file_name.rb +1 -1
  15. data/lib/chutney/linter/same_tag_different_case.rb +1 -1
  16. data/lib/chutney/linter/same_tag_for_all_scenarios.rb +2 -2
  17. data/lib/chutney/linter/unique_scenario_names.rb +1 -1
  18. data/lib/chutney/linter/unused_variable.rb +1 -1
  19. data/lib/chutney/linter/use_outline.rb +1 -1
  20. data/lib/chutney/linter.rb +1 -1
  21. data/lib/chutney/lsp/result.rb +16 -0
  22. data/lib/chutney/lsp/server.rb +177 -0
  23. data/lib/chutney/lsp.rb +7 -0
  24. data/lib/chutney/version.rb +1 -1
  25. data/lib/chutney.rb +0 -1
  26. data/usechutney.com/.gitignore +5 -0
  27. data/usechutney.com/Gemfile +37 -0
  28. data/usechutney.com/_config.yml +298 -0
  29. data/usechutney.com/_data/navigation.yml +112 -0
  30. data/usechutney.com/_data/ui-text.yml +2132 -0
  31. data/usechutney.com/_posts/2024-09-23-welcome-to-jekyll.markdown +28 -0
  32. data/usechutney.com/assets/images/mr_pickle.png +0 -0
  33. data/usechutney.com/assets/images/pug.png +0 -0
  34. data/usechutney.com/docs/configuration/index.md +104 -0
  35. data/usechutney.com/docs/disabling-rules/index.md +11 -0
  36. data/usechutney.com/docs/installing/index.md +30 -0
  37. data/usechutney.com/docs/language-server/index.md +24 -0
  38. data/usechutney.com/docs/rules/avoid-full-stops/index.md +23 -0
  39. data/usechutney.com/docs/rules/avoid-outline-for-single-example/index.md +28 -0
  40. data/usechutney.com/docs/rules/avoid-scripting/index.md +33 -0
  41. data/usechutney.com/docs/rules/avoid-splat-steps-in-background/index.md +25 -0
  42. data/usechutney.com/docs/rules/avoid-splat-steps-in-scenarios/index.md +29 -0
  43. data/usechutney.com/docs/rules/avoid-typographers-quotes/index.md +24 -0
  44. data/usechutney.com/docs/rules/background-does-more-than-setup/index.md +28 -0
  45. data/usechutney.com/docs/rules/background-requires-multiple-scenarios/index.md +26 -0
  46. data/usechutney.com/docs/rules/bad-scenario-name/index.md +28 -0
  47. data/usechutney.com/docs/rules/empty-feature-file/index.md +7 -0
  48. data/usechutney.com/docs/rules/file-name-differs-feature-name/index.md +37 -0
  49. data/usechutney.com/docs/rules/givens-after-background/index.md +36 -0
  50. data/usechutney.com/docs/rules/inconsistent-quoting/index.md +29 -0
  51. data/usechutney.com/docs/rules/invalid-step-flow/index.md +31 -0
  52. data/usechutney.com/docs/rules/invalid_file_name/index.md +19 -0
  53. data/usechutney.com/docs/rules/missing-example-name/index.md +49 -0
  54. data/usechutney.com/docs/rules/missing-example-table/index.md +34 -0
  55. data/usechutney.com/docs/rules/missing-feature-description/index.md +25 -0
  56. data/usechutney.com/docs/rules/missing-feature-name/index.md +19 -0
  57. data/usechutney.com/docs/rules/missing-scenario-name/index.md +19 -0
  58. data/usechutney.com/docs/rules/missing-scenario-outline/index.md +39 -0
  59. data/usechutney.com/docs/rules/missing-test-action/index.md +28 -0
  60. data/usechutney.com/docs/rules/missing-test-verification/index.md +28 -0
  61. data/usechutney.com/docs/rules/required-tag-starts-with/index.md +31 -0
  62. data/usechutney.com/docs/rules/same-tag-different-case/index.md +42 -0
  63. data/usechutney.com/docs/rules/same-tag-for-all-scenarios/index.md +42 -0
  64. data/usechutney.com/docs/rules/scenario-names-match/index.md +30 -0
  65. data/usechutney.com/docs/rules/tag-used-multiple-times/index.md +32 -0
  66. data/usechutney.com/docs/rules/too-clumsy/index.md +78 -0
  67. data/usechutney.com/docs/rules/too-long-step/index.md +30 -0
  68. data/usechutney.com/docs/rules/too-many-different-tags/index.md +32 -0
  69. data/usechutney.com/docs/rules/too-many-steps/index.md +79 -0
  70. data/usechutney.com/docs/rules/too-many-tags/index.md +32 -0
  71. data/usechutney.com/docs/rules/unique-scenario-names/index.md +39 -0
  72. data/usechutney.com/docs/rules/unknown-variable/index.md +38 -0
  73. data/usechutney.com/docs/rules/unused-variable/index.md +37 -0
  74. data/usechutney.com/docs/rules/use-background/index.md +40 -0
  75. data/usechutney.com/docs/rules/use-outline/index.md +39 -0
  76. data/usechutney.com/docs/running/index.md +33 -0
  77. data/usechutney.com/pages/404.html +25 -0
  78. data/usechutney.com/pages/about/index.md +22 -0
  79. data/usechutney.com/pages/index.markdown +40 -0
  80. metadata +76 -114
@@ -0,0 +1,298 @@
1
+ # Welcome to Jekyll!
2
+ #
3
+ # This config file is meant for settings that affect your whole blog, values
4
+ # which you are expected to set up once and rarely edit after that. If you find
5
+ # yourself editing this file very often, consider using Jekyll's data files
6
+ # feature for the data you need to update frequently.
7
+ #
8
+ # For technical reasons, this file is *NOT* reloaded automatically when you use
9
+ # 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10
+ #
11
+ # If you need help with YAML syntax, here are some quick references for you:
12
+ # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
13
+ # https://learnxinyminutes.com/docs/yaml/
14
+ #
15
+ # Site settings
16
+ # These are used to personalize your new site. If you look in the HTML files,
17
+ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
18
+ # You can create any custom variable you would like, and they will be accessible
19
+ # in the templates via {{ site.myvariable }}.
20
+
21
+ title: Chutney
22
+ email: hello@billy-ruffian.co.uk
23
+ description: >- # this means to ignore newlines until "baseurl:"
24
+ Beautiful and tasteful best practice for Cucumber
25
+ baseurl: "" # the subpath of your site, e.g. /blog
26
+ url: "https://www.usechutney.com" # the base hostname & protocol for your site, e.g. http://example.com
27
+ twitter_username: thebillyruffian
28
+ github_username: BillyRuffian
29
+
30
+ include: ["pages", "docs"]
31
+
32
+ # Build settings
33
+ theme: minimal-mistakes-jekyll
34
+ plugins:
35
+ - jekyll-feed
36
+ - jekyll-include-cache
37
+ - jekyll-paginate
38
+ - jekyll-sitemap
39
+ - jekyll-gist
40
+ - jekyll-data
41
+
42
+ # Exclude from processing.
43
+ # The following items will not be processed, by default.
44
+ # Any item listed under the `exclude:` key here will be automatically added to
45
+ # the internal "default list".
46
+ #
47
+ # Excluded items can be processed by explicitly listing the directories or
48
+ # their entries' file path in the `include:` list.
49
+ #
50
+ # exclude:
51
+ # - .sass-cache/
52
+ # - .jekyll-cache/
53
+ # - gemfiles/
54
+ # - Gemfile
55
+ # - Gemfile.lock
56
+ # - node_modules/
57
+ # - vendor/bundle/
58
+ # - vendor/cache/
59
+ # - vendor/gems/
60
+ # - vendor/ruby/
61
+
62
+ minimal_mistakes_skin: "dirt" #"default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"
63
+
64
+ # Site Settings
65
+ locale: "en-GB"
66
+ rtl: # true, false (default) # turns direction of the page into right to left for RTL languages
67
+ title_separator: "-"
68
+ subtitle: "Best Practice for Cucumber" # site tagline that appears below site title in masthead
69
+ name: "Nigel Brookes-Thomas"
70
+ repository: # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes"
71
+ teaser: # path of fallback teaser image, e.g. "/assets/images/500x300.png"
72
+ logo: "/assets/images/mr_pickle.png" # path of logo image to display in the masthead, e.g. "/assets/images/88x88.png"
73
+ masthead_title: # overrides the website title displayed in the masthead, use " " for no title
74
+ breadcrumbs: # true, false (default)
75
+ words_per_minute: 200
76
+ enable_copy_code_button: true # true, false (default)
77
+ copyright: # "copyright" name, defaults to site.title
78
+ copyright_url: # "copyright" URL, defaults to site.url
79
+ comments:
80
+ provider: # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "giscus", "custom"
81
+ disqus:
82
+ shortname: # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
83
+ discourse:
84
+ server: # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org
85
+ facebook:
86
+ # https://developers.facebook.com/docs/plugins/comments
87
+ appid:
88
+ num_posts: # 5 (default)
89
+ colorscheme: # "light" (default), "dark"
90
+ utterances:
91
+ theme: # "github-light" (default), "github-dark"
92
+ issue_term: # "pathname" (default)
93
+ giscus:
94
+ repo_id: # Shown during giscus setup at https://giscus.app
95
+ category_name: # Full text name of the category
96
+ category_id: # Shown during giscus setup at https://giscus.app
97
+ discussion_term: # "pathname" (default), "url", "title", "og:title"
98
+ reactions_enabled: # '1' for enabled (default), '0' for disabled
99
+ theme: # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme"
100
+ strict: # 1 for enabled, 0 for disabled (default)
101
+ input_position: # "top", "bottom" # The comment input box will be placed above or below the comments
102
+ emit_metadata: # 1 for enabled, 0 for disabled (default) # https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#imetadatamessage
103
+ lang: # "en" (default)
104
+ lazy: # true, false # Loading of the comments will be deferred until the user scrolls near the comments container.
105
+ staticman:
106
+ branch: # "master"
107
+ endpoint: # "https://{your Staticman v3 API}/v3/entry/github/"
108
+ reCaptcha:
109
+ siteKey:
110
+ secret:
111
+ atom_feed:
112
+ path: # blank (default) uses feed.xml
113
+ hide: true # true, false (default)
114
+ search: true # true, false (default)
115
+ search_full_content: true # true, false (default)
116
+ search_provider: # lunr (default), algolia, google
117
+ lunr:
118
+ search_within_pages: true # true, false (default)
119
+ algolia:
120
+ application_id: # YOUR_APPLICATION_ID
121
+ index_name: # YOUR_INDEX_NAME
122
+ search_only_api_key: # YOUR_SEARCH_ONLY_API_KEY
123
+ powered_by: # true (default), false
124
+ google:
125
+ search_engine_id: # YOUR_SEARCH_ENGINE_ID
126
+ instant_search: # false (default), true
127
+ # SEO Related
128
+ google_site_verification:
129
+ bing_site_verification:
130
+ naver_site_verification:
131
+ yandex_site_verification:
132
+ baidu_site_verification:
133
+
134
+ # Site Author
135
+ author:
136
+ name: "Nigel Brookes-Thomas (Billy Ruffian)"
137
+ avatar: "/assets/images/pug.png"
138
+ bio: "I test things and write ruby things."
139
+ location: "UK"
140
+ email:
141
+ links:
142
+ # - label: "Email"
143
+ # icon: "fas fa-fw fa-envelope-square"
144
+ # # url: "mailto:your.name@email.com"
145
+ - label: "Website"
146
+ icon: "fas fa-fw fa-link"
147
+ url: "https://www.billy-ruffian.co.uk"
148
+ # - label: "Twitter"
149
+ # icon: "fab fa-fw fa-twitter-square"
150
+ # # url: "https://twitter.com/"
151
+ # - label: "Facebook"
152
+ # icon: "fab fa-fw fa-facebook-square"
153
+ # # url: "https://facebook.com/"
154
+ - label: "GitHub"
155
+ icon: "fab fa-fw fa-github"
156
+ url: "https://github.com/BillyRuffian"
157
+ # - label: "Instagram"
158
+ # icon: "fab fa-fw fa-instagram"
159
+ # url: "https://instagram.com/"
160
+
161
+ # Site Footer
162
+ # footer:
163
+ # links:
164
+ # - label: "Twitter"
165
+ # icon: "fab fa-fw fa-twitter-square"
166
+ # # url:
167
+ # - label: "Facebook"
168
+ # icon: "fab fa-fw fa-facebook-square"
169
+ # # url:
170
+ # - label: "GitHub"
171
+ # icon: "fab fa-fw fa-github"
172
+ # # url:
173
+ # - label: "GitLab"
174
+ # icon: "fab fa-fw fa-gitlab"
175
+ # # url:
176
+ # - label: "Bitbucket"
177
+ # icon: "fab fa-fw fa-bitbucket"
178
+ # # url:
179
+ # - label: "Instagram"
180
+ # icon: "fab fa-fw fa-instagram"
181
+ # # url:
182
+
183
+ # Conversion
184
+ markdown: kramdown
185
+ highlighter: rouge
186
+ lsi: false
187
+ excerpt_separator: "\n\n"
188
+ incremental: false
189
+
190
+ # Markdown Processing
191
+ kramdown:
192
+ input: GFM
193
+ hard_wrap: false
194
+ auto_ids: true
195
+ footnote_nr: 1
196
+ entity_output: as_char
197
+ toc_levels: 1..6
198
+ smart_quotes: lsquo,rsquo,ldquo,rdquo
199
+ enable_coderay: false
200
+
201
+ # Sass/SCSS
202
+ sass:
203
+ sass_dir: _sass
204
+ style: compressed # https://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
205
+
206
+ # Outputting
207
+ permalink: /:categories/:title/
208
+ timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
209
+
210
+ # Pagination with jekyll-paginate
211
+ paginate: 5 # amount of posts to show
212
+ paginate_path: /page:num/
213
+
214
+ # Pagination with jekyll-paginate-v2
215
+ # See https://github.com/sverrirs/jekyll-paginate-v2/blob/master/README-GENERATOR.md#site-configuration
216
+ # for configuration details
217
+ pagination:
218
+ # Set enabled to true to use paginate v2
219
+ enabled: true
220
+ debug: false
221
+ collection: "posts"
222
+ per_page: 10
223
+ permalink: "/page/:num/"
224
+ title: ":title - page :num"
225
+ limit: 0
226
+ sort_field: "date"
227
+ sort_reverse: true
228
+ category: "posts"
229
+ tag: ""
230
+ locale: ""
231
+ trail:
232
+ before: 2
233
+ after: 2
234
+
235
+ # mimic GitHub Pages with --safe
236
+ whitelist:
237
+ - jekyll-paginate
238
+ - jekyll-sitemap
239
+ - jekyll-gist
240
+ - jekyll-feed
241
+ - jekyll-include-cache
242
+
243
+ # Archives
244
+ # Type
245
+ # - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
246
+ # - Jekyll Archives plugin archive pages ~> type: jekyll-archives
247
+ # Path (examples)
248
+ # - Archive page should exist at path when using Liquid method or you can
249
+ # expect broken links (especially with breadcrumbs enabled)
250
+ # - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
251
+ # - <base_path>/categories/my-awesome-category/index.html ~> path: /categories/
252
+ # - <base_path>/my-awesome-category/index.html ~> path: /
253
+ category_archive:
254
+ type: liquid
255
+ path: /categories/
256
+ tag_archive:
257
+ type: liquid
258
+ path: /tags/
259
+ # https://github.com/jekyll/jekyll-archives
260
+ # jekyll-archives:
261
+ # enabled:
262
+ # - categories
263
+ # - tags
264
+ # layouts:
265
+ # category: archive-taxonomy
266
+ # tag: archive-taxonomy
267
+ # permalinks:
268
+ # category: /categories/:name/
269
+ # tag: /tags/:name/
270
+
271
+ # HTML Compression
272
+ # - https://jch.penibelst.de/
273
+ compress_html:
274
+ clippings: all
275
+ ignore:
276
+ envs: development
277
+
278
+ # Defaults
279
+ defaults:
280
+ # _posts
281
+ - scope:
282
+ path: ""
283
+ type: posts
284
+ values:
285
+ layout: single
286
+ author_profile: false
287
+ read_time: false
288
+ comments: # true
289
+ share: false
290
+ related: false
291
+ - scope:
292
+ path: "docs"
293
+ type: pages
294
+ values:
295
+ layout: single
296
+ author_profile: false
297
+ sidebar:
298
+ nav: "sidebar"
@@ -0,0 +1,112 @@
1
+ # main links
2
+ main:
3
+ # - title: "Quick-Start Guide"
4
+ # url: https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/
5
+ - title: "Documentation"
6
+ url: /docs/installing/
7
+ - title: "About"
8
+ url: /pages/about/
9
+ # - title: "About"
10
+ # url: https://mmistakes.github.io/minimal-mistakes/about/
11
+ # - title: "Sample Posts"
12
+ # url: /year-archive/
13
+ # - title: "Sample Collections"
14
+ # url: /collection-archive/
15
+ # - title: "Sitemap"
16
+ # url: /sitemap/
17
+
18
+ sidebar:
19
+ - title: "Getting started"
20
+ children:
21
+ - title: "Installing"
22
+ url: /docs/installing/
23
+ - title: "Configuration"
24
+ url: /docs/configuration/
25
+ - title: "Running Chutney"
26
+ url: /docs/running/
27
+ - title: "Disabling rules"
28
+ url: /docs/disabling-rules/
29
+
30
+ - title: "Rules"
31
+ children:
32
+ - title: "Avoid full stops"
33
+ url: /docs/rules/avoid-full-stops/
34
+ - title: "Avoid outline for single example"
35
+ url: /docs/rules/avoid-outline-for-single-example/
36
+ - title: "Avoid scripting"
37
+ url: /docs/rules/avoid-scripting/
38
+ - title: "Avoid splat steps in background"
39
+ url: /docs/rules/avoid-splat-steps-in-background/
40
+ - title: "Avoid splat steps in scenarios"
41
+ url: /docs/rules/avoid-splat-steps-in-scenarios/
42
+ - title: "Avoid typographers' quotes"
43
+ url: /docs/rules/avoid-typographers-quotes/
44
+ - title: "Background does more than setup"
45
+ url: /docs/rules/background-does-more-than-setup/
46
+ - title: "Background requires multiple scenarios"
47
+ url: /docs/rules/background-requires-multiple-scenarios/
48
+ - title: "Bad scenario name"
49
+ url: /docs/rules/bad-scenario-name/
50
+ - title: "Empty feature file"
51
+ url: /docs/rules/empty-feature-file/
52
+ - title: "File name differs from feature name"
53
+ url: /docs/rules/file-name-differs-feature-name/
54
+ - title: "Givens after background"
55
+ url: /docs/rules/givens-after-background/
56
+ - title: "Inconsistent quoting"
57
+ url: /docs/rules/inconsistent-quoting/
58
+ - title: "Invalid step flow"
59
+ url: /docs/rules/invalid-step-flow/
60
+ - title: "Invalid file name"
61
+ url: /docs/rules/invalid-file-name/
62
+ - title: "Missing example name"
63
+ url: /docs/rules/missing-example-name/
64
+ - title: "Missing example table"
65
+ url: /docs/rules/missing-example-table/
66
+ - title: "Missing feature description"
67
+ url: /docs/rules/missing-feature-description/
68
+ - title: "Missing feature name"
69
+ url: /docs/rules/missing-feature-name/
70
+ - title: "Missing scenario name"
71
+ url: /docs/rules/missing-scenario-name/
72
+ - title: "Missing scenario outline"
73
+ url: /docs/rules/missing-scenario-outline/
74
+ - title: "Missing Test Action"
75
+ url: /docs/rules/missing-test-action/
76
+ - title: "Missing Test Verification"
77
+ url: /docs/rules/missing-test-verification/
78
+ - title: "Required tags start with"
79
+ url: /docs/rules/required-tags-start-with/
80
+ - title: "Same tag different case"
81
+ url: /docs/rules/same-tag-different-case/
82
+ - title: "Same tag for all scenarios"
83
+ url: /docs/rules/same-tag-for-all-scenarios/
84
+ - title: "Scenario names match"
85
+ url: /docs/rules/scenario-names-match/
86
+ - title: "Tag used multiple times"
87
+ url: /docs/rules/tag-used-multiple-times/
88
+ - title: "Too clumsy"
89
+ url: /docs/rules/too-clumsy/
90
+ - title: "Too long step"
91
+ url: /docs/rules/too-long-step/
92
+ - title: "Too many different tags"
93
+ url: /docs/rules/too-many-different-tags/
94
+ - title: "Too many steps"
95
+ url: /docs/rules/too-many-steps/
96
+ - title: "Too many tags"
97
+ url: /docs/rules/too-many-tags/
98
+ - title: "Unique scenario names"
99
+ url: /docs/rules/unique-scenario-names/
100
+ - title: "Unknown variable"
101
+ url: /docs/rules/unknown-variable/
102
+ - title: "Unused variable"
103
+ url: /docs/rules/unused-variable/
104
+ - title: "Use background"
105
+ url: /docs/rules/use-background/
106
+ - title: "Use outline"
107
+ url: /docs/rules/use-outline/
108
+
109
+ - title: "Advanced"
110
+ children:
111
+ - title: "Language server"
112
+ url: /docs/language-server/