cucumber 6.1.0 → 7.0.0

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: 693fd926011c157f346a2445dcb3d84a8b0f70b8be7853260c553187077b05e2
4
- data.tar.gz: 0a8be153b06885acca58052746765f2576caf1a837491b174a27526903fadebf
3
+ metadata.gz: 9e4a8b91cb4072857d261f0888df769f16ce58c10cfad140fabfdff58bfe8a0d
4
+ data.tar.gz: 5dbaf8d4f7b9f0a3157ecdd7b4ee781e9a970f710ebc6831ceadd7436d7f1416
5
5
  SHA512:
6
- metadata.gz: d2b6a961aa5ff54236f9a9e6ff731f3713a62918140800c967b9fa9079250d88ef8463b88c95959045189967f34a73f1fa44c29284859135a6adc962010ed42b
7
- data.tar.gz: 04f193112b579f00cd77dc81081616f13439eae515337d66ac65011ce22f7a1033600b9cb3b3af8be46c22d013878f68505b8b243183761533dc3226a6565e83
6
+ metadata.gz: 19dcfbd2b132cc33642189ac36b397e58c856abbb439d65755ded5a3146d0bbe8c70d4d9ecc9974b1b97a9fbca18dcad4336d813b2410953ed9444c313a206b2
7
+ data.tar.gz: 1b2709184513d98aaba0f1fdae9176c86dfb61b81e06f49cac5219fdef3b9c87d04350b6a2ba00aada5b2ca2d917f00f0ebfb8336892466638c4651fd3b1fb10
data/CHANGELOG.md CHANGED
@@ -10,7 +10,7 @@ Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blo
10
10
 
11
11
  ---
12
12
 
13
- ## [In GIT](https://github.com/cucumber/cucumber-ruby/compare/v6.1.0...main)
13
+ ## [In GIT](https://github.com/cucumber/cucumber-ruby/compare/v7.0.0...main)
14
14
 
15
15
  ### Added
16
16
 
@@ -22,6 +22,37 @@ Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blo
22
22
 
23
23
  ### Security fixes
24
24
 
25
+ ## [7.0.0](https://github.com/cucumber/cucumber-ruby/compare/v6.1.0...v7.0.0)
26
+
27
+ ### Fixed
28
+
29
+ - Cucumber terminating with `negative argument` ArgumentError
30
+ ([1546](https://github.com/cucumber/cucumber-ruby/issues/1546)
31
+ [1548](https://github.com/cucumber/cucumber-ruby/pull/1548)
32
+ [Serghei Moret](https://github.com/JoeSSS))
33
+ - Fixed reports banner to point to [new docs](https://cucumber.io/docs/cucumber/environment-variables/) about environment variables
34
+
35
+ ### Changed
36
+
37
+ - Upgrade of `cucumber-core`, `cucumber-gherkin` and `cucumber-messages`.
38
+
39
+ This brings some breaking changes in `Cucumber::Messages`.
40
+ ([1544](https://github.com/cucumber/cucumber-ruby/pull/1544)
41
+ [aurelien-reeves](https://github.com/aurelien-reeves))
42
+
43
+ This also fixes [1545](https://github.com/cucumber/cucumber-ruby/issues/1545)
44
+ ([1549](https://github.com/cucumber/cucumber-ruby/pull/1549)
45
+ [luke-hill](https://github.com/luke-hill))
46
+
47
+ ### Removed
48
+
49
+ - On Windows, auto-detection of ANSICON has been removed - Windows now properly
50
+ supports ANSI colors in the terminal. In case of issues on older versions of
51
+ Windows, execute cucumber with `--no-color`, or install
52
+ [ANSICON](https://github.com/adoxa/ansicon/) globally.
53
+ ([1561](https://github.com/cucumber/cucumber-ruby/pull/1561)
54
+ [yosukei3108](https://github.com/yosukei3108))
55
+
25
56
  ## [v6.1.0](https://github.com/cucumber/cucumber-ruby/compare/v6.0.0...v6.1.0)
26
57
 
27
58
  ### Fixed
data/CONTRIBUTING.md CHANGED
@@ -1,85 +1,250 @@
1
- ## About to create a new Github Issue?
1
+ # Contributing to Cucumber
2
2
 
3
- We appreciate that. But before you do, please learn our basic rules:
3
+ Thank you for considering contributing to Cucumber!
4
4
 
5
- - This is not a support forum. If you have a question, please go to [The Cukes Google Group](http://groups.google.com/group/cukes).
6
- - Do you have an idea for a new feature? Then don't expect it to be implemented unless you or someone else sends a [pull request](https://help.github.com/articles/using-pull-requests). You might be better to start a discussion on [the google group](http://groups.google.com/group/cukes).
7
- - Reporting a bug? Please tell us:
8
- - which version of Cucumber you're using
9
- - which version of Ruby you're using.
10
- - How to reproduce it. Bugs with a failing test in a [pull request](https://help.github.com/articles/using-pull-requests) get fixed much quicker. Some bugs may never be fixed.
11
- - Want to paste some code or output? Put \`\`\` on a line above and below your code/output. See [GFM](https://help.github.com/articles/github-flavored-markdown)'s _Fenced Code Blocks_ for details.
12
- - We love [pull requests](https://help.github.com/articles/using-pull-requests). But if you don't have a test to go with it we probably won't merge it.
5
+ This document will first introduce different ways to get involved before
6
+ focusing on how to contribute to the code.
13
7
 
14
- # Contributing to Cucumber
8
+ ## Code of Conduct
9
+
10
+ Everyone interacting in this codebase and issue tracker is expected to follow
11
+ the Cucumber [code of conduct](https://cucumber.io/conduct).
12
+
13
+ ## How can I contribute?
14
+
15
+ If you're reading this, you are certainly looking to contribute to the code. Cucumber
16
+ is not this single repository. It is made up of several packages around several
17
+ repositories. So before going further with the code, you may consider the
18
+ following first, in order to get your bearings.
19
+
20
+ If you just want to know how to contribute to the code, go to
21
+ [Contribute to the code](#contribute-to-the-code).
22
+
23
+ If you want to report an issue, or suggest an enhancement, go to
24
+ [Report bugs and submit feature requests](#report-bugs-and-submit-feature-requests).
25
+
26
+ ### Meet the community, the maintainers, and other Cucumber developers
27
+
28
+ Smartbear hosts a [community message board].
29
+ This is a good place to meet users, the community, and to ask questions.
30
+
31
+ You can also join the Cucumber Community Slack:
32
+ [register for an account][register-slack] then head over to [#intro][slack-intro].
33
+ This is the place to be to meet other contributors and find a mentor to help you
34
+ get started.
35
+
36
+ ### Test Cucumber
37
+
38
+ Testing Cucumber, especially new features, is a great way to contribute. We
39
+ cannot put a price on (early) feedback.
40
+
41
+ Keep an eye on our CHANGELOGS to discover new features. Test and experiment, and
42
+ submit your feedback through [issues](#report-bugs-and-submit-feature-requests),
43
+ the [community message board], or [Slack][community-slack].
44
+
45
+ ### Contribute to the documentation
46
+
47
+ [The documentation][cucumber-docs] is an important part of Cucumber. It is
48
+ essential that it remains simple and accurate. You can contribute to it via
49
+ [github.com/cucumber/docs](https://github.com/cucumber/docs).
50
+
51
+ ### Promote Cucumber
52
+
53
+ You don't know how to contribute but would like to help? Telling other people
54
+ about Cucumber on the Internet - social media, reviews, blogs - but also in real
55
+ life is already a big help! Join us on [Slack][community-slack] to share your
56
+ publication and to discover new ones.
57
+
58
+ ## Report bugs and submit feature requests
59
+
60
+ The short version is:
61
+
62
+ - Find the appropriate repository
63
+ - Try to check there is not already an issue or pull request that deals with
64
+ your bug or request
65
+ - Explain your issue and include as much details as possible to help other
66
+ people reproduce your problem or understand your request
67
+ - Consider submitting a pull request if you feel confident enough
68
+
69
+ You can find more details for each of these steps in the following sections.
70
+
71
+ ### Find the appropriate repository
72
+
73
+ The current repository, `cucumber-ruby`, is actually the tip of the iceberg. It
74
+ provides a user interface through a CLI, some built-in formatters, and the
75
+ execution environment you may know as the `World` object.
76
+
77
+ An important repository is [cucumber/common]. It is a mono-repo
78
+ with a lot of libraries. You will find there what is related to:
79
+
80
+ - parsing Gherkin documents - aka `.feature` files
81
+ - parsing tag expressions - the options you use to filter an execution with tags
82
+ - parsing Cucumber expressions - the expressions that link a Gherkin step to a
83
+ step definition
84
+ - everyting related to the HTML formatter
85
+
86
+ `cucumber-ruby` is also composed of:
87
+
88
+ - [cucumber-ruby-core]: this is the engine that will execute the test cases
89
+ computed from a parsed Gherkin document
90
+ - [cucumber-ruby-wire]: everything related to the Cucumber's wire protocol
91
+
92
+ Last but not least, there is also a repository for [cucumber-rails], the gem
93
+ that brings Cucumber to Rails 5.x and 6.x.
15
94
 
16
- The rest of this document is a guide for those maintaining Cucumber, and others who would like to submit patches.
95
+ In any case, if your are not sure, best places to open an issue are the current
96
+ repository - `cucumber-ruby` - and the mono-repo at [cucumber/common].
17
97
 
18
- ## Talking with other devs
98
+ ### Look for existing issues and pull requests
19
99
 
20
- You can chat with the core team on https://gitter.im/cucumber/contributors. We try to have office hours on Fridays.
100
+ Search in [the current repository][cucumber-ruby-issues], in the
101
+ [mono-repo][cucumber/common-issues], but also in the
102
+ [whole cucumber organization][cucumber-issues] if the problem or feature has already
103
+ been reported. If you find an issue or pull request which is still open, add
104
+ comments to it instead of opening a new one.
21
105
 
22
- ## Installing your own gems
106
+ If you're not sure, don't hesitate to just open a new issue. We can always merge
107
+ and de-duplicate later.
23
108
 
24
- A `Gemfile.local`-file can be used to have your own gems installed to support your normal development workflow.
25
- Execute `bundle config set --local gemfile Gemfile.local` to use it per default.
109
+ ### Submitting a pull request
26
110
 
27
- Example:
111
+ When submitting a pull request:
112
+
113
+ - create a [draft pull request][how-to-create-a-draft-pr]
114
+ - try to follow the instructions in the [template](.github/PULL_REQUEST_TEMPLATE.md)
115
+ - if possible, [sign your commits]
116
+ - update CHANGELOG.md with your changes
117
+ - once the PR is ready, request for reviews
118
+
119
+ More info on [how to contribute to the code](#contribute-to-the-code) can be
120
+ found below.
121
+
122
+ ### Opening a new issue
123
+
124
+ To open a good issue, be clear and precise.
125
+
126
+ If you report a problem, the reader must be able to reproduce it easily.
127
+ Please do your best to create a [minimal, reproducible example][minimal-reproducible-example].
128
+
129
+ Consider submitting a pull request. Even if you think you cannot fix it by
130
+ yourself, a pull request with a failing test is always welcome.
131
+
132
+ If you request is for an enhancement - a new feature - try to be specific and
133
+ support your request with referenced facts and include examples to illustrate
134
+ your proposal.
135
+
136
+ ## Contribute to the code
137
+
138
+ ### Development environment
139
+
140
+ Development environment for `cucumber-ruby` is a simple Ruby environment with
141
+ Bundler. Use a [supported Ruby version](./README.md#supported-platforms), make
142
+ sure [Bundler] is set-up, and voilà!
143
+
144
+ You can then [fork][how-to-fork] and clone the repository. If your environment
145
+ is set-up properly, the following commands should install the dependencies and
146
+ execute all the tests successfully.
147
+
148
+ ```shell
149
+ bundle install
150
+ bundle exec rake
151
+ ```
152
+
153
+ You can now create a branch for your changes and [submit a pull request](#submitting-a-pull-request)!
154
+
155
+ If you want to check the code coverage during your development, execute
156
+ `bundle exec rake cov`.
157
+
158
+ ### Cucumber-ruby-core
159
+
160
+ As seen here: [Find the appropriate repository](#find-the-appropriate-repository),
161
+ you may need to work with other repositories in order to accomplish your
162
+ development. Beside the mono-repo in [cucumber/common], [cucumber-ruby-core] is
163
+ also a big piece of `cucumber-ruby`.
164
+
165
+ ### Using a local Gemfile
166
+
167
+ A local Gemfile allows you to use your prefer set of gems for your own
168
+ development workflow, like gems dedicated to debugging. Such gems are not part
169
+ of `cucumber-ruby` standard `Gemfile`.
170
+
171
+ `Gemfile.local`, `Gemfile.local.lock` and `.bundle` have been added to
172
+ `.gitignore` so local changes cannot be accidentaly commited and pushed to the
173
+ repository.
174
+
175
+ A `Gemfile.local` may look like this:
28
176
 
29
177
  ```ruby
178
+ # Gemfile.local
179
+
30
180
  # Include the regular Gemfile
31
181
  eval File.read('Gemfile')
32
182
 
183
+ # Include your favorites development gems
33
184
  group :development do
34
185
  gem 'byebug'
35
- gem 'debase', require: false
36
- gem 'ruby-debug-ide', require: false
37
186
  gem 'pry'
38
187
  gem 'pry-byebug'
188
+
189
+ gem 'debase', require: false
190
+ gem 'ruby-debug-ide', require: false
39
191
  end
40
192
  ```
41
193
 
42
- ## Using Visual Studio Code?
194
+ Then you can execute bundler with the `--gemfile` flag:
195
+ `bundle install --gemfile Gemfile.local`, or with an environment variable:
196
+ `BUNDLE_GEMFILE=Gemfile.local bundle [COMMAND]`.
197
+
198
+ To use your local Gemfile per default, you can also execute
199
+ `bundle config set --local gemfile Gemfile.local`.
43
200
 
44
- Sample for launch.json configuration is available in
45
- [docs/vscode-example-launch-configuration.md](https://github.com/cucumber/cucumber-ruby/blob/main/docs/vscode-example-launch-configuration.md)
201
+ ### First timer? Welcome!
46
202
 
47
- ## Note on Patches/Pull Requests
203
+ Looking for something simple to begin with? Look at issues with the label
204
+ '[good first issue](https://github.com/cucumber/cucumber-ruby/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)'.
48
205
 
49
- - Fork the project. Make a branch for your change.
50
- - Make your feature addition or bug fix.
51
- - Make sure your patch is well covered by tests. We don't accept changes to Cucumber that aren't tested.
52
- - Please do not change the Rakefile, version, or history.
53
- (if you want to have your own version, that is fine but
54
- bump version in a commit by itself so we can ignore when we merge your change)
55
- - Send us a pull request.
206
+ Remember: Cucumber is more than `cucumber-ruby`. You can look for good first
207
+ issues in [other cucumber reporistories](#find-the-appropriate-repository).
56
208
 
57
- ## Running tests
209
+ ### Having trouble getting started with the code? We're here to help!
58
210
 
59
- gem install bundler
60
- bundle install
61
- bundle exec rake
211
+ If you have trouble setting-up your development environment, or getting started
212
+ with the code, you can join us on [Slack][community-slack]. You will find there
213
+ a lot of contributors.
62
214
 
63
- To get code coverage results, run `bundle exec rake cov`
215
+ Full-time maintainers are also available. We would be please to have 1:1 pairing
216
+ sessions to help you getting started. Look for
217
+ [Matt Wynne](https://cucumberbdd.slack.com/team/U590XDLF3) or
218
+ [Aurélien Reeves](https://cucumberbdd.slack.com/team/U011BB95MC7) on
219
+ [Slack][community-slack].
64
220
 
65
- ## First timer? Welcome!
221
+ ### Additional documentation and notice
66
222
 
67
- If you are new to the project or to OSS, check the label
68
- [Easy](https://github.com/cucumber/cucumber-ruby/labels/Easy). Also, you can
69
- help us to correct style violations reported here:
70
- [.rubocop_todo.yml](https://github.com/cucumber/cucumber-ruby/blob/main/.rubocop_todo.yml).
223
+ You can find additional documentation in the [docs](./docs) directory such as
224
+ (non-exhaustive list):
71
225
 
72
- ## Release Process
226
+ - [How to release cucumber-ruby](./docs/RELEASE_PROCESS.md) (for maintainers)
227
+ - [How to set-up a launch.json configuration for Visual Studio Code](./docs/vscode-example-launch-configuration.md)
73
228
 
74
- - Upgrade gems with `scripts/update-gemspec`
75
- - Bump the version number in `lib/cucumber/version`
76
- - Update `CHANGELOG.md` with the upcoming version number and create a new `In Git` section
77
- - Remove empty sections from `CHANGELOG.md`
78
- - Now release it:
79
229
 
80
- ```
81
- git commit -am "Release X.Y.Z"
82
- make release
83
- ```
230
+ <!-- Links -->
84
231
 
85
- - Finally, update the cucumber-ruby version in the [documentation project](https://cucumber.io/docs/installation/) in [versions.yaml](https://github.com/cucumber/docs/blob/master/data/versions.yaml) file.
232
+ [community message board]: https://community.smartbear.com/t5/Cucumber-Open/bd-p/CucumberOS
233
+ [register-slack]: https://cucumberbdd-slack-invite.herokuapp.com/
234
+ [slack-intro]: https://cucumberbdd.slack.com/messages/C5WD8SA21/
235
+ [community-slack]: https://cucumberbdd.slack.com/
236
+ [cucumber-docs]: https://cucumber.io/docs/cucumber
237
+ [cucumber/common]: https://github.com/cucumber/common
238
+ [cucumber-ruby-core]: https://github.com/cucumber/cucumber-ruby-core
239
+ [cucumber-ruby-wire]: https://github.com/cucumber/cucumber-ruby-wire
240
+ [cucumber-rails]: https://github.com/cucumber/cucumber-rails
241
+ [cucumber-ruby-issues]: https://github.com/cucumber/cucumber-ruby/search?q=is%3Aissue
242
+ [cucumber/common-issues]: https://github.com/cucumber/common/search?q=is%3Aissue
243
+ [cucumber-issues]: https://github.com/search?q=is%3Aissue+user%3Acucumber
244
+ [how-to-create-a-draft-pr]: https://docs.github.com/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests
245
+ [how-to-fork]: https://docs.github.com/github/collaborating-with-pull-requests/working-with-forks/about-forks
246
+ [sign your commits]: https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification/signing-commits
247
+ [minimal-reproducible-example]: https://stackoverflow.com/help/minimal-reproducible-example
248
+ [RVM]: https://rvm.io/
249
+ [rbenv]: https://github.com/rbenv/rbenv
250
+ [Bundler]: https://bundler.io/
data/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ <p align="center">
2
+ <img src="./.github/img/cucumber-open-logo.png" alt="Cucumber Open - Supported by Smartbear" width="428" />
3
+ </p>
4
+
5
+ # Cucumber
6
+
1
7
  [![OpenCollective](https://opencollective.com/cucumber/backers/badge.svg)](https://opencollective.com/cucumber)
2
8
  [![OpenCollective](https://opencollective.com/cucumber/sponsors/badge.svg)](https://opencollective.com/cucumber)
3
9
  [![pull requests](https://oselvar.com/api/badge?label=pull%20requests&csvUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fcucumber%2Foselvar-github-metrics%2Fmain%2Fdata%2Fcucumber%2Fcucumber-ruby%2FpullRequests.csv)](https://oselvar.com/github/cucumber/oselvar-github-metrics/main/cucumber/cucumber-ruby)
@@ -6,24 +12,43 @@
6
12
  [![Code Climate](https://codeclimate.com/github/cucumber/cucumber-ruby.svg)](https://codeclimate.com/github/cucumber/cucumber-ruby)
7
13
  [![Coverage Status](https://coveralls.io/repos/cucumber/cucumber-ruby/badge.svg?branch=main)](https://coveralls.io/r/cucumber/cucumber-ruby?branch=main)
8
14
 
9
- # Cucumber
10
-
11
15
  Cucumber is a tool for running automated tests written in plain language. Because they're
12
16
  written in plain language, they can be read by anyone on your team. Because they can be
13
17
  read by anyone, you can use them to help improve communication, collaboration and trust on
14
18
  your team.
15
19
 
16
- Where to get more info:
20
+ <p align="center">
21
+ <img src="./.github/img/gherkin-example.png" alt="Cucumber Gherkin Example" width="728" />
22
+ </p>
17
23
 
18
- - The main website: https://cucumber.io/
19
- - Documentation: https://cucumber.io/docs
20
- - Ruby API Documentation: http://www.rubydoc.info/github/cucumber/cucumber-ruby/
21
- - Support forum: https://groups.google.com/group/cukes
22
- - Chat: ([Slack](https://cucumber.io/support#slack) and [Gitter](https://cucumber.io/support#gitter))
24
+ This is the Ruby implementation of Cucumber. Cucumber is also available for [JavaScript](https://github.com/cucumber/cucumber-js),
25
+ [Java](https://github.com/cucumber/cucumber-jvm), and a lot of other languages. You can find a list of implementations here: https://cucumber.io/docs/installation/.
26
+
27
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for info on contributing to Cucumber (issues, PRs, etc.).
28
+
29
+ Everyone interacting in this codebase and issue tracker is expected to follow the
30
+ Cucumber [code of conduct](https://cucumber.io/conduct).
31
+
32
+ ## Installation
33
+
34
+ Cucumber for Ruby is a Ruby gem. Install it as you would install any gem: add
35
+ `cucumber` to your Gemfile:
36
+
37
+ gem 'cucumber'
38
+
39
+ then install it:
40
+
41
+ $ bundle
23
42
 
24
- See [CONTRIBUTING.md](CONTRIBUTING.md) for info on contributing to Cucumber.
43
+ or install the gem directly:
25
44
 
26
- ## Supported platforms
45
+ $ gem install cucumber
46
+
47
+ Later in this document, bundler is considered being used so all commands are using
48
+ `bundle exec`. If this is not the case for you, execute `cucumber` directly, without
49
+ `bundle exec`.
50
+
51
+ ### Supported platforms
27
52
 
28
53
  - Ruby 3.0
29
54
  - Ruby 2.7
@@ -33,9 +58,101 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for info on contributing to Cucumber.
33
58
  - Ruby 2.3
34
59
  - JRuby 9.2 (with [some limitations](https://github.com/cucumber/cucumber-ruby/blob/main/docs/jruby-limitations.md))
35
60
 
36
- ## Code of Conduct
61
+ ### Ruby on Rails
62
+
63
+ Using Ruby on Rails? You can use [cucumber-rails](https://github.com/cucumber/cucumber-rails)
64
+ to bring Cucumber into your Rails project.
65
+
66
+ ## Usage
67
+
68
+ ### Initialization
69
+
70
+ If you need to, initialize your `features` directory with
71
+
72
+ $ bundle exec cucumber --init
73
+
74
+ This will create the following directories and files if they do not exist already:
75
+
76
+ features
77
+ ├── step_definitions
78
+ └── support
79
+ └── env.rb
80
+
81
+ ### Create your specification
82
+
83
+ Create a file named `rule.feature` in the `features` directory with:
84
+
85
+ ```gherkin
86
+ # features/rule.feature
37
87
 
38
- Everyone interacting in this codebase and issue tracker is expected to follow the Cucumber [code of conduct](https://cucumber.io/conduct).
88
+ Feature: Rule Sample
89
+
90
+ Rule: This is a rule
91
+
92
+ Example: A passing example
93
+ Given this will pass
94
+ When I do an action
95
+ Then some results should be there
96
+
97
+ Example: A failing example
98
+ Given this will fail
99
+ When I do an action
100
+ Then some results should be there
101
+
102
+ ```
103
+
104
+ ### Automate your specification
105
+
106
+ And a file named `steps.rb` in `features/step_definitions` with:
107
+
108
+ ```ruby
109
+ # features/step_definitions/steps.rb
110
+
111
+ Given("this will pass") do
112
+ @this_will_pass = true
113
+ end
114
+
115
+ Given("this will fail") do
116
+ @this_will_pass = false
117
+ end
118
+
119
+ When("I do an action") do
120
+ end
121
+
122
+ Then("some results should be there") do
123
+ expect(@this_will_pass)
124
+ end
125
+ ```
126
+
127
+ ### Run Cucumber
128
+
129
+ $ bundle exec cucumber
130
+
131
+ To execute a single feature file:
132
+
133
+ $ bundle exec cucumber features/rule.feature
134
+
135
+ To execute a single example, indicates the line of the name of the example:
136
+
137
+ $ bundle exec cucumber features/rule.feature:7
138
+
139
+ To summarize the results on the standard output, and writte a HTML report on disk:
140
+
141
+ $ bundle exec cucumber --format summary --format html --out report.html
142
+
143
+ For more command line options
144
+
145
+ $ bundle exec cucumber --help
146
+
147
+ You can also find documentation on the command line possibilities in
148
+ [features/docs/cli](features/docs/cli).
149
+
150
+ ## Documentation and support
151
+
152
+ - Getting started, writing features, step definitions, and more: https://cucumber.io/docs
153
+ - Ruby API Documentation: http://www.rubydoc.info/github/cucumber/cucumber-ruby/
154
+ - Community support forum: https://community.smartbear.com/t5/Cucumber-Open/bd-p/CucumberOS
155
+ - Slack: [register for an account](https://cucumberbdd-slack-invite.herokuapp.com/) then head over to [#intro](https://cucumberbdd.slack.com/messages/C5WD8SA21/)
39
156
 
40
157
  ## Copyright
41
158
 
@@ -29,7 +29,7 @@ module Cucumber
29
29
  "#{INDENT}Please consider using the message formatter\n"\
30
30
  "#{INDENT}with the standalone json-formatter\n" \
31
31
  "#{INDENT}(https://github.com/cucumber/cucumber/tree/master/json-formatter)."],
32
- 'message' => ['Cucumber::Formatter::Message', 'Outputs protobuf messages'],
32
+ 'message' => ['Cucumber::Formatter::Message', 'Prints each message in NDJSON form, which can then be consumed by other tools.'],
33
33
  'html' => ['Cucumber::Formatter::HTML', 'Outputs HTML report'],
34
34
  'summary' => ['Cucumber::Formatter::Summary', 'Summary output of feature and scenarios']
35
35
  }.freeze
@@ -3,13 +3,6 @@
3
3
  require 'cucumber/platform'
4
4
  require 'cucumber/term/ansicolor'
5
5
 
6
- if Cucumber::WINDOWS_MRI
7
- unless ENV['ANSICON']
8
- STDERR.puts %{*** WARNING: You must use ANSICON 1.31 or higher (https://github.com/adoxa/ansicon/) to get coloured output on Windows}
9
- Cucumber::Term::ANSIColor.coloring = false
10
- end
11
- end
12
-
13
6
  Cucumber::Term::ANSIColor.coloring = false if !STDOUT.tty? && !ENV.key?('AUTOTEST')
14
7
 
15
8
  module Cucumber
@@ -34,7 +34,7 @@ module Cucumber
34
34
 
35
35
  def format_step(keyword, step_match, status, source_indent)
36
36
  comment = if source_indent
37
- c = ('# ' + step_match.location.to_s).indent(source_indent)
37
+ c = indent(('# ' + step_match.location.to_s), source_indent)
38
38
  format_string(c, :comment)
39
39
  else
40
40
  ''
@@ -99,11 +99,11 @@ module Cucumber
99
99
  @io.puts(format_string(string, status))
100
100
  end
101
101
 
102
- def exception_message_string(e, indent)
102
+ def exception_message_string(e, indent_amount)
103
103
  message = "#{e.message} (#{e.class})".dup.force_encoding('UTF-8')
104
104
  message = linebreaks(message, ENV['CUCUMBER_TRUNCATE_OUTPUT'].to_i)
105
105
 
106
- "#{message}\n#{e.backtrace.join("\n")}".indent(indent)
106
+ indent("#{message}\n#{e.backtrace.join("\n")}", indent_amount)
107
107
  end
108
108
 
109
109
  # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/10655
@@ -208,6 +208,14 @@ module Cucumber
208
208
  ].join("\n")
209
209
  end
210
210
 
211
+ def indent(string, padding)
212
+ if padding >= 0
213
+ string.gsub(/^/, ' ' * padding)
214
+ else
215
+ string.gsub(/^ {0,#{-padding}}/, '')
216
+ end
217
+ end
218
+
211
219
  private
212
220
 
213
221
  FORMATS = Hash.new { |hash, format| hash[format] = method(format).to_proc }
@@ -15,7 +15,8 @@ module Cucumber
15
15
  end
16
16
 
17
17
  def output_envelope(envelope)
18
- envelope.write_ndjson_to(@io)
18
+ @io.write(envelope.to_json)
19
+ @io.write("\n")
19
20
  end
20
21
  end
21
22
  end
@@ -48,12 +48,12 @@ module Cucumber
48
48
  }
49
49
 
50
50
  if media_type.start_with?('text/')
51
- attachment_data[:content_encoding] = Cucumber::Messages::Attachment::ContentEncoding::IDENTITY
51
+ attachment_data[:content_encoding] = Cucumber::Messages::AttachmentContentEncoding::IDENTITY
52
52
  attachment_data[:body] = src
53
53
  else
54
54
  body = src.respond_to?(:read) ? src.read : src
55
55
 
56
- attachment_data[:content_encoding] = Cucumber::Messages::Attachment::ContentEncoding::BASE64
56
+ attachment_data[:content_encoding] = Cucumber::Messages::AttachmentContentEncoding::BASE64
57
57
  attachment_data[:body] = Base64.strict_encode64(body)
58
58
  end
59
59
 
@@ -101,7 +101,7 @@ module Cucumber
101
101
  def test_step_to_message(step)
102
102
  return hook_step_to_message(step) if step.hook?
103
103
 
104
- Cucumber::Messages::TestCase::TestStep.new(
104
+ Cucumber::Messages::TestStep.new(
105
105
  id: step.id,
106
106
  pickle_step_id: @pickle_step_by_test_step.pickle_step_id(step),
107
107
  step_definition_ids: @step_definitions_by_test_step.step_definition_ids(step),
@@ -110,7 +110,7 @@ module Cucumber
110
110
  end
111
111
 
112
112
  def hook_step_to_message(step)
113
- Cucumber::Messages::TestCase::TestStep.new(
113
+ Cucumber::Messages::TestStep.new(
114
114
  id: step.id,
115
115
  hook_id: @hook_by_test_step.hook_id(step)
116
116
  )
@@ -118,7 +118,7 @@ module Cucumber
118
118
 
119
119
  def step_match_arguments_lists(step)
120
120
  match_arguments = step_match_arguments(step)
121
- [Cucumber::Messages::TestCase::TestStep::StepMatchArgumentsList.new(
121
+ [Cucumber::Messages::StepMatchArgumentsList.new(
122
122
  step_match_arguments: match_arguments
123
123
  )]
124
124
  rescue Cucumber::Formatter::TestStepUnknownError
@@ -127,7 +127,7 @@ module Cucumber
127
127
 
128
128
  def step_match_arguments(step)
129
129
  @step_definitions_by_test_step.step_match_arguments(step).map do |argument|
130
- Cucumber::Messages::TestCase::TestStep::StepMatchArgumentsList::StepMatchArgument.new(
130
+ Cucumber::Messages::StepMatchArgument.new(
131
131
  group: argument_group_to_message(argument.group),
132
132
  parameter_type_name: argument.parameter_type.name
133
133
  )
@@ -135,7 +135,7 @@ module Cucumber
135
135
  end
136
136
 
137
137
  def argument_group_to_message(group)
138
- Cucumber::Messages::TestCase::TestStep::StepMatchArgumentsList::StepMatchArgument::Group.new(
138
+ Cucumber::Messages::Group.new(
139
139
  start: group.start,
140
140
  value: group.value,
141
141
  children: group.children.map { |child| argument_group_to_message(child) }
@@ -190,7 +190,7 @@ module Cucumber
190
190
 
191
191
  result_message = result.to_message
192
192
  if result.failed? || result.pending?
193
- result_message = Cucumber::Messages::TestStepFinished::TestStepResult.new(
193
+ result_message = Cucumber::Messages::TestStepResult.new(
194
194
  status: result_message.status,
195
195
  duration: result_message.duration,
196
196
  message: create_error_message(result)
@@ -181,7 +181,7 @@ module Cucumber
181
181
  end
182
182
 
183
183
  def print_step_output
184
- @test_step_output.each { |message| @io.puts(format_string(message, :tag).indent(6)) }
184
+ @test_step_output.each { |message| @io.puts(indent(format_string(message, :tag), 6)) }
185
185
  @test_step_output = []
186
186
  end
187
187
 
@@ -259,33 +259,34 @@ module Cucumber
259
259
  end
260
260
  end
261
261
 
262
- def print_comments(up_to_line, indent)
262
+ def print_comments(up_to_line, indent_amount)
263
263
  comments = gherkin_document.comments
264
264
  return if comments.empty? || comments.length <= @next_comment_to_be_printed
265
265
  comments[@next_comment_to_be_printed..-1].each do |comment|
266
266
  if comment.location.line <= up_to_line
267
- @io.puts(format_string(comment.text.strip, :comment).indent(indent))
267
+ @io.puts(indent(format_string(comment.text.strip, :comment), indent_amount))
268
268
  @next_comment_to_be_printed += 1
269
269
  end
270
270
  break if @next_comment_to_be_printed >= comments.length
271
271
  end
272
272
  end
273
273
 
274
- def print_tags(tags, indent)
274
+ def print_tags(tags, indent_amount)
275
275
  return if !tags || tags.empty?
276
- @io.puts(tags.map { |tag| format_string(tag.name, :tag) }.join(' ').indent(indent))
276
+
277
+ @io.puts(indent(tags.map { |tag| format_string(tag.name, :tag) }.join(' '), indent_amount))
277
278
  end
278
279
 
279
280
  def print_feature_line(feature)
280
281
  print_keyword_name(feature.keyword, feature.name, 0)
281
282
  end
282
283
 
283
- def print_keyword_name(keyword, name, indent, location = nil)
284
+ def print_keyword_name(keyword, name, indent_amount, location = nil)
284
285
  line = "#{keyword}:"
285
286
  line += " #{name}"
286
- @io.print(line.indent(indent))
287
+ @io.print(indent(line, indent_amount))
287
288
  if location && options[:source]
288
- line_comment = format_string("# #{location}", :comment).indent(@source_indent - line.length - indent)
289
+ line_comment = indent(format_string("# #{location}", :comment), @source_indent - line.length - indent_amount)
289
290
  @io.print(line_comment)
290
291
  end
291
292
  @io.puts
@@ -339,7 +340,7 @@ module Cucumber
339
340
  indent = options[:source] ? @source_indent - step_keyword.length - test_step.text.length - base_indent : nil
340
341
  print_comments(test_step.location.lines.max, base_indent)
341
342
  name_to_report = format_step(step_keyword, @step_matches.fetch(test_step.to_s) { NoStepMatch.new(test_step, test_step.text) }, result.to_sym, indent)
342
- @io.puts(name_to_report.indent(base_indent))
343
+ @io.puts(indent(name_to_report, base_indent))
343
344
  print_multiline_argument(test_step, result, base_indent + 2) unless options[:no_multiline]
344
345
  @io.flush
345
346
  end
@@ -374,10 +375,10 @@ module Cucumber
374
375
  end
375
376
  end
376
377
 
377
- def print_data_table(data_table, status, indent)
378
+ def print_data_table(data_table, status, indent_amount)
378
379
  data_table.rows.each do |row|
379
- print_comments(row.location.line, indent)
380
- @io.puts format_string(gherkin_source.split("\n")[row.location.line - 1].strip, status).indent(indent)
380
+ print_comments(row.location.line, indent_amount)
381
+ @io.puts indent(format_string(gherkin_source.split("\n")[row.location.line - 1].strip, status), indent_amount)
381
382
  end
382
383
  end
383
384
 
@@ -393,7 +394,7 @@ module Cucumber
393
394
  @io.print(format_string(step_line, :skipped))
394
395
  if options[:source]
395
396
  comment_line = format_string("# #{current_feature_uri}:#{step.location.line}", :comment)
396
- @io.print(comment_line.indent(@source_indent - step_line.length))
397
+ @io.print(indent(comment_line, @source_indent - step_line.length))
397
398
  end
398
399
  @io.puts
399
400
  next if options[:no_multiline]
@@ -403,8 +404,8 @@ module Cucumber
403
404
  @io.flush
404
405
  end
405
406
 
406
- def print_doc_string(content, status, indent)
407
- s = %("""\n#{content}\n""").indent(indent)
407
+ def print_doc_string(content, status, indent_amount)
408
+ s = indent(%("""\n#{content}\n"""), indent_amount)
408
409
  s = s.split("\n").map { |l| l =~ /^\s+$/ ? '' : l }.join("\n")
409
410
  @io.puts(format_string(s, status))
410
411
  end
@@ -416,15 +417,15 @@ module Cucumber
416
417
  print_description(examples.description)
417
418
  unless options[:expand]
418
419
  print_comments(examples.table_header.location.line, 6)
419
- @io.puts(gherkin_source.split("\n")[examples.table_header.location.line - 1].strip.indent(6))
420
+ @io.puts(indent(gherkin_source.split("\n")[examples.table_header.location.line - 1].strip, 6))
420
421
  end
421
422
  @io.flush
422
423
  end
423
424
 
424
425
  def print_row_data(test_case, result)
425
426
  print_comments(test_case.location.lines.max, 6)
426
- @io.print(format_string(gherkin_source.split("\n")[test_case.location.lines.max - 1].strip, result.to_sym).indent(6))
427
- @io.print(format_string(@test_step_output.join(', '), :tag).indent(2)) unless @test_step_output.empty?
427
+ @io.print(indent(format_string(gherkin_source.split("\n")[test_case.location.lines.max - 1].strip, result.to_sym), 6))
428
+ @io.print(indent(format_string(@test_step_output.join(', '), :tag), 2)) unless @test_step_output.empty?
428
429
  @test_step_output = []
429
430
  @io.puts
430
431
  if result.failed? || result.pending?
@@ -41,7 +41,7 @@ module Cucumber
41
41
  '',
42
42
  [
43
43
  'More information at ',
44
- link('https://reports.cucumber.io/docs/cucumber-ruby')
44
+ link('https://cucumber.io/docs/cucumber/environment-variables/')
45
45
  ],
46
46
  '',
47
47
  [
@@ -1,9 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'cucumber/formatter/console'
4
+
3
5
  module Cucumber
4
6
  module Formatter
5
7
  # The formatter used for <tt>--format steps</tt>
6
8
  class Steps
9
+ include Console
7
10
  def initialize(runtime, path_or_io, options)
8
11
  @io = ensure_io(path_or_io, nil)
9
12
  @options = options
@@ -24,8 +27,8 @@ module Cucumber
24
27
  sources = @step_definition_files[step_definition_file]
25
28
  source_indent = source_indent(sources)
26
29
  sources.sort.each do |file_colon_line, regexp_source|
27
- @io.print regexp_source.indent(2)
28
- @io.print " # #{file_colon_line}".indent(source_indent - regexp_source.unpack('U*').length)
30
+ @io.print indent(regexp_source, 2)
31
+ @io.print indent(" # #{file_colon_line}", source_indent - regexp_source.unpack('U*').length)
29
32
  @io.puts
30
33
  end
31
34
  @io.puts
@@ -2,10 +2,12 @@
2
2
 
3
3
  require 'cucumber/formatter/progress'
4
4
  require 'cucumber/step_definition_light'
5
+ require 'cucumber/formatter/console'
5
6
 
6
7
  module Cucumber
7
8
  module Formatter
8
9
  class Usage < Progress
10
+ include Console
9
11
  class StepDefKey < StepDefinitionLight
10
12
  attr_accessor :mean_duration, :status
11
13
  end
@@ -87,8 +89,8 @@ module Cucumber
87
89
  @io.print format_string(format('%<duration>.7f', duration: stepdef_key.mean_duration), :skipped) + ' ' unless config.dry_run?
88
90
  @io.print format_string(stepdef_key.regexp_source, stepdef_key.status)
89
91
  if config.source?
90
- indent = max_length - stepdef_key.regexp_source.unpack('U*').length
91
- line_comment = " # #{stepdef_key.location}".indent(indent)
92
+ indent_amount = max_length - stepdef_key.regexp_source.unpack('U*').length
93
+ line_comment = indent(" # #{stepdef_key.location}", indent_amount)
92
94
  @io.print(format_string(line_comment, :comment))
93
95
  end
94
96
  @io.puts
@@ -100,8 +102,8 @@ module Cucumber
100
102
  @io.print format_string(format('%<duration>.7f', duration: step[:duration]), :skipped) + ' ' unless config.dry_run?
101
103
  @io.print format_step(step[:keyword], step[:step_match], step[:status], nil)
102
104
  if config.source?
103
- indent = max_length - (step[:keyword].unpack('U*').length + step[:step_match].format_args.unpack('U*').length)
104
- line_comment = " # #{step[:location]}".indent(indent)
105
+ indent_amount = max_length - (step[:keyword].unpack('U*').length + step[:step_match].format_args.unpack('U*').length)
106
+ line_comment = indent(" # #{step[:location]}", indent_amount)
105
107
  @io.print(format_string(line_comment, :comment))
106
108
  end
107
109
  @io.puts
@@ -15,7 +15,7 @@ module Cucumber
15
15
  messages = ::Gherkin.from_source('dummy', feature_header + text, gherkin_options)
16
16
 
17
17
  messages.each do |message|
18
- gherkin_document = message.gherkin_document.to_hash unless message.gherkin_document.nil?
18
+ gherkin_document = message.gherkin_document.to_h unless message.gherkin_document.nil?
19
19
  end
20
20
 
21
21
  return if gherkin_document.nil?
@@ -17,7 +17,7 @@ module Cucumber
17
17
  messages = ::Gherkin.from_source('dummy', feature_header(dialect) + text, gherkin_options)
18
18
 
19
19
  messages.each do |message|
20
- gherkin_document = message.gherkin_document.to_hash unless message.gherkin_document.nil?
20
+ gherkin_document = message.gherkin_document.to_h unless message.gherkin_document.nil?
21
21
  end
22
22
 
23
23
  @builder.steps(gherkin_document[:feature][:children][0][:scenario][:steps])
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'cucumber/step_match'
4
- require 'cucumber/core_ext/string'
5
4
  require 'cucumber/glue/invoke_in_world'
6
5
 
7
6
  module Cucumber
@@ -77,7 +76,7 @@ module Cucumber
77
76
  Cucumber::Messages::Envelope.new(
78
77
  step_definition: Cucumber::Messages::StepDefinition.new(
79
78
  id: id,
80
- pattern: Cucumber::Messages::StepDefinition::StepDefinitionPattern.new(
79
+ pattern: Cucumber::Messages::StepDefinitionPattern.new(
81
80
  source: expression.source.to_s,
82
81
  type: expression_type
83
82
  ),
@@ -92,8 +91,8 @@ module Cucumber
92
91
  end
93
92
 
94
93
  def expression_type
95
- return Cucumber::Messages::StepDefinition::StepDefinitionPattern::StepDefinitionPatternType::CUCUMBER_EXPRESSION if expression.is_a?(CucumberExpressions::CucumberExpression)
96
- Cucumber::Messages::StepDefinition::StepDefinitionPattern::StepDefinitionPatternType::REGULAR_EXPRESSION
94
+ return Cucumber::Messages::StepDefinitionPatternType::CUCUMBER_EXPRESSION if expression.is_a?(CucumberExpressions::CucumberExpression)
95
+ Cucumber::Messages::StepDefinitionPatternType::REGULAR_EXPRESSION
97
96
  end
98
97
 
99
98
  # @api private
data/lib/cucumber/version CHANGED
@@ -1 +1 @@
1
- 6.1.0
1
+ 7.0.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-05-18 00:00:00.000000000 Z
13
+ date: 2021-07-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
@@ -38,40 +38,40 @@ dependencies:
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '9.0'
41
+ version: '10.0'
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 9.0.1
44
+ version: 10.0.1
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
48
48
  requirements:
49
49
  - - "~>"
50
50
  - !ruby/object:Gem::Version
51
- version: '9.0'
51
+ version: '10.0'
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 9.0.1
54
+ version: 10.0.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: cucumber-create-meta
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '4.0'
61
+ version: '6.0'
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 4.0.0
64
+ version: 6.0.1
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: '4.0'
71
+ version: '6.0'
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 4.0.0
74
+ version: 6.0.1
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: cucumber-cucumber-expressions
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -98,80 +98,80 @@ dependencies:
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '18.1'
101
+ version: '20.0'
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: 18.1.0
104
+ version: 20.0.1
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '18.1'
111
+ version: '20.0'
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
- version: 18.1.0
114
+ version: 20.0.1
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: cucumber-html-formatter
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - "~>"
120
120
  - !ruby/object:Gem::Version
121
- version: '13.0'
121
+ version: '16.0'
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 13.0.0
124
+ version: 16.0.1
125
125
  type: :runtime
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '13.0'
131
+ version: '16.0'
132
132
  - - ">="
133
133
  - !ruby/object:Gem::Version
134
- version: 13.0.0
134
+ version: 16.0.1
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: cucumber-messages
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: '15.0'
141
+ version: '17.0'
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
- version: 15.0.0
144
+ version: 17.0.1
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '15.0'
151
+ version: '17.0'
152
152
  - - ">="
153
153
  - !ruby/object:Gem::Version
154
- version: 15.0.0
154
+ version: 17.0.1
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: cucumber-wire
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
159
  - - "~>"
160
160
  - !ruby/object:Gem::Version
161
- version: '5.0'
161
+ version: '6.0'
162
162
  - - ">="
163
163
  - !ruby/object:Gem::Version
164
- version: 5.0.1
164
+ version: 6.0.1
165
165
  type: :runtime
166
166
  prerelease: false
167
167
  version_requirements: !ruby/object:Gem::Requirement
168
168
  requirements:
169
169
  - - "~>"
170
170
  - !ruby/object:Gem::Version
171
- version: '5.0'
171
+ version: '6.0'
172
172
  - - ">="
173
173
  - !ruby/object:Gem::Version
174
- version: 5.0.1
174
+ version: 6.0.1
175
175
  - !ruby/object:Gem::Dependency
176
176
  name: diff-lcs
177
177
  requirement: !ruby/object:Gem::Requirement
@@ -261,7 +261,7 @@ dependencies:
261
261
  version: '1.11'
262
262
  - - ">="
263
263
  - !ruby/object:Gem::Version
264
- version: 1.11.4
264
+ version: 1.11.7
265
265
  type: :development
266
266
  prerelease: false
267
267
  version_requirements: !ruby/object:Gem::Requirement
@@ -271,7 +271,7 @@ dependencies:
271
271
  version: '1.11'
272
272
  - - ">="
273
273
  - !ruby/object:Gem::Version
274
- version: 1.11.4
274
+ version: 1.11.7
275
275
  - !ruby/object:Gem::Dependency
276
276
  name: pry
277
277
  requirement: !ruby/object:Gem::Requirement
@@ -301,7 +301,7 @@ dependencies:
301
301
  version: '13.0'
302
302
  - - ">="
303
303
  - !ruby/object:Gem::Version
304
- version: 13.0.3
304
+ version: 13.0.6
305
305
  type: :development
306
306
  prerelease: false
307
307
  version_requirements: !ruby/object:Gem::Requirement
@@ -311,7 +311,7 @@ dependencies:
311
311
  version: '13.0'
312
312
  - - ">="
313
313
  - !ruby/object:Gem::Version
314
- version: 13.0.3
314
+ version: 13.0.6
315
315
  - !ruby/object:Gem::Dependency
316
316
  name: rspec
317
317
  requirement: !ruby/object:Gem::Requirement
@@ -381,7 +381,7 @@ dependencies:
381
381
  version: '3.4'
382
382
  - - ">="
383
383
  - !ruby/object:Gem::Version
384
- version: 3.4.1
384
+ version: 3.4.4
385
385
  type: :development
386
386
  prerelease: false
387
387
  version_requirements: !ruby/object:Gem::Requirement
@@ -391,7 +391,7 @@ dependencies:
391
391
  version: '3.4'
392
392
  - - ">="
393
393
  - !ruby/object:Gem::Version
394
- version: 3.4.1
394
+ version: 3.4.4
395
395
  - !ruby/object:Gem::Dependency
396
396
  name: webrick
397
397
  requirement: !ruby/object:Gem::Requirement
@@ -520,7 +520,6 @@ files:
520
520
  - lib/cucumber/cli/rerun_file.rb
521
521
  - lib/cucumber/configuration.rb
522
522
  - lib/cucumber/constantize.rb
523
- - lib/cucumber/core_ext/string.rb
524
523
  - lib/cucumber/deprecate.rb
525
524
  - lib/cucumber/encoding.rb
526
525
  - lib/cucumber/errors.rb
@@ -662,5 +661,5 @@ requirements: []
662
661
  rubygems_version: 3.1.2
663
662
  signing_key:
664
663
  specification_version: 4
665
- summary: cucumber-6.1.0
664
+ summary: cucumber-7.0.0
666
665
  test_files: []
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class String #:nodoc:
4
- def indent(n)
5
- if n >= 0
6
- gsub(/^/, ' ' * n)
7
- else
8
- gsub(/^ {0,#{-n}}/, '')
9
- end
10
- end
11
- end