cuke_cataloger 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +9 -0
- data/README.md +31 -13
- data/bin/cuke_cataloger +59 -0
- data/cuke_cataloger.gemspec +1 -0
- data/lib/cuke_cataloger.rb +12 -5
- data/lib/cuke_cataloger/version.rb +1 -1
- data/testing/cucumber/features/executable.feature +44 -0
- data/testing/cucumber/step_definitions/action_steps.rb +14 -0
- data/testing/cucumber/step_definitions/setup_steps.rb +13 -0
- data/testing/cucumber/step_definitions/verification_steps.rb +24 -0
- data/testing/cucumber/support/env.rb +21 -6
- data/testing/fixtures/tests/foo.feature +4 -0
- data/testing/rspec/spec/cuke_cataloger_spec.rb +11 -0
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ca57a9cc7f55a7db0a69cac22642da17b709b24
|
4
|
+
data.tar.gz: 8ee177287198378826095b0356578e1d66d18180
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d3ebc2a6c56845d242414f29ef9e865b0e815ebcbfe2a75479940d0c7cd4e8a8e31549412c973a121c64cb484995be152546048335b9f0c7ae74e8653bc6f77
|
7
|
+
data.tar.gz: 68845af1ed68b6868cef1efd224008afcf6f4b2b12e2f3d5113d7fdfb3e91379220c1c5d8bae9770b01156e43b1ce77216a59c11a151071505a613f50794f12f
|
data/History.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Release history
|
2
2
|
|
3
|
+
### Version 1.3.0 / 2017-01-09
|
4
|
+
|
5
|
+
- Bug fix: Replaced non-Ruby 1.8.x compatible code so that the gem now correctly works with older versions of Ruby.
|
6
|
+
|
7
|
+
- Added an executable file for the gem so that it can be used without having to use Rake tasks.
|
8
|
+
|
9
|
+
- A basic cataloging location and prefix is used by default so that specifying these values will not be necessary in many cases.
|
10
|
+
|
11
|
+
|
3
12
|
### Version 1.2.0 / 2016-10-02
|
4
13
|
|
5
14
|
- The gem now declares version limits on all of its dependencies.
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
[![Project License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/enkessler/cuke_cataloger/blob/master/LICENSE.txt)
|
9
9
|
|
10
10
|
|
11
|
-
The cuke_cataloger gem is a convenient way to provide a unique id to every test case in your Cucumber test suite.
|
11
|
+
The cuke_cataloger gem is a convenient way to provide a unique id to every test case in your Cucumber test suite.
|
12
12
|
|
13
13
|
## Installation
|
14
14
|
|
@@ -26,7 +26,19 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
## Usage
|
28
28
|
|
29
|
-
|
29
|
+
In addition to using the provided classes in any regular Ruby script, the gem's functionality can be accessed through the command line or through the provided Rake tasks.
|
30
|
+
|
31
|
+
### Command Line
|
32
|
+
|
33
|
+
cuke_cataloger catalog_test_cases [--location=LOCATION] [--prefix=PREFIX]
|
34
|
+
|
35
|
+
and
|
36
|
+
|
37
|
+
cuke_cataloger validate_test_cases [--location=LOCATION] [--prefix=PREFIX] [--file=FILE]
|
38
|
+
|
39
|
+
### Rake Task
|
40
|
+
|
41
|
+
Require the gem
|
30
42
|
|
31
43
|
require 'cuke_cataloger'
|
32
44
|
|
@@ -40,28 +52,34 @@ If you want the tasks to be created in a certain namespace, simply call the crea
|
|
40
52
|
CukeCataloger.create_tasks
|
41
53
|
end
|
42
54
|
|
43
|
-
|
55
|
+
This will create tasks that can then be invoked in the usual manner:
|
56
|
+
|
57
|
+
rake tag_tests['path/to/your/tests','@test_case_']
|
58
|
+
|
59
|
+
and
|
60
|
+
|
61
|
+
rake validate_tests['path/to/your/tests','@test_case_','validation_results.txt']
|
44
62
|
|
45
63
|
### Adding ids to tests
|
46
64
|
|
47
|
-
The
|
65
|
+
The the tagging functionality will add an id tag to every scenario (and an id column to every outline) in a test suite. It can be given a directory in which the tests are located and a prefix upon which to base the tagging scheme but, if not given that information, it will use the current directory and a prefix of `@test_case_`.
|
48
66
|
|
49
|
-
rake tag_tests['path/to/your/tests','@
|
67
|
+
rake tag_tests['path/to/your/tests','@my_prefix_']
|
50
68
|
|
51
|
-
The above example would result in the tags
|
69
|
+
The above example would result in the tags `@my_prefix_1`, `@my_prefix_2`, `@my_prefix_3`, etc. being added to every test in the `tests` directory.
|
52
70
|
|
53
71
|
### Validating test ids
|
54
72
|
|
55
|
-
The
|
73
|
+
The the validating functionality scans a given directory for any problems related to id tags and generates a report detailing its results. It can be given a directory in which the tests are located and a prefix upon which to base the tagging scheme, as well as a file location to which it should output its report but, if not given that information, it will use the current directory and a prefix of `@test_case_` and it will output the report to the console.
|
56
74
|
|
57
|
-
rake validate_tests['path/to/your/tests','@
|
75
|
+
rake validate_tests['path/to/your/tests','@my_prefix_','validation_results.txt']
|
58
76
|
|
59
|
-
The above example would result in a report called
|
77
|
+
The above example would result in a report called `validation_results.txt` being generated for any test in the `tests` directory that had problems related to their id (e.g. did not have an id tag, had the same id tag as another test, etc.), based up the id prefix `@my_prefix_`.
|
60
78
|
|
61
79
|
## Contributing
|
62
80
|
|
63
|
-
1. Fork it
|
64
|
-
2. Create your feature branch (`git checkout -b my-new-feature`
|
65
|
-
3. Commit your changes
|
66
|
-
4. Push to the branch
|
81
|
+
1. Fork it `http://github.com/<my-github-username>/cuke_cataloger/fork`
|
82
|
+
2. Create your feature branch (off of the development branch) `git checkout -b my-new-feature`
|
83
|
+
3. Commit your changes `git commit -am 'Add some feature'`
|
84
|
+
4. Push to the branch `git push origin my-new-feature`
|
67
85
|
5. Create new Pull Request
|
data/bin/cuke_cataloger
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'cuke_cataloger'
|
3
|
+
|
4
|
+
|
5
|
+
class CLI < Thor
|
6
|
+
|
7
|
+
desc 'catalog_test_cases', 'Catalog the test cases in LOCATION with an id based on PREFIX'
|
8
|
+
option :location, :default => '.'
|
9
|
+
option :prefix, :default => '@test_case_'
|
10
|
+
|
11
|
+
def catalog_test_cases
|
12
|
+
puts "Tagging tests in '#{options[:location]}' with tag '#{options[:prefix]}'\n"
|
13
|
+
|
14
|
+
tagger = CukeCataloger::UniqueTestCaseTagger.new
|
15
|
+
tagger.tag_tests(options[:location], options[:prefix])
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'validate_test_cases', 'Validate the test cases in LOCATION with an id based on PREFIX. Will output the report to FILE, if provided.'
|
19
|
+
option :location, :default => '.'
|
20
|
+
option :prefix, :default => '@test_case_'
|
21
|
+
option :file
|
22
|
+
|
23
|
+
def validate_test_cases
|
24
|
+
puts "Validating tests in '#{options[:location]}' with tag '#{options[:prefix]}'\n"
|
25
|
+
|
26
|
+
results = CukeCataloger::UniqueTestCaseTagger.new.validate_test_ids(options[:location], options[:prefix])
|
27
|
+
report_text = "Validation Results\nProblems found: #{results.count}\n\n"
|
28
|
+
|
29
|
+
|
30
|
+
results_by_category = Hash.new { |hash, key| hash[key] = [] }
|
31
|
+
|
32
|
+
results.each do |result|
|
33
|
+
results_by_category[result[:problem]] << result
|
34
|
+
end
|
35
|
+
|
36
|
+
results_by_category.keys.each do |problem_category|
|
37
|
+
report_text << "#{problem_category} problems: #{results_by_category[problem_category].count}\n"
|
38
|
+
end
|
39
|
+
|
40
|
+
results_by_category.keys.each do |problem_category|
|
41
|
+
report_text << "\n\n#{problem_category} problems (#{results_by_category[problem_category].count}):\n"
|
42
|
+
|
43
|
+
results_by_category[problem_category].each do |result|
|
44
|
+
report_text << "#{result[:test]}\n"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
if options[:file]
|
49
|
+
puts "Problems found: #{results.count}"
|
50
|
+
File.open(options[:file], 'w') { |file| file.write(report_text) }
|
51
|
+
else
|
52
|
+
puts report_text
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
CLI.start(ARGV)
|
data/cuke_cataloger.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_runtime_dependency 'cuke_modeler', '>= 0.2', '< 2.0'
|
22
22
|
spec.add_runtime_dependency 'cql', '~>1.0', '>= 1.0.1'
|
23
23
|
spec.add_runtime_dependency 'rake', '< 12.0'
|
24
|
+
spec.add_runtime_dependency 'thor', '~> 0.0'
|
24
25
|
|
25
26
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
26
27
|
spec.add_development_dependency 'cucumber', '< 3.0'
|
data/lib/cuke_cataloger.rb
CHANGED
@@ -9,22 +9,29 @@ module CukeCataloger
|
|
9
9
|
|
10
10
|
extend Rake::DSL
|
11
11
|
|
12
|
+
# todo - test these better
|
12
13
|
|
13
14
|
def self.create_tasks
|
14
15
|
|
15
16
|
desc 'Add unique id tags to tests in the given directory'
|
16
17
|
task 'tag_tests', [:directory, :prefix] do |t, args|
|
17
|
-
|
18
|
+
location = args[:directory] || '.'
|
19
|
+
prefix = args[:prefix] || '@test_case_'
|
20
|
+
|
21
|
+
puts "Tagging tests in '#{location}' with tag '#{prefix}'\n"
|
18
22
|
|
19
23
|
tagger = CukeCataloger::UniqueTestCaseTagger.new
|
20
|
-
tagger.tag_tests(
|
24
|
+
tagger.tag_tests(location, prefix)
|
21
25
|
end
|
22
26
|
|
23
27
|
desc 'Scan tests in the given directory for id problems'
|
24
28
|
task 'validate_tests', [:directory, :prefix, :out_file] do |t, args|
|
25
|
-
|
29
|
+
location = args[:directory] || '.'
|
30
|
+
prefix = args[:prefix] || '@test_case_'
|
31
|
+
|
32
|
+
puts "Validating tests in '#{location}' with tag '#{prefix}'\n"
|
26
33
|
|
27
|
-
results = CukeCataloger::UniqueTestCaseTagger.new.validate_test_ids(
|
34
|
+
results = CukeCataloger::UniqueTestCaseTagger.new.validate_test_ids(location, prefix)
|
28
35
|
report_text = "Validation Results\nProblems found: #{results.count}\n\n"
|
29
36
|
|
30
37
|
|
@@ -48,7 +55,7 @@ module CukeCataloger
|
|
48
55
|
|
49
56
|
if args[:out_file]
|
50
57
|
puts "Problems found: #{results.count}"
|
51
|
-
File.
|
58
|
+
File.open(args[:out_file], 'w') { |file| file.write(report_text) }
|
52
59
|
else
|
53
60
|
puts report_text
|
54
61
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
Feature: Cataloging executable
|
2
|
+
|
3
|
+
Cataloging functionality can be used directly from the command line.
|
4
|
+
|
5
|
+
|
6
|
+
Scenario: Cataloging test cases
|
7
|
+
|
8
|
+
Note: By default, cataloging will be done in the current directory using the '@test_case_' prefix
|
9
|
+
|
10
|
+
Given the cuke_cataloger executable is available
|
11
|
+
And there are test cases in the "." directory that have not been cataloged with "@test_case_"
|
12
|
+
When the following command is executed:
|
13
|
+
"""
|
14
|
+
cuke_cataloger catalog_test_cases
|
15
|
+
"""
|
16
|
+
Then all of the test cases in the "." directory will be cataloged with "@test_case_"
|
17
|
+
|
18
|
+
Scenario: Specifying cataloging options
|
19
|
+
Given the cuke_cataloger executable is available
|
20
|
+
And there are test cases in the "tests" directory that have not been cataloged with "@foo"
|
21
|
+
When the following command is executed:
|
22
|
+
"""
|
23
|
+
cuke_cataloger catalog_test_cases --location <path_to>/tests --prefix @foo
|
24
|
+
"""
|
25
|
+
Then all of the test cases in the "tests" directory will be cataloged with "@foo"
|
26
|
+
|
27
|
+
Scenario: Validating test cases
|
28
|
+
|
29
|
+
Note: By default, validation will be done in the current directory using the '@test_case_' prefix
|
30
|
+
|
31
|
+
Given the cuke_cataloger executable is available
|
32
|
+
When the following command is executed:
|
33
|
+
"""
|
34
|
+
cuke_cataloger validate_test_cases
|
35
|
+
"""
|
36
|
+
Then a validation report for the "." directory with prefix "@test_case_" is output to the console
|
37
|
+
|
38
|
+
Scenario: Specifying validation options
|
39
|
+
Given the cuke_cataloger executable is available
|
40
|
+
When the following command is executed:
|
41
|
+
"""
|
42
|
+
cuke_cataloger validate_test_cases --location <path_to>/tests --prefix @foo --file <path_to>/foo.txt
|
43
|
+
"""
|
44
|
+
Then a validation report for the "tests" directory with prefix "@foo" is output to "foo.txt"
|
@@ -26,3 +26,17 @@ When(/^the existing ids are determined$/) do
|
|
26
26
|
|
27
27
|
@ids_found = CukeCataloger::UniqueTestCaseTagger.new.determine_known_ids(@directory.path, @tag_prefix)
|
28
28
|
end
|
29
|
+
|
30
|
+
When(/^the following command is executed:$/) do |command|
|
31
|
+
if command =~ /--file /
|
32
|
+
output_file_name = command.match(/--file <path_to>\/(.*)\.txt/)[1]
|
33
|
+
command.sub!(/--file <path_to>\/(.*)\.txt/, "--file #{DEFAULT_FILE_DIRECTORY}/#{output_file_name}.txt")
|
34
|
+
end
|
35
|
+
|
36
|
+
command.sub!('<path_to>', FIXTURE_DIRECTORY)
|
37
|
+
command = "bundle exec ruby #{@executable_directory}/#{command}"
|
38
|
+
|
39
|
+
Dir.chdir(FIXTURE_DIRECTORY) do
|
40
|
+
@output = `#{command}`
|
41
|
+
end
|
42
|
+
end
|
@@ -54,3 +54,16 @@ end
|
|
54
54
|
And(/^the tag location is unspecified$/) do
|
55
55
|
@above_or_below = nil
|
56
56
|
end
|
57
|
+
|
58
|
+
Given(/^the cuke_cataloger executable is available$/) do
|
59
|
+
@executable_directory = "#{PROJECT_ROOT}/bin"
|
60
|
+
end
|
61
|
+
|
62
|
+
And(/^there are test cases in the "([^"]*)" directory that have not been cataloged with "([^"]*)"$/) do |target_directory, prefix|
|
63
|
+
target_directory = "#{FIXTURE_DIRECTORY}/#{target_directory}"
|
64
|
+
|
65
|
+
@test_results = CukeCataloger::UniqueTestCaseTagger.new.validate_test_ids(target_directory, prefix)
|
66
|
+
|
67
|
+
# Making sure that there is work to be done, thus avoiding false positives
|
68
|
+
expect(@test_results.select { |test_result| test_result[:problem] == :missing_tag }).to_not be_empty
|
69
|
+
end
|
@@ -162,3 +162,27 @@ And(/^the resulting second file is:$/) do |expected_text|
|
|
162
162
|
|
163
163
|
expect(actual_text).to eq(expected_text)
|
164
164
|
end
|
165
|
+
|
166
|
+
Then(/^all of the test cases in the "([^"]*)" directory will be cataloged with "([^"]*)"$/) do |target_directory, prefix|
|
167
|
+
target_directory = "#{FIXTURE_DIRECTORY}/#{target_directory}"
|
168
|
+
|
169
|
+
@test_results = CukeCataloger::UniqueTestCaseTagger.new.validate_test_ids(target_directory, prefix)
|
170
|
+
|
171
|
+
verify_no_results
|
172
|
+
end
|
173
|
+
|
174
|
+
Then(/^a validation report for the "([^"]*)" directory with prefix "([^"]*)" is output to the console$/) do |target_directory, prefix|
|
175
|
+
expect(@output).to include("Validating tests in '#{target_directory}' with tag '#{prefix}'")
|
176
|
+
expect(@output).to include("Validation Results")
|
177
|
+
end
|
178
|
+
|
179
|
+
Then(/^a validation report for the "([^"]*)" directory with prefix "([^"]*)" is output to "([^"]*)"$/) do |target_directory, prefix, filename|
|
180
|
+
target_directory = "#{FIXTURE_DIRECTORY}/#{target_directory}"
|
181
|
+
filename = "#{DEFAULT_FILE_DIRECTORY}/#{filename}"
|
182
|
+
|
183
|
+
expect(@output).to include("Validating tests in '#{target_directory}' with tag '#{prefix}'")
|
184
|
+
expect(@output).to include("Problems found:")
|
185
|
+
|
186
|
+
expect(File.exists?(filename)).to be true
|
187
|
+
expect(File.read(filename)).to include('Validation Results')
|
188
|
+
end
|
@@ -5,18 +5,33 @@ end
|
|
5
5
|
|
6
6
|
require 'cuke_cataloger'
|
7
7
|
|
8
|
+
here = File.dirname(__FILE__)
|
8
9
|
|
9
10
|
DEFAULT_FEATURE_FILE_NAME = 'test_feature'
|
10
|
-
DEFAULT_FILE_DIRECTORY = "#{
|
11
|
-
|
11
|
+
DEFAULT_FILE_DIRECTORY = "#{here}/../temp_files"
|
12
|
+
PROJECT_ROOT = "#{here}/../../.."
|
13
|
+
FIXTURE_DIRECTORY = "#{here}/../../fixtures"
|
12
14
|
|
13
15
|
Before do
|
14
|
-
|
15
|
-
|
16
|
+
begin
|
17
|
+
@default_feature_file_name = DEFAULT_FEATURE_FILE_NAME
|
18
|
+
@default_file_directory = DEFAULT_FILE_DIRECTORY
|
16
19
|
|
17
|
-
|
20
|
+
FileUtils.mkdir(@default_file_directory)
|
21
|
+
rescue => e
|
22
|
+
puts "Error caught in before hook!"
|
23
|
+
puts "Type: #{e.class}"
|
24
|
+
puts "Message: #{e.message}"
|
25
|
+
end
|
18
26
|
end
|
19
27
|
|
20
28
|
After do
|
21
|
-
|
29
|
+
begin
|
30
|
+
`git checkout HEAD -- #{FIXTURE_DIRECTORY}`
|
31
|
+
FileUtils.remove_dir(@default_file_directory, true)
|
32
|
+
rescue => e
|
33
|
+
puts "Error caught in before hook!"
|
34
|
+
puts "Type: #{e.class}"
|
35
|
+
puts "Message: #{e.message}"
|
36
|
+
end
|
22
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuke_cataloger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kessler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cuke_modeler
|
@@ -64,6 +64,20 @@ dependencies:
|
|
64
64
|
- - "<"
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '12.0'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: thor
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0.0'
|
74
|
+
type: :runtime
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0.0'
|
67
81
|
- !ruby/object:Gem::Dependency
|
68
82
|
name: bundler
|
69
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,7 +166,8 @@ description: Scans existing Cucumber tests and updates them to include an id tag
|
|
152
166
|
is unique for the test suite.
|
153
167
|
email:
|
154
168
|
- morrow748@gmail.com
|
155
|
-
executables:
|
169
|
+
executables:
|
170
|
+
- cuke_cataloger
|
156
171
|
extensions: []
|
157
172
|
extra_rdoc_files: []
|
158
173
|
files:
|
@@ -164,10 +179,12 @@ files:
|
|
164
179
|
- LICENSE.txt
|
165
180
|
- README.md
|
166
181
|
- Rakefile
|
182
|
+
- bin/cuke_cataloger
|
167
183
|
- cuke_cataloger.gemspec
|
168
184
|
- lib/cuke_cataloger.rb
|
169
185
|
- lib/cuke_cataloger/unique_test_case_tagger.rb
|
170
186
|
- lib/cuke_cataloger/version.rb
|
187
|
+
- testing/cucumber/features/executable.feature
|
171
188
|
- testing/cucumber/features/formatting.feature
|
172
189
|
- testing/cucumber/features/tag_indexing.feature
|
173
190
|
- testing/cucumber/features/test_case_scanning.feature
|
@@ -179,8 +196,10 @@ files:
|
|
179
196
|
- testing/cucumber/step_definitions/verification_steps.rb
|
180
197
|
- testing/cucumber/support/env.rb
|
181
198
|
- testing/cucumber/support/transforms.rb
|
199
|
+
- testing/fixtures/tests/foo.feature
|
182
200
|
- testing/gemfiles/cuke_modeler0.gemfile
|
183
201
|
- testing/gemfiles/cuke_modeler1.gemfile
|
202
|
+
- testing/rspec/spec/cuke_cataloger_spec.rb
|
184
203
|
- testing/rspec/spec/spec_helper.rb
|
185
204
|
- testing/rspec/spec/unique_test_case_tagger_integration_spec.rb
|
186
205
|
- testing/rspec/spec/unique_test_case_tagger_unit_spec.rb
|
@@ -204,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
223
|
version: '0'
|
205
224
|
requirements: []
|
206
225
|
rubyforge_project:
|
207
|
-
rubygems_version: 2.
|
226
|
+
rubygems_version: 2.6.7
|
208
227
|
signing_key:
|
209
228
|
specification_version: 4
|
210
229
|
summary: A tool to give every Cucumber test a unique id
|