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 +4 -4
- data/CHANGELOG.md +32 -1
- data/CONTRIBUTING.md +217 -52
- data/README.md +129 -12
- data/lib/cucumber/cli/options.rb +1 -1
- data/lib/cucumber/formatter/ansicolor.rb +0 -7
- data/lib/cucumber/formatter/console.rb +11 -3
- data/lib/cucumber/formatter/message.rb +2 -1
- data/lib/cucumber/formatter/message_builder.rb +8 -8
- data/lib/cucumber/formatter/pretty.rb +19 -18
- data/lib/cucumber/formatter/publish_banner_printer.rb +1 -1
- data/lib/cucumber/formatter/steps.rb +5 -2
- data/lib/cucumber/formatter/usage.rb +6 -4
- data/lib/cucumber/gherkin/data_table_parser.rb +1 -1
- data/lib/cucumber/gherkin/steps_parser.rb +1 -1
- data/lib/cucumber/glue/step_definition.rb +3 -4
- data/lib/cucumber/version +1 -1
- metadata +33 -34
- data/lib/cucumber/core_ext/string.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e4a8b91cb4072857d261f0888df769f16ce58c10cfad140fabfdff58bfe8a0d
|
4
|
+
data.tar.gz: 5dbaf8d4f7b9f0a3157ecdd7b4ee781e9a970f710ebc6831ceadd7436d7f1416
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/
|
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
|
-
|
1
|
+
# Contributing to Cucumber
|
2
2
|
|
3
|
-
|
3
|
+
Thank you for considering contributing to Cucumber!
|
4
4
|
|
5
|
-
|
6
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
98
|
+
### Look for existing issues and pull requests
|
19
99
|
|
20
|
-
|
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
|
-
|
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
|
-
|
25
|
-
Execute `bundle config set --local gemfile Gemfile.local` to use it per default.
|
109
|
+
### Submitting a pull request
|
26
110
|
|
27
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
50
|
-
|
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
|
-
|
209
|
+
### Having trouble getting started with the code? We're here to help!
|
58
210
|
|
59
|
-
|
60
|
-
|
61
|
-
|
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
|
-
|
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
|
-
|
221
|
+
### Additional documentation and notice
|
66
222
|
|
67
|
-
|
68
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
20
|
+
<p align="center">
|
21
|
+
<img src="./.github/img/gherkin-example.png" alt="Cucumber Gherkin Example" width="728" />
|
22
|
+
</p>
|
17
23
|
|
18
|
-
|
19
|
-
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
43
|
+
or install the gem directly:
|
25
44
|
|
26
|
-
|
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
|
-
|
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
|
-
|
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
|
|
data/lib/cucumber/cli/options.rb
CHANGED
@@ -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', '
|
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)
|
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,
|
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")}"
|
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 }
|
@@ -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::
|
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::
|
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::
|
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::
|
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::
|
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::
|
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::
|
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::
|
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)
|
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,
|
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)
|
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,
|
274
|
+
def print_tags(tags, indent_amount)
|
275
275
|
return if !tags || tags.empty?
|
276
|
-
|
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,
|
284
|
+
def print_keyword_name(keyword, name, indent_amount, location = nil)
|
284
285
|
line = "#{keyword}:"
|
285
286
|
line += " #{name}"
|
286
|
-
@io.print(
|
287
|
+
@io.print(indent(line, indent_amount))
|
287
288
|
if location && options[:source]
|
288
|
-
line_comment = format_string("# #{location}", :comment)
|
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(
|
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,
|
378
|
+
def print_data_table(data_table, status, indent_amount)
|
378
379
|
data_table.rows.each do |row|
|
379
|
-
print_comments(row.location.line,
|
380
|
-
@io.puts format_string(gherkin_source.split("\n")[row.location.line - 1].strip, status)
|
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(
|
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,
|
407
|
-
s = %("""\n#{content}\n""")
|
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
|
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)
|
427
|
-
@io.print(format_string(@test_step_output.join(', '), :tag)
|
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?
|
@@ -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
|
28
|
-
@io.print " # #{file_colon_line}"
|
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
|
-
|
91
|
-
line_comment = " # #{stepdef_key.location}"
|
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
|
-
|
104
|
-
line_comment = " # #{step[:location]}"
|
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.
|
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.
|
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::
|
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::
|
96
|
-
Cucumber::Messages::
|
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
|
-
|
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:
|
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-
|
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: '
|
41
|
+
version: '10.0'
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version:
|
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: '
|
51
|
+
version: '10.0'
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
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: '
|
61
|
+
version: '6.0'
|
62
62
|
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
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: '
|
71
|
+
version: '6.0'
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
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: '
|
101
|
+
version: '20.0'
|
102
102
|
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
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: '
|
111
|
+
version: '20.0'
|
112
112
|
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
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: '
|
121
|
+
version: '16.0'
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
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: '
|
131
|
+
version: '16.0'
|
132
132
|
- - ">="
|
133
133
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
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: '
|
141
|
+
version: '17.0'
|
142
142
|
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
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: '
|
151
|
+
version: '17.0'
|
152
152
|
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
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: '
|
161
|
+
version: '6.0'
|
162
162
|
- - ">="
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version:
|
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: '
|
171
|
+
version: '6.0'
|
172
172
|
- - ">="
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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-
|
664
|
+
summary: cucumber-7.0.0
|
666
665
|
test_files: []
|