cucumber_analytics 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/History.rdoc +7 -2
- data/README.rdoc +3 -3
- data/cucumber_analytics.gemspec +2 -0
- data/features/modeling/doc_string_modeling.feature +3 -2
- data/features/modeling/tag_modeling.feature +1 -0
- data/lib/cucumber_analytics/directory.rb +1 -3
- data/lib/cucumber_analytics/doc_string.rb +1 -3
- data/lib/cucumber_analytics/feature_element.rb +1 -3
- data/lib/cucumber_analytics/feature_file.rb +1 -3
- data/lib/cucumber_analytics/nested.rb +33 -0
- data/lib/cucumber_analytics/row.rb +1 -3
- data/lib/cucumber_analytics/step.rb +1 -3
- data/lib/cucumber_analytics/table.rb +1 -3
- data/lib/cucumber_analytics/tag.rb +1 -3
- data/lib/cucumber_analytics/version.rb +1 -1
- data/lib/cucumber_analytics.rb +1 -0
- data/spec/integration/background_integration_spec.rb +42 -0
- data/spec/integration/directory_integration_spec.rb +24 -0
- data/spec/integration/doc_string_integration_spec.rb +66 -0
- data/spec/integration/example_integration_spec.rb +50 -0
- data/spec/integration/feature_file_integration_spec.rb +24 -0
- data/spec/integration/feature_integration_spec.rb +34 -0
- data/spec/integration/outline_integration_spec.rb +45 -0
- data/spec/integration/scenario_integration_spec.rb +43 -0
- data/spec/integration/step_integration_spec.rb +79 -31
- data/spec/integration/tag_integration_spec.rb +67 -0
- data/spec/unit/background_unit_spec.rb +5 -2
- data/spec/unit/doc_string_unit_spec.rb +4 -1
- data/spec/unit/example_unit_spec.rb +5 -2
- data/spec/unit/feature_unit_spec.rb +5 -2
- data/spec/unit/nested_element_unit_specs.rb +18 -6
- data/spec/unit/nested_unit_spec.rb +37 -0
- data/spec/unit/outline_unit_spec.rb +5 -2
- data/spec/unit/row_unit_spec.rb +4 -1
- data/spec/unit/scenario_unit_spec.rb +5 -2
- data/spec/unit/step_unit_spec.rb +5 -2
- data/spec/unit/table_unit_spec.rb +4 -1
- data/spec/unit/world_unit_spec.rb +4 -3
- metadata +11 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NzFmZGE0MWM0NzI0MmQ2NWMxYWM3MmI1YWRlMjIwYThjNTAwMWIzZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDkzOWY5ODZkNjY5MWVhN2Q1ZGViM2VlMTkxN2EyNDY5M2Y0ODA2OQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZGM5Mjc0ZTEwODZlMmViM2I2M2NiYmEzZDM3NzhhNmVkZmI4ZTMwY2IwZjhm
|
10
|
+
N2U1ZDAyYjg0OWJiN2U3ZDM2OTE4MjliM2U1MzdjZmFmM2UyMDFjNjlhNmI2
|
11
|
+
NDQxY2ZmZDUxZjIyMzYzOGU5M2FlYTUxZDFjZWNjYWQ1ZmRlMzE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODBjNDRmN2JjOWY3ZGJlYmE0YWI5ZWJhMDkzNzAyMGRlM2IxOTJkMmMyNTk2
|
14
|
+
YjM1NzRiYjkyNzgzZDFiZWRhMGYxZTgzNGY0M2VjYzBiM2Y2MzQ5ZGE5Y2Vk
|
15
|
+
MjU3YTM0NmQ1NmMxYzQ5YzYzZjQ1ZjdjNzY3NjE2NGZiYjlhYTM=
|
data/History.rdoc
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== Version 1.3.0 / 2013-10-02
|
2
|
+
|
3
|
+
* Elements now have a convenience method for accessing their ancestor elements.
|
4
|
+
|
5
|
+
|
1
6
|
=== Version 1.2.0 / 2013-09-01
|
2
7
|
|
3
8
|
* Bug fix: nil no longer shows up as a child element of a Feature if the Feature
|
@@ -81,9 +86,9 @@
|
|
81
86
|
=== Version 0.0.3 / 2012-11-10
|
82
87
|
|
83
88
|
* 'But' has been added to the list of recognized step keywords (formerly Given,
|
84
|
-
When,Then, And, and *).
|
89
|
+
When,Then, And, and *).
|
85
90
|
* Bug fix: the number of test cases a feature is considered to contain now
|
86
|
-
properly takes into account an outline's example rows.
|
91
|
+
properly takes into account an outline's example rows.
|
87
92
|
|
88
93
|
|
89
94
|
=== Version 0.0.2 / 2012-11-01
|
data/README.rdoc
CHANGED
@@ -67,10 +67,10 @@ also discovered that our team is creating several redundant steps that could be
|
|
67
67
|
rewritten into a single, reusable step.
|
68
68
|
|
69
69
|
|
70
|
-
===Other usages
|
71
|
-
|
72
|
-
https://gist.github.com/enkessler/6408879 - Creating a step lexicon
|
70
|
+
=== Other usages
|
73
71
|
|
72
|
+
* https://gist.github.com/enkessler/6408879 - Creating a step lexicon
|
73
|
+
* https://gist.github.com/enkessler/6519022 - Creating unique identifiers for all test cases
|
74
74
|
|
75
75
|
== Contributing
|
76
76
|
|
data/cucumber_analytics.gemspec
CHANGED
@@ -8,6 +8,8 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.summary = %q{This gem provides an API to programmatically break down Cucumber feature files so that they can be inspected and analyzed in a straightforward manner.}
|
9
9
|
gem.homepage = 'https://github.com/enkessler/cucumber_analytics'
|
10
10
|
|
11
|
+
gem.license = 'MIT'
|
12
|
+
|
11
13
|
gem.files = `git ls-files`.split($\)
|
12
14
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
15
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
@@ -46,5 +46,6 @@ Feature: Doc String elements can be modeled.
|
|
46
46
|
When the corresponding specifications are run
|
47
47
|
Then all of those specifications are met
|
48
48
|
Examples:
|
49
|
-
| additional specifications
|
50
|
-
| doc_string_unit_spec.rb
|
49
|
+
| additional specifications |
|
50
|
+
| doc_string_unit_spec.rb |
|
51
|
+
| doc_string_integration_spec.rb |
|
@@ -5,6 +5,7 @@ module CucumberAnalytics
|
|
5
5
|
class Directory
|
6
6
|
|
7
7
|
include Containing
|
8
|
+
include Nested
|
8
9
|
|
9
10
|
|
10
11
|
# The FeatureFile objects contained by the Directory
|
@@ -13,9 +14,6 @@ module CucumberAnalytics
|
|
13
14
|
# The Directory objects contained by the Directory
|
14
15
|
attr_accessor :directories
|
15
16
|
|
16
|
-
# The parent object that contains *self*
|
17
|
-
attr_accessor :parent_element
|
18
|
-
|
19
17
|
|
20
18
|
# Creates a new Directory object and, if *directory_parsed* is provided,
|
21
19
|
# populates the object.
|
@@ -6,6 +6,7 @@ module CucumberAnalytics
|
|
6
6
|
|
7
7
|
include Sourceable
|
8
8
|
include Raw
|
9
|
+
include Nested
|
9
10
|
|
10
11
|
|
11
12
|
# The name of the FeatureElement
|
@@ -14,9 +15,6 @@ module CucumberAnalytics
|
|
14
15
|
# The description of the FeatureElement
|
15
16
|
attr_accessor :description
|
16
17
|
|
17
|
-
# The parent object that contains *self*
|
18
|
-
attr_accessor :parent_element
|
19
|
-
|
20
18
|
|
21
19
|
# Creates a new FeatureElement object and, if *parsed_element* is provided,
|
22
20
|
# populates the object.
|
@@ -5,14 +5,12 @@ module CucumberAnalytics
|
|
5
5
|
class FeatureFile
|
6
6
|
|
7
7
|
include Containing
|
8
|
+
include Nested
|
8
9
|
|
9
10
|
|
10
11
|
# The Feature objects contained by the FeatureFile
|
11
12
|
attr_accessor :features
|
12
13
|
|
13
|
-
# The parent object that contains *self*
|
14
|
-
attr_accessor :parent_element
|
15
|
-
|
16
14
|
|
17
15
|
# Creates a new FeatureFile object and, if *file_parsed* is provided,
|
18
16
|
# populates the object.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module CucumberAnalytics
|
2
|
+
|
3
|
+
# A mix-in module containing methods used by elements that are nested inside
|
4
|
+
# of other elements.
|
5
|
+
|
6
|
+
module Nested
|
7
|
+
|
8
|
+
# The parent object that contains *self*
|
9
|
+
attr_accessor :parent_element
|
10
|
+
|
11
|
+
|
12
|
+
# Returns the ancestor of *self* that matches the given type.
|
13
|
+
def get_ancestor(ancestor_type)
|
14
|
+
ancestor = self.parent_element
|
15
|
+
target_type = {:directory => Directory,
|
16
|
+
:feature_file => FeatureFile,
|
17
|
+
:feature => Feature,
|
18
|
+
:test => TestElement,
|
19
|
+
:step => Step,
|
20
|
+
:example => Example
|
21
|
+
}[ancestor_type]
|
22
|
+
|
23
|
+
raise(ArgumentError, "Unknown ancestor type '#{ancestor_type}'.") if target_type.nil?
|
24
|
+
|
25
|
+
until ancestor.is_a?(target_type) || ancestor.nil?
|
26
|
+
ancestor = ancestor.parent_element
|
27
|
+
end
|
28
|
+
|
29
|
+
ancestor
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -7,6 +7,7 @@ module CucumberAnalytics
|
|
7
7
|
include Containing
|
8
8
|
include Sourceable
|
9
9
|
include Raw
|
10
|
+
include Nested
|
10
11
|
|
11
12
|
|
12
13
|
# The step's keyword
|
@@ -18,9 +19,6 @@ module CucumberAnalytics
|
|
18
19
|
# The step's passed block
|
19
20
|
attr_accessor :block
|
20
21
|
|
21
|
-
# The parent object that contains *self*
|
22
|
-
attr_accessor :parent_element
|
23
|
-
|
24
22
|
# The step's arguments
|
25
23
|
attr_accessor :arguments
|
26
24
|
|
data/lib/cucumber_analytics.rb
CHANGED
@@ -4,6 +4,7 @@ require 'cucumber_analytics/containing'
|
|
4
4
|
require 'cucumber_analytics/taggable'
|
5
5
|
require 'cucumber_analytics/raw'
|
6
6
|
require 'cucumber_analytics/sourceable'
|
7
|
+
require 'cucumber_analytics/nested'
|
7
8
|
require 'cucumber_analytics/feature_file'
|
8
9
|
require 'cucumber_analytics/directory'
|
9
10
|
require 'cucumber_analytics/feature_element.rb'
|
@@ -15,4 +15,46 @@ describe 'Background, Integration' do
|
|
15
15
|
step.parent_element.should equal background
|
16
16
|
end
|
17
17
|
|
18
|
+
context 'getting stuff' do
|
19
|
+
|
20
|
+
before(:each) do
|
21
|
+
source = ['Feature: Test feature',
|
22
|
+
'',
|
23
|
+
' Background: Test background',
|
24
|
+
' * a step:']
|
25
|
+
source = source.join("\n")
|
26
|
+
|
27
|
+
file_path = "#{@default_file_directory}/background_test_file.feature"
|
28
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
29
|
+
|
30
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
31
|
+
@background = @directory.feature_files.first.features.first.background
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
it 'can get its directory' do
|
36
|
+
directory = @background.get_ancestor(:directory)
|
37
|
+
|
38
|
+
directory.path.should == @directory.path
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'can get its feature file' do
|
42
|
+
feature_file = @background.get_ancestor(:feature_file)
|
43
|
+
|
44
|
+
feature_file.path.should == @directory.feature_files.first.path
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'can get its feature' do
|
48
|
+
feature = @background.get_ancestor(:feature)
|
49
|
+
|
50
|
+
feature.name.should == @directory.feature_files.first.features.first.name
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
54
|
+
example = @background.get_ancestor(:example)
|
55
|
+
|
56
|
+
example.should be_nil
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
18
60
|
end
|
@@ -21,4 +21,28 @@ describe 'Directory, Integration' do
|
|
21
21
|
file.parent_element.should equal directory
|
22
22
|
end
|
23
23
|
|
24
|
+
context 'getting stuff' do
|
25
|
+
|
26
|
+
before(:each) do
|
27
|
+
nested_directory = "#{@default_file_directory}/nested_directory"
|
28
|
+
FileUtils.mkdir(nested_directory)
|
29
|
+
|
30
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
31
|
+
@nested_directory = @directory.directories.first
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
it 'can get its directory' do
|
36
|
+
directory = @nested_directory.get_ancestor(:directory)
|
37
|
+
|
38
|
+
directory.path.should == @directory.path
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
42
|
+
example = @nested_directory.get_ancestor(:example)
|
43
|
+
|
44
|
+
example.should be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
24
48
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
SimpleCov.command_name('DocString') unless RUBY_VERSION.to_s < '1.9.0'
|
4
|
+
|
5
|
+
describe 'DocString, Integration' do
|
6
|
+
|
7
|
+
context 'getting stuff' do
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
source = ['Feature: Test feature',
|
11
|
+
'',
|
12
|
+
' Scenario: Test test',
|
13
|
+
' * a big step:',
|
14
|
+
' """',
|
15
|
+
' a',
|
16
|
+
' doc',
|
17
|
+
' string',
|
18
|
+
' """']
|
19
|
+
source = source.join("\n")
|
20
|
+
|
21
|
+
file_path = "#{@default_file_directory}/doc_string_test_file.feature"
|
22
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
23
|
+
|
24
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
25
|
+
@doc_string = @directory.feature_files.first.features.first.tests.first.steps.first.block
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
it 'can get its directory' do
|
30
|
+
directory = @doc_string.get_ancestor(:directory)
|
31
|
+
|
32
|
+
directory.path.should == @directory.path
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'can get its feature file' do
|
36
|
+
feature_file = @doc_string.get_ancestor(:feature_file)
|
37
|
+
|
38
|
+
feature_file.path.should == @directory.feature_files.first.path
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'can get its feature' do
|
42
|
+
feature = @doc_string.get_ancestor(:feature)
|
43
|
+
|
44
|
+
feature.name.should == @directory.feature_files.first.features.first.name
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'can get its test' do
|
48
|
+
test = @doc_string.get_ancestor(:test)
|
49
|
+
|
50
|
+
test.name.should == @directory.feature_files.first.features.first.tests.first.name
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'can get its step' do
|
54
|
+
step = @doc_string.get_ancestor(:step)
|
55
|
+
|
56
|
+
step.base.should == @directory.feature_files.first.features.first.tests.first.steps.first.base
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
60
|
+
example = @doc_string.get_ancestor(:example)
|
61
|
+
|
62
|
+
example.should be_nil
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
@@ -20,4 +20,54 @@ describe 'Example, Integration' do
|
|
20
20
|
tag.parent_element.should equal example
|
21
21
|
end
|
22
22
|
|
23
|
+
context 'getting stuff' do
|
24
|
+
|
25
|
+
before(:each) do
|
26
|
+
source = ['Feature: Test feature',
|
27
|
+
'',
|
28
|
+
' Scenario Outline: Test test',
|
29
|
+
' * a step',
|
30
|
+
' Examples: Test example',
|
31
|
+
' | a param |']
|
32
|
+
source = source.join("\n")
|
33
|
+
|
34
|
+
file_path = "#{@default_file_directory}/example_test_file.feature"
|
35
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
36
|
+
|
37
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
38
|
+
@example = @directory.feature_files.first.features.first.tests.first.examples.first
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
it 'can get its directory' do
|
43
|
+
directory = @example.get_ancestor(:directory)
|
44
|
+
|
45
|
+
directory.path.should == @directory.path
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'can get its feature file' do
|
49
|
+
feature_file = @example.get_ancestor(:feature_file)
|
50
|
+
|
51
|
+
feature_file.path.should == @directory.feature_files.first.path
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'can get its feature' do
|
55
|
+
feature = @example.get_ancestor(:feature)
|
56
|
+
|
57
|
+
feature.name.should == @directory.feature_files.first.features.first.name
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'can get its test' do
|
61
|
+
test = @example.get_ancestor(:test)
|
62
|
+
|
63
|
+
test.name.should == @directory.feature_files.first.features.first.tests.first.name
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
67
|
+
example = @example.get_ancestor(:example)
|
68
|
+
|
69
|
+
example.should be_nil
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
23
73
|
end
|
@@ -17,4 +17,28 @@ describe 'FeatureFile, Integration' do
|
|
17
17
|
feature.parent_element.should equal file
|
18
18
|
end
|
19
19
|
|
20
|
+
context 'getting stuff' do
|
21
|
+
|
22
|
+
before(:each) do
|
23
|
+
file_path = "#{@default_file_directory}/feature_file_test_file.feature"
|
24
|
+
File.open(file_path, 'w') { |file| file.write('Feature: Test feature') }
|
25
|
+
|
26
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
27
|
+
@feature_file = @directory.feature_files.first
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
it 'can get its directory' do
|
32
|
+
directory = @feature_file.get_ancestor(:directory)
|
33
|
+
|
34
|
+
directory.path.should == @directory.path
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
38
|
+
example = @feature_file.get_ancestor(:example)
|
39
|
+
|
40
|
+
example.should be_nil
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
20
44
|
end
|
@@ -86,4 +86,38 @@ describe 'Feature, Integration' do
|
|
86
86
|
feature_2.test_case_count.should == 3
|
87
87
|
end
|
88
88
|
|
89
|
+
|
90
|
+
context 'getting stuff' do
|
91
|
+
|
92
|
+
before(:each) do
|
93
|
+
source = ['Feature: Test feature']
|
94
|
+
source = source.join("\n")
|
95
|
+
|
96
|
+
file_path = "#{@default_file_directory}/feature_test_file.feature"
|
97
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
98
|
+
|
99
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
100
|
+
@feature = @directory.feature_files.first.features.first
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
it 'can get its directory' do
|
105
|
+
directory = @feature.get_ancestor(:directory)
|
106
|
+
|
107
|
+
directory.path.should == @directory.path
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'can get its feature file' do
|
111
|
+
feature_file = @feature.get_ancestor(:feature_file)
|
112
|
+
|
113
|
+
feature_file.path.should == @directory.feature_files.first.path
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
117
|
+
test = @feature.get_ancestor(:test)
|
118
|
+
|
119
|
+
test.should be_nil
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
89
123
|
end
|
@@ -22,4 +22,49 @@ describe 'Outline, Integration' do
|
|
22
22
|
tag.parent_element.should equal outline
|
23
23
|
end
|
24
24
|
|
25
|
+
|
26
|
+
context 'getting stuff' do
|
27
|
+
|
28
|
+
before(:each) do
|
29
|
+
source = ['Feature: Test feature',
|
30
|
+
'',
|
31
|
+
' Scenario Outline: Test test',
|
32
|
+
' * a step',
|
33
|
+
' Examples: Test example',
|
34
|
+
' | a param |']
|
35
|
+
source = source.join("\n")
|
36
|
+
|
37
|
+
file_path = "#{@default_file_directory}/outline_test_file.feature"
|
38
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
39
|
+
|
40
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
41
|
+
@outline = @directory.feature_files.first.features.first.tests.first
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
it 'can get its directory' do
|
46
|
+
directory = @outline.get_ancestor(:directory)
|
47
|
+
|
48
|
+
directory.path.should == @directory.path
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'can get its feature file' do
|
52
|
+
feature_file = @outline.get_ancestor(:feature_file)
|
53
|
+
|
54
|
+
feature_file.path.should == @directory.feature_files.first.path
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'can get its feature' do
|
58
|
+
feature = @outline.get_ancestor(:feature)
|
59
|
+
|
60
|
+
feature.name.should == @directory.feature_files.first.features.first.name
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
64
|
+
test = @outline.get_ancestor(:test)
|
65
|
+
|
66
|
+
test.should be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
25
70
|
end
|
@@ -18,4 +18,47 @@ describe 'Scenario, Integration' do
|
|
18
18
|
tag.parent_element.should equal scenario
|
19
19
|
end
|
20
20
|
|
21
|
+
|
22
|
+
context 'getting stuff' do
|
23
|
+
|
24
|
+
before(:each) do
|
25
|
+
source = ['Feature: Test feature',
|
26
|
+
'',
|
27
|
+
' Scenario: Test test',
|
28
|
+
' * a step']
|
29
|
+
source = source.join("\n")
|
30
|
+
|
31
|
+
file_path = "#{@default_file_directory}/scenario_test_file.feature"
|
32
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
33
|
+
|
34
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
35
|
+
@scenario = @directory.feature_files.first.features.first.tests.first
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
it 'can get its directory' do
|
40
|
+
directory = @scenario.get_ancestor(:directory)
|
41
|
+
|
42
|
+
directory.path.should == @directory.path
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'can get its feature file' do
|
46
|
+
feature_file = @scenario.get_ancestor(:feature_file)
|
47
|
+
|
48
|
+
feature_file.path.should == @directory.feature_files.first.path
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'can get its feature' do
|
52
|
+
feature = @scenario.get_ancestor(:feature)
|
53
|
+
|
54
|
+
feature.name.should == @directory.feature_files.first.features.first.name
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
58
|
+
test = @scenario.get_ancestor(:test)
|
59
|
+
|
60
|
+
test.should be_nil
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
21
64
|
end
|
@@ -62,55 +62,103 @@ describe 'Step, Integration' do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it 'can determine its equality with another Step' do
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
source_1 = "Given a test step with *parameter 1* and *parameter 2*\n|a block|"
|
66
|
+
source_2 = "Given a test step with *parameter 3* and *parameter 4*\n|another block|"
|
67
|
+
source_3 = 'Given a different *parameterized* step'
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
step_1 = CucumberAnalytics::Step.new(source_1)
|
70
|
+
step_2 = CucumberAnalytics::Step.new(source_2)
|
71
|
+
step_3 = CucumberAnalytics::Step.new(source_3)
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
step_1.delimiter = '*'
|
74
|
+
step_2.delimiter = '*'
|
75
|
+
step_3.delimiter = '*'
|
76
76
|
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
(step_1 == step_2).should be_true
|
79
|
+
(step_1 == step_3).should be_false
|
80
80
|
end
|
81
81
|
|
82
82
|
context '#step_text ' do
|
83
83
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
84
|
+
before(:each) do
|
85
|
+
source = "Given a test step with -parameter 1- ^and@ *parameter 2!!\n|a block|"
|
86
|
+
@step = CucumberAnalytics::Step.new(source)
|
87
|
+
end
|
88
88
|
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
it 'returns the step\'s entire text by default' do
|
91
|
+
source = "Given a test step with -parameter 1- ^and@ *parameter 2!!\n|a block|"
|
92
|
+
step_with_block = CucumberAnalytics::Step.new(source)
|
93
93
|
|
94
|
-
|
95
|
-
|
94
|
+
expected_output = ['Given a test step with -parameter 1- ^and@ *parameter 2!!',
|
95
|
+
'|a block|']
|
96
96
|
|
97
|
-
|
97
|
+
step_with_block.step_text.should == expected_output
|
98
98
|
|
99
|
-
|
100
|
-
|
99
|
+
source = 'Given a test step with -parameter 1- ^and@ *parameter 2!!'
|
100
|
+
step_without_block = CucumberAnalytics::Step.new(source)
|
101
101
|
|
102
|
-
|
102
|
+
expected_output = ['Given a test step with -parameter 1- ^and@ *parameter 2!!']
|
103
103
|
|
104
|
-
|
105
|
-
|
104
|
+
step_without_block.step_text.should == expected_output
|
105
|
+
end
|
106
106
|
|
107
|
-
|
108
|
-
|
109
|
-
|
107
|
+
it 'can provide the step\'s text without the keyword' do
|
108
|
+
expected_output = ['a test step with -parameter 1- ^and@ *parameter 2!!',
|
109
|
+
'|a block|']
|
110
110
|
|
111
|
-
|
112
|
-
|
111
|
+
@step.step_text(with_keywords: false).should == expected_output
|
112
|
+
end
|
113
113
|
|
114
114
|
end
|
115
115
|
|
116
|
+
context 'getting stuff' do
|
117
|
+
|
118
|
+
before(:each) do
|
119
|
+
source = ['Feature: Test feature',
|
120
|
+
'',
|
121
|
+
' Scenario: Test test',
|
122
|
+
' * a step:']
|
123
|
+
source = source.join("\n")
|
124
|
+
|
125
|
+
file_path = "#{@default_file_directory}/step_test_file.feature"
|
126
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
127
|
+
|
128
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
129
|
+
@step = @directory.feature_files.first.features.first.tests.first.steps.first
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
it 'can get its directory' do
|
134
|
+
directory = @step.get_ancestor(:directory)
|
135
|
+
|
136
|
+
directory.path.should == @directory.path
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'can get its feature file' do
|
140
|
+
feature_file = @step.get_ancestor(:feature_file)
|
141
|
+
|
142
|
+
feature_file.path.should == @directory.feature_files.first.path
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'can get its feature' do
|
146
|
+
feature = @step.get_ancestor(:feature)
|
147
|
+
|
148
|
+
feature.name.should == @directory.feature_files.first.features.first.name
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'can get its test' do
|
152
|
+
test = @step.get_ancestor(:test)
|
153
|
+
|
154
|
+
test.name.should == @directory.feature_files.first.features.first.tests.first.name
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
158
|
+
example = @step.get_ancestor(:example)
|
159
|
+
|
160
|
+
example.should be_nil
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
116
164
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
SimpleCov.command_name('Tag') unless RUBY_VERSION.to_s < '1.9.0'
|
4
|
+
|
5
|
+
describe 'Tag, Integration' do
|
6
|
+
|
7
|
+
context 'getting stuff' do
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
source = ['@feature_tag',
|
11
|
+
'Feature: Test feature',
|
12
|
+
'',
|
13
|
+
' Scenario Outline: Test test',
|
14
|
+
' * a step',
|
15
|
+
'',
|
16
|
+
' @example_tag',
|
17
|
+
' Examples: Test example',
|
18
|
+
' | a param |']
|
19
|
+
source = source.join("\n")
|
20
|
+
|
21
|
+
file_path = "#{@default_file_directory}/tag_test_file.feature"
|
22
|
+
File.open(file_path, 'w') { |file| file.write(source) }
|
23
|
+
|
24
|
+
@directory = CucumberAnalytics::Directory.new(@default_file_directory)
|
25
|
+
@tag = @directory.feature_files.first.features.first.tests.first.examples.first.tag_elements.first
|
26
|
+
@high_level_tag = @directory.feature_files.first.features.first.tag_elements.first
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
it 'can get its directory' do
|
31
|
+
directory = @tag.get_ancestor(:directory)
|
32
|
+
|
33
|
+
directory.path.should == @directory.path
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'can get its feature file' do
|
37
|
+
feature_file = @tag.get_ancestor(:feature_file)
|
38
|
+
|
39
|
+
feature_file.path.should == @directory.feature_files.first.path
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'can get its feature' do
|
43
|
+
feature = @tag.get_ancestor(:feature)
|
44
|
+
|
45
|
+
feature.name.should == @directory.feature_files.first.features.first.name
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'can get its test' do
|
49
|
+
test = @tag.get_ancestor(:test)
|
50
|
+
|
51
|
+
test.name.should == @directory.feature_files.first.features.first.tests.first.name
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'can get its example' do
|
55
|
+
example = @tag.get_ancestor(:example)
|
56
|
+
|
57
|
+
example.name.should == @directory.feature_files.first.features.first.tests.first.examples.first.name
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'returns nil if it does not have the requested type of ancestor' do
|
61
|
+
example = @high_level_tag.get_ancestor(:example)
|
62
|
+
|
63
|
+
example.should be_nil
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -16,9 +16,12 @@ describe 'Background, Unit' do
|
|
16
16
|
it_should_behave_like 'a raw element', clazz
|
17
17
|
|
18
18
|
it 'can be parsed from stand alone text' do
|
19
|
-
source = 'Background: '
|
19
|
+
source = 'Background: test background'
|
20
20
|
|
21
|
-
expect { clazz.new(source) }.to_not raise_error
|
21
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
22
|
+
|
23
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
24
|
+
@element.name.should == 'test background'
|
22
25
|
end
|
23
26
|
|
24
27
|
end
|
@@ -14,7 +14,10 @@ describe 'DocString, Unit' do
|
|
14
14
|
it 'can be parsed from stand alone text' do
|
15
15
|
source = "\"\"\"\nsome doc string\n\"\"\""
|
16
16
|
|
17
|
-
expect { clazz.new(source) }.to_not raise_error
|
17
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
18
|
+
|
19
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
20
|
+
@element.contents.should == ["some doc string"]
|
18
21
|
end
|
19
22
|
|
20
23
|
before(:each) do
|
@@ -17,12 +17,15 @@ describe 'Example, Unit' do
|
|
17
17
|
|
18
18
|
|
19
19
|
it 'can be parsed from stand alone text' do
|
20
|
-
source = ['Examples: ',
|
20
|
+
source = ['Examples: test example',
|
21
21
|
'|param| ']
|
22
22
|
|
23
23
|
source = source.join("\n")
|
24
24
|
|
25
|
-
expect { clazz.new(source) }.to_not raise_error
|
25
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
26
|
+
|
27
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
28
|
+
@element.name.should == 'test example'
|
26
29
|
end
|
27
30
|
|
28
31
|
|
@@ -20,9 +20,12 @@ describe 'Feature, Unit' do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'can be parsed from stand alone text' do
|
23
|
-
source = 'Feature: '
|
23
|
+
source = 'Feature: test feature'
|
24
24
|
|
25
|
-
expect { clazz.new(source) }.to_not raise_error
|
25
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
26
|
+
|
27
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
28
|
+
@element.name.should == 'test feature'
|
26
29
|
end
|
27
30
|
|
28
31
|
it 'has a background - #background' do
|
@@ -10,15 +10,27 @@ shared_examples_for 'a nested element' do |clazz|
|
|
10
10
|
@nested_element.should respond_to(:parent_element)
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
it 'can get and set its parent element - #parent_element, #parent_element=' do
|
14
|
+
@nested_element.parent_element = :some_parent_element
|
15
|
+
@nested_element.parent_element.should == :some_parent_element
|
16
|
+
@nested_element.parent_element = :some_other_parent_element
|
17
|
+
@nested_element.parent_element.should == :some_other_parent_element
|
18
|
+
end
|
19
19
|
|
20
20
|
it 'starts with no parent element' do
|
21
21
|
@nested_element.parent_element.should == nil
|
22
22
|
end
|
23
23
|
|
24
|
+
it 'has access to its ancestors' do
|
25
|
+
@nested_element.should respond_to(:get_ancestor)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'gets an ancestor based on type' do
|
29
|
+
(clazz.instance_method(:get_ancestor).arity == 1).should be_true
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'raises and exception if an unknown ancestor type is requested' do
|
33
|
+
expect { @nested_element.get_ancestor(:bad_ancestor_type) }.to raise_exception(ArgumentError)
|
34
|
+
end
|
35
|
+
|
24
36
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
SimpleCov.command_name('Nested') unless RUBY_VERSION.to_s < '1.9.0'
|
4
|
+
|
5
|
+
describe 'Nested, Unit' do
|
6
|
+
|
7
|
+
nodule = CucumberAnalytics::Nested
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
@nested_element = Object.new.extend(nodule)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
it 'has a parent element - #parent_element' do
|
15
|
+
@nested_element.should respond_to(:parent_element)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'can get and set its parent element - #parent_element, #parent_element=' do
|
19
|
+
@nested_element.parent_element = :some_parent_element
|
20
|
+
@nested_element.parent_element.should == :some_parent_element
|
21
|
+
@nested_element.parent_element = :some_other_parent_element
|
22
|
+
@nested_element.parent_element.should == :some_other_parent_element
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'has access to its ancestors' do
|
26
|
+
@nested_element.should respond_to(:get_ancestor)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'gets an ancestor based on type' do
|
30
|
+
(nodule.instance_method(:get_ancestor).arity == 1).should be_true
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'raises and exception if an unknown ancestor type is requested' do
|
34
|
+
expect { @nested_element.get_ancestor(:bad_ancestor_type) }.to raise_exception(ArgumentError)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -18,9 +18,12 @@ describe 'Outline, Unit' do
|
|
18
18
|
|
19
19
|
|
20
20
|
it 'can be parsed from stand alone text' do
|
21
|
-
source = 'Scenario Outline: '
|
21
|
+
source = 'Scenario Outline: test outline'
|
22
22
|
|
23
|
-
expect { clazz.new(source) }.to_not raise_error
|
23
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
24
|
+
|
25
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
26
|
+
@element.name.should == 'test outline'
|
24
27
|
end
|
25
28
|
|
26
29
|
|
data/spec/unit/row_unit_spec.rb
CHANGED
@@ -15,7 +15,10 @@ describe 'Row, Unit' do
|
|
15
15
|
it 'can be parsed from stand alone text' do
|
16
16
|
source = '| a | row |'
|
17
17
|
|
18
|
-
expect { clazz.new(source) }.to_not raise_error
|
18
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
19
|
+
|
20
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
21
|
+
@element.cells.should == ['a', 'row']
|
19
22
|
end
|
20
23
|
|
21
24
|
before(:each) do
|
@@ -17,9 +17,12 @@ describe 'Scenario, Unit' do
|
|
17
17
|
it_should_behave_like 'a raw element', clazz
|
18
18
|
|
19
19
|
it 'can be parsed from stand alone text' do
|
20
|
-
source = 'Scenario: '
|
20
|
+
source = 'Scenario: test scenario'
|
21
21
|
|
22
|
-
expect { clazz.new(source) }.to_not raise_error
|
22
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
23
|
+
|
24
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
25
|
+
@element.name.should == 'test scenario'
|
23
26
|
end
|
24
27
|
|
25
28
|
before(:each) do
|
data/spec/unit/step_unit_spec.rb
CHANGED
@@ -179,9 +179,12 @@ describe 'Step, Unit' do
|
|
179
179
|
end
|
180
180
|
|
181
181
|
it 'can be parsed from stand alone text' do
|
182
|
-
source = '*
|
182
|
+
source = '* test step'
|
183
183
|
|
184
|
-
expect { clazz.new(source) }.to_not raise_error
|
184
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
185
|
+
|
186
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
187
|
+
@element.base.should == 'test step'
|
185
188
|
end
|
186
189
|
|
187
190
|
context '#step_text ' do
|
@@ -14,7 +14,10 @@ describe 'Table, Unit' do
|
|
14
14
|
it 'can be parsed from stand alone text' do
|
15
15
|
source = '| a table |'
|
16
16
|
|
17
|
-
expect { clazz.new(source) }.to_not raise_error
|
17
|
+
expect { @element = clazz.new(source) }.to_not raise_error
|
18
|
+
|
19
|
+
# Sanity check in case instantiation failed in a non-explosive manner
|
20
|
+
@element.contents.should == [['a table']]
|
18
21
|
end
|
19
22
|
|
20
23
|
before(:each) do
|
@@ -67,7 +67,7 @@ describe 'World, Unit' do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it 'can load step definition files - #load_step_file' do
|
70
|
-
file_path = "#{
|
70
|
+
file_path = "#{@default_file_directory}/step_file.rb"
|
71
71
|
patterns = [/a pattern/, /another pattern/]
|
72
72
|
|
73
73
|
File.open(file_path, 'w') { |file|
|
@@ -75,13 +75,14 @@ describe 'World, Unit' do
|
|
75
75
|
file.puts "Given #{pattern.inspect} do end"
|
76
76
|
end
|
77
77
|
}
|
78
|
+
|
78
79
|
@world.load_step_file(file_path)
|
79
80
|
|
80
81
|
@world.loaded_step_patterns.should =~ patterns
|
81
82
|
end
|
82
83
|
|
83
84
|
it 'can handle different step keywords - #load_step_file' do
|
84
|
-
file_path = "#{
|
85
|
+
file_path = "#{@default_file_directory}/step_file.rb"
|
85
86
|
patterns = [/given pattern/, /when pattern/, /then pattern/, /and pattern/, /but pattern/]
|
86
87
|
|
87
88
|
File.open(file_path, 'w') { |file|
|
@@ -98,7 +99,7 @@ describe 'World, Unit' do
|
|
98
99
|
end
|
99
100
|
|
100
101
|
it 'can handle a variety of declaration structures - #load_step_file' do
|
101
|
-
file_path = "#{
|
102
|
+
file_path = "#{@default_file_directory}/step_file.rb"
|
102
103
|
patterns = [/parentheses pattern/, /no parentheses pattern/, /excess whitespace pattern/]
|
103
104
|
|
104
105
|
File.open(file_path, 'w') { |file|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber_analytics
|
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: 2013-
|
11
|
+
date: 2013-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gherkin
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- lib/cucumber_analytics/feature.rb
|
140
140
|
- lib/cucumber_analytics/feature_element.rb
|
141
141
|
- lib/cucumber_analytics/feature_file.rb
|
142
|
+
- lib/cucumber_analytics/nested.rb
|
142
143
|
- lib/cucumber_analytics/outline.rb
|
143
144
|
- lib/cucumber_analytics/parsing.rb
|
144
145
|
- lib/cucumber_analytics/raw.rb
|
@@ -154,12 +155,14 @@ files:
|
|
154
155
|
- lib/cucumber_analytics/world.rb
|
155
156
|
- spec/integration/background_integration_spec.rb
|
156
157
|
- spec/integration/directory_integration_spec.rb
|
158
|
+
- spec/integration/doc_string_integration_spec.rb
|
157
159
|
- spec/integration/example_integration_spec.rb
|
158
160
|
- spec/integration/feature_file_integration_spec.rb
|
159
161
|
- spec/integration/feature_integration_spec.rb
|
160
162
|
- spec/integration/outline_integration_spec.rb
|
161
163
|
- spec/integration/scenario_integration_spec.rb
|
162
164
|
- spec/integration/step_integration_spec.rb
|
165
|
+
- spec/integration/tag_integration_spec.rb
|
163
166
|
- spec/integration/world_integration_spec.rb
|
164
167
|
- spec/spec_helper.rb
|
165
168
|
- spec/unit/background_unit_spec.rb
|
@@ -173,6 +176,7 @@ files:
|
|
173
176
|
- spec/unit/feature_file_unit_spec.rb
|
174
177
|
- spec/unit/feature_unit_spec.rb
|
175
178
|
- spec/unit/nested_element_unit_specs.rb
|
179
|
+
- spec/unit/nested_unit_spec.rb
|
176
180
|
- spec/unit/outline_unit_spec.rb
|
177
181
|
- spec/unit/parsing_unit_spec.rb
|
178
182
|
- spec/unit/prepopulated_unit_specs.rb
|
@@ -191,7 +195,8 @@ files:
|
|
191
195
|
- spec/unit/test_element_unit_specs.rb
|
192
196
|
- spec/unit/world_unit_spec.rb
|
193
197
|
homepage: https://github.com/enkessler/cucumber_analytics
|
194
|
-
licenses:
|
198
|
+
licenses:
|
199
|
+
- MIT
|
195
200
|
metadata: {}
|
196
201
|
post_install_message:
|
197
202
|
rdoc_options: []
|
@@ -252,12 +257,14 @@ test_files:
|
|
252
257
|
- features/support/transforms.rb
|
253
258
|
- spec/integration/background_integration_spec.rb
|
254
259
|
- spec/integration/directory_integration_spec.rb
|
260
|
+
- spec/integration/doc_string_integration_spec.rb
|
255
261
|
- spec/integration/example_integration_spec.rb
|
256
262
|
- spec/integration/feature_file_integration_spec.rb
|
257
263
|
- spec/integration/feature_integration_spec.rb
|
258
264
|
- spec/integration/outline_integration_spec.rb
|
259
265
|
- spec/integration/scenario_integration_spec.rb
|
260
266
|
- spec/integration/step_integration_spec.rb
|
267
|
+
- spec/integration/tag_integration_spec.rb
|
261
268
|
- spec/integration/world_integration_spec.rb
|
262
269
|
- spec/spec_helper.rb
|
263
270
|
- spec/unit/background_unit_spec.rb
|
@@ -271,6 +278,7 @@ test_files:
|
|
271
278
|
- spec/unit/feature_file_unit_spec.rb
|
272
279
|
- spec/unit/feature_unit_spec.rb
|
273
280
|
- spec/unit/nested_element_unit_specs.rb
|
281
|
+
- spec/unit/nested_unit_spec.rb
|
274
282
|
- spec/unit/outline_unit_spec.rb
|
275
283
|
- spec/unit/parsing_unit_spec.rb
|
276
284
|
- spec/unit/prepopulated_unit_specs.rb
|