cuke_modeler 0.0.1

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.
Files changed (122) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.simplecov +8 -0
  4. data/Gemfile +4 -0
  5. data/History.rdoc +3 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +73 -0
  8. data/Rakefile +38 -0
  9. data/cuke_modeler.gemspec +29 -0
  10. data/features/analysis/test_comparison.feature +123 -0
  11. data/features/analysis/test_manipulation.feature +37 -0
  12. data/features/modeling/background_modeling.feature +75 -0
  13. data/features/modeling/background_output.feature +130 -0
  14. data/features/modeling/directory_modeling.feature +120 -0
  15. data/features/modeling/directory_output.feature +13 -0
  16. data/features/modeling/doc_string_modeling.feature +63 -0
  17. data/features/modeling/doc_string_output.feature +71 -0
  18. data/features/modeling/example_modeling.feature +111 -0
  19. data/features/modeling/example_output.feature +192 -0
  20. data/features/modeling/feature_file_modeling.feature +64 -0
  21. data/features/modeling/feature_file_output.feature +13 -0
  22. data/features/modeling/feature_modeling.feature +164 -0
  23. data/features/modeling/feature_output.feature +244 -0
  24. data/features/modeling/outline_modeling.feature +100 -0
  25. data/features/modeling/outline_output.feature +197 -0
  26. data/features/modeling/row_modeling.feature +77 -0
  27. data/features/modeling/row_output.feature +27 -0
  28. data/features/modeling/scenario_modeling.feature +89 -0
  29. data/features/modeling/scenario_output.feature +147 -0
  30. data/features/modeling/step_modeling.feature +85 -0
  31. data/features/modeling/step_output.feature +52 -0
  32. data/features/modeling/table_modeling.feature +52 -0
  33. data/features/modeling/table_output.feature +42 -0
  34. data/features/modeling/table_row_modeling.feature +67 -0
  35. data/features/modeling/table_row_output.feature +27 -0
  36. data/features/modeling/tag_modeling.feature +58 -0
  37. data/features/modeling/tag_output.feature +16 -0
  38. data/features/step_definitions/action_steps.rb +3 -0
  39. data/features/step_definitions/background_steps.rb +81 -0
  40. data/features/step_definitions/directory_steps.rb +52 -0
  41. data/features/step_definitions/doc_string_steps.rb +63 -0
  42. data/features/step_definitions/feature_file_steps.rb +41 -0
  43. data/features/step_definitions/feature_steps.rb +96 -0
  44. data/features/step_definitions/outline_steps.rb +252 -0
  45. data/features/step_definitions/setup_steps.rb +50 -0
  46. data/features/step_definitions/spec_steps.rb +18 -0
  47. data/features/step_definitions/step_steps.rb +159 -0
  48. data/features/step_definitions/table_steps.rb +54 -0
  49. data/features/step_definitions/tag_steps.rb +61 -0
  50. data/features/step_definitions/test_steps.rb +114 -0
  51. data/features/step_definitions/verification_steps.rb +9 -0
  52. data/features/support/env.rb +27 -0
  53. data/features/support/transforms.rb +3 -0
  54. data/lib/cuke_modeler.rb +29 -0
  55. data/lib/cuke_modeler/background.rb +38 -0
  56. data/lib/cuke_modeler/containing.rb +18 -0
  57. data/lib/cuke_modeler/directory.rb +86 -0
  58. data/lib/cuke_modeler/doc_string.rb +87 -0
  59. data/lib/cuke_modeler/example.rb +184 -0
  60. data/lib/cuke_modeler/feature.rb +147 -0
  61. data/lib/cuke_modeler/feature_element.rb +73 -0
  62. data/lib/cuke_modeler/feature_file.rb +77 -0
  63. data/lib/cuke_modeler/nested.rb +34 -0
  64. data/lib/cuke_modeler/outline.rb +68 -0
  65. data/lib/cuke_modeler/parsing.rb +32 -0
  66. data/lib/cuke_modeler/raw.rb +20 -0
  67. data/lib/cuke_modeler/row.rb +64 -0
  68. data/lib/cuke_modeler/scenario.rb +45 -0
  69. data/lib/cuke_modeler/sourceable.rb +20 -0
  70. data/lib/cuke_modeler/step.rb +214 -0
  71. data/lib/cuke_modeler/table.rb +90 -0
  72. data/lib/cuke_modeler/table_row.rb +64 -0
  73. data/lib/cuke_modeler/tag.rb +62 -0
  74. data/lib/cuke_modeler/taggable.rb +54 -0
  75. data/lib/cuke_modeler/test_element.rb +77 -0
  76. data/lib/cuke_modeler/version.rb +3 -0
  77. data/lib/cuke_modeler/world.rb +113 -0
  78. data/spec/integration/background_integration_spec.rb +72 -0
  79. data/spec/integration/directory_integration_spec.rb +48 -0
  80. data/spec/integration/doc_string_integration_spec.rb +66 -0
  81. data/spec/integration/example_integration_spec.rb +94 -0
  82. data/spec/integration/feature_file_integration_spec.rb +44 -0
  83. data/spec/integration/feature_integration_spec.rb +152 -0
  84. data/spec/integration/outline_integration_spec.rb +92 -0
  85. data/spec/integration/scenario_integration_spec.rb +80 -0
  86. data/spec/integration/step_integration_spec.rb +184 -0
  87. data/spec/integration/table_integration_spec.rb +86 -0
  88. data/spec/integration/table_row_integration_spec.rb +68 -0
  89. data/spec/integration/tag_integration_spec.rb +67 -0
  90. data/spec/integration/world_integration_spec.rb +13 -0
  91. data/spec/spec_helper.rb +30 -0
  92. data/spec/unit/background_unit_spec.rb +55 -0
  93. data/spec/unit/bare_bones_unit_specs.rb +13 -0
  94. data/spec/unit/containing_element_unit_specs.rb +17 -0
  95. data/spec/unit/directory_unit_spec.rb +103 -0
  96. data/spec/unit/doc_string_unit_spec.rb +109 -0
  97. data/spec/unit/example_unit_spec.rb +251 -0
  98. data/spec/unit/feature_element_unit_spec.rb +19 -0
  99. data/spec/unit/feature_element_unit_specs.rb +46 -0
  100. data/spec/unit/feature_file_unit_spec.rb +94 -0
  101. data/spec/unit/feature_unit_spec.rb +135 -0
  102. data/spec/unit/nested_element_unit_specs.rb +36 -0
  103. data/spec/unit/nested_unit_spec.rb +37 -0
  104. data/spec/unit/outline_unit_spec.rb +91 -0
  105. data/spec/unit/parsing_unit_spec.rb +21 -0
  106. data/spec/unit/prepopulated_unit_specs.rb +13 -0
  107. data/spec/unit/raw_element_unit_specs.rb +24 -0
  108. data/spec/unit/raw_unit_spec.rb +25 -0
  109. data/spec/unit/row_unit_spec.rb +55 -0
  110. data/spec/unit/scenario_unit_spec.rb +71 -0
  111. data/spec/unit/sourceable_unit_spec.rb +17 -0
  112. data/spec/unit/sourced_element_unit_specs.rb +18 -0
  113. data/spec/unit/step_unit_spec.rb +259 -0
  114. data/spec/unit/table_row_unit_spec.rb +55 -0
  115. data/spec/unit/table_unit_spec.rb +96 -0
  116. data/spec/unit/tag_unit_spec.rb +51 -0
  117. data/spec/unit/taggable_unit_spec.rb +78 -0
  118. data/spec/unit/tagged_element_unit_specs.rb +63 -0
  119. data/spec/unit/test_element_unit_spec.rb +40 -0
  120. data/spec/unit/test_element_unit_specs.rb +31 -0
  121. data/spec/unit/world_unit_spec.rb +130 -0
  122. metadata +364 -0
@@ -0,0 +1,192 @@
1
+ Feature: Outputting example elements
2
+
3
+ The output of an element model is a representation of the element as it would
4
+ appear in gherkin.
5
+
6
+
7
+ Scenario: Output of an example that does not have a name
8
+ Given an example element based on the following gherkin:
9
+ """
10
+ Examples:
11
+ |param|
12
+ """
13
+ When it is outputted
14
+ Then the following text is provided:
15
+ """
16
+ Examples:
17
+ | param |
18
+ """
19
+
20
+ Scenario: Output of an example that does have a name
21
+ Given an example element based on the following gherkin:
22
+ """
23
+ Examples: with a name
24
+ |param|
25
+ """
26
+ When it is outputted
27
+ Then the following text is provided:
28
+ """
29
+ Examples: with a name
30
+ | param |
31
+ """
32
+
33
+ Scenario: Output of an example that does not have tags
34
+ Given an example element based on the following gherkin:
35
+ """
36
+ Examples:
37
+ |param|
38
+ """
39
+ When it is outputted
40
+ Then the following text is provided:
41
+ """
42
+ Examples:
43
+ | param |
44
+ """
45
+
46
+ Scenario: Output of an example that does have tags
47
+ Given an example element based on the following gherkin:
48
+ """
49
+ @tag1@tag2
50
+ @tag3
51
+ Examples:
52
+ |param|
53
+ """
54
+ When it is outputted
55
+ Then the following text is provided:
56
+ """
57
+ @tag1 @tag2 @tag3
58
+ Examples:
59
+ | param |
60
+ """
61
+
62
+ Scenario: Output of an example that has a description, no first line buffer
63
+ Given an example element based on the following gherkin:
64
+ """
65
+ Examples:
66
+ Some description.
67
+ Some more description.
68
+ |param|
69
+ """
70
+ When it is outputted
71
+ Then the following text is provided:
72
+ """
73
+ Examples:
74
+
75
+ Some description.
76
+ Some more description.
77
+
78
+ | param |
79
+ """
80
+
81
+ Scenario: Output of an example that has a description, first line is blank
82
+ Given an example element based on the following gherkin:
83
+ """
84
+ Examples:
85
+
86
+ Some description.
87
+ Some more description.
88
+ |param|
89
+ """
90
+ When it is outputted
91
+ Then the following text is provided:
92
+ """
93
+ Examples:
94
+
95
+ Some description.
96
+ Some more description.
97
+
98
+ | param |
99
+ """
100
+
101
+ Scenario: Output of an example that has a description, first line is only whitespace
102
+ Given an example element based on the following gherkin:
103
+ """
104
+ Examples:
105
+
106
+ Some description.
107
+ Some more description.
108
+ |param|
109
+ """
110
+ When it is outputted
111
+ Then the following text is provided:
112
+ """
113
+ Examples:
114
+
115
+ Some description.
116
+ Some more description.
117
+
118
+ | param |
119
+ """
120
+
121
+ Scenario: Output of an example that has one rows
122
+ Given an example element based on the following gherkin:
123
+ """
124
+ Examples:
125
+ |param1|param2|
126
+ |value1|value2|
127
+ """
128
+ When it is outputted
129
+ Then the following text is provided:
130
+ """
131
+ Examples:
132
+ | param1 | param2 |
133
+ | value1 | value2 |
134
+ """
135
+
136
+ Scenario: Output of an example that has multiple rows
137
+ Given an example element based on the following gherkin:
138
+ """
139
+ Examples:
140
+ |param1|param2|
141
+ |value1|value2|
142
+ |value3|value4|
143
+ """
144
+ When it is outputted
145
+ Then the following text is provided:
146
+ """
147
+ Examples:
148
+ | param1 | param2 |
149
+ | value1 | value2 |
150
+ | value3 | value4 |
151
+ """
152
+
153
+ Scenario: Output of an example that contains all possible parts
154
+ Given an example element based on the following gherkin:
155
+ """
156
+ @tag1@tag2
157
+ @tag3
158
+ Examples: with a name
159
+ Some description.
160
+ Some more description.
161
+ |param1|param2|
162
+ |value1|value2|
163
+ |value3|value4|
164
+ """
165
+ When it is outputted
166
+ Then the following text is provided:
167
+ """
168
+ @tag1 @tag2 @tag3
169
+ Examples: with a name
170
+
171
+ Some description.
172
+ Some more description.
173
+
174
+ | param1 | param2 |
175
+ | value1 | value2 |
176
+ | value3 | value4 |
177
+ """
178
+
179
+ Scenario: Whitespace buffers are based on the longest value or parameter in a column
180
+ Given an example element based on the following gherkin:
181
+ """
182
+ Examples:
183
+ |parameter_name|x|
184
+ |y|value_name|
185
+ """
186
+ When it is outputted
187
+ Then the following text is provided:
188
+ """
189
+ Examples:
190
+ | parameter_name | x |
191
+ | y | value_name |
192
+ """
@@ -0,0 +1,64 @@
1
+ Feature: Feature files can be modeled.
2
+
3
+
4
+ Acceptance criteria
5
+
6
+ 1. All conceptual pieces of a .feature file can be modeled:
7
+ - the file's name
8
+ - the file's full path
9
+ - the file's features (one or zero per file)
10
+
11
+ 2. Feature files can be outputted in a convenient form
12
+
13
+
14
+ Background: Test file setup.
15
+ Given the following feature file "test_file_1.feature":
16
+ """
17
+ Feature: The first test feature
18
+ Just a dummy feature.
19
+ """
20
+ And the following feature file "test_file_2.feature":
21
+ """
22
+ Feature: The second test feature
23
+ Just a dummy feature.
24
+ """
25
+ And the following feature file "why_would_you_make_an_empty_file.feature":
26
+ """
27
+ """
28
+ When the file "test_file_1.feature" is read
29
+ And the file "test_file_2.feature" is read
30
+ And the file "why_would_you_make_an_empty_file.feature" is read
31
+
32
+
33
+ Scenario: The file's feature is modeled.
34
+ Then file "1" is found to have the following properties:
35
+ | name | test_file_1.feature |
36
+ | path | path_to/test_file_1.feature |
37
+ | feature_count | 1 |
38
+ And file "1" features are as follows:
39
+ | The first test feature |
40
+ Then file "2" is found to have the following properties:
41
+ | name | test_file_2.feature |
42
+ | path | path_to/test_file_2.feature |
43
+ | feature_count | 1 |
44
+ And file "2" features are as follows:
45
+ | The second test feature |
46
+ Then file "3" is found to have the following properties:
47
+ | name | why_would_you_make_an_empty_file.feature |
48
+ | path | path_to/why_would_you_make_an_empty_file.feature |
49
+ | feature_count | 0 |
50
+ And file "3" has no features
51
+
52
+ Scenario: Convenient output of a feature file
53
+ Then the feature file has convenient output
54
+
55
+ @redundant
56
+ Scenario Outline: Feature file models pass all other specifications
57
+ Exact specifications detailing the API for .feature file models.
58
+ Given that there are "<additional specifications>" detailing models
59
+ When the corresponding specifications are run
60
+ Then all of those specifications are met
61
+ Examples:
62
+ | additional specifications |
63
+ | feature_file_unit_spec.rb |
64
+ | feature_file_integration_spec.rb |
@@ -0,0 +1,13 @@
1
+ Feature: Outputting feature file elements
2
+
3
+ The output of an element model is a representation of the element as it would
4
+ appear in gherkin.
5
+
6
+
7
+ Scenario: Output of a feature file
8
+ Given a feature file element based on "some_feature_file.feature"
9
+ When it is outputted
10
+ Then the following text is provided:
11
+ """
12
+ path_to/some_feature_file.feature
13
+ """
@@ -0,0 +1,164 @@
1
+ Feature: Features can be modeled.
2
+
3
+
4
+ Acceptance criteria
5
+
6
+ 1. All conceptual pieces of a feature can be modeled:
7
+ - the feature's name
8
+ - the feature's description
9
+ - the feature's tags
10
+ - the feature's scenarios
11
+ - the feature's outlines
12
+ - the feature's background
13
+ - the feature's total number of tests
14
+ - the feature's total number of test cases
15
+ - the feature's source line
16
+ - the feature's raw element
17
+
18
+ 2. Features can be outputted in a convenient form
19
+
20
+
21
+ Background: Test file setup.
22
+ Given the following feature file "much_stuff.feature":
23
+ """
24
+ @a_feature_level_tag @and_another
25
+
26
+ Feature: The test feature name.
27
+
28
+ Some feature description.
29
+
30
+ Some more.
31
+ And some more.
32
+
33
+ Background: Some general test setup stuff.
34
+ * some setup step
35
+
36
+ Scenario: The first scenario's name.
37
+ * a step
38
+
39
+ Scenario Outline: The scenario outline's name.
40
+ * a step
41
+ Examples:
42
+ | param |
43
+ | x |
44
+ | y |
45
+ Examples:
46
+ | param |
47
+ | z |
48
+
49
+ Scenario: The second scenario's name.
50
+ * a step
51
+ """
52
+ And the following feature file "barely_any_stuff.feature":
53
+ """
54
+ Feature:
55
+
56
+ Background:
57
+
58
+ Scenario:
59
+
60
+ Scenario Outline:
61
+ Examples:
62
+ """
63
+ And the following feature file "as_empty_as_it_gets.feature":
64
+ """
65
+ Feature:
66
+ """
67
+ When the file "much_stuff.feature" is read
68
+ And the file "barely_any_stuff.feature" is read
69
+ And the file "as_empty_as_it_gets.feature" is read
70
+
71
+
72
+ Scenario: The raw feature element is modeled.
73
+ Then the feature correctly stores its underlying implementation
74
+
75
+ Scenario: The feature's properties are modeled.
76
+ Then feature "1" is found to have the following properties:
77
+ | name | The test feature name. |
78
+ | test_count | 3 |
79
+ | test_case_count | 5 |
80
+ | source_line | 3 |
81
+ And feature "2" is found to have the following properties:
82
+ | name | |
83
+ | test_count | 2 |
84
+ | test_case_count | 1 |
85
+ | source_line | 1 |
86
+
87
+ And feature "3" is found to have the following properties:
88
+ | name | |
89
+ | test_count | 0 |
90
+ | test_case_count | 0 |
91
+ | source_line | 1 |
92
+
93
+ Scenario: The feature's description is modeled.
94
+ Then feature "1" has the following description:
95
+ """
96
+
97
+ Some feature description.
98
+
99
+ Some more.
100
+ And some more.
101
+ """
102
+ And feature "2" has no description
103
+ And feature "3" has no description
104
+
105
+ Scenario: The feature's tags are modeled.
106
+ Then feature "1" is found to have the following tags:
107
+ | @a_feature_level_tag |
108
+ | @and_another |
109
+ And feature "2" has no tags
110
+ And feature "3" has no tags
111
+
112
+ Scenario: The feature's scenarios are modeled.
113
+ Then feature "1" is found to have the following properties:
114
+ | scenario_count | 2 |
115
+ And feature "1" scenarios are as follows:
116
+ | The first scenario's name. |
117
+ | The second scenario's name. |
118
+ And feature "2" is found to have the following properties:
119
+ | scenario_count | 1 |
120
+ And feature "2" scenarios are as follows:
121
+ | |
122
+ And feature "3" is found to have the following properties:
123
+ | scenario_count | 0 |
124
+ And feature "3" has no scenarios
125
+
126
+ Scenario: The feature's outlines are modeled.
127
+ Then feature "1" is found to have the following properties:
128
+ | outline_count | 1 |
129
+ And feature "1" outlines are as follows:
130
+ | The scenario outline's name. |
131
+ And feature "2" is found to have the following properties:
132
+ | outline_count | 1 |
133
+ And feature "2" outlines are as follows:
134
+ | |
135
+ And feature "3" is found to have the following properties:
136
+ | outline_count | 0 |
137
+ And feature "3" has no outlines
138
+
139
+ Scenario: The feature's background is modeled.
140
+ Then feature "1" is found to have the following properties:
141
+ | has_background? | true |
142
+ And feature "1" background is as follows:
143
+ | Some general test setup stuff. |
144
+ And feature "2" is found to have the following properties:
145
+ | has_background? | true |
146
+ And feature "2" background is as follows:
147
+ | |
148
+ And feature "3" is found to have the following properties:
149
+ | has_background? | false |
150
+ And feature "3" has no background
151
+
152
+ Scenario: Convenient output of a feature
153
+ Then the feature has convenient output
154
+
155
+ @redundant
156
+ Scenario Outline: Feature models pass all other specifications
157
+ Exact specifications detailing the API for feature models.
158
+ Given that there are "<additional specifications>" detailing models
159
+ When the corresponding specifications are run
160
+ Then all of those specifications are met
161
+ Examples:
162
+ | additional specifications |
163
+ | feature_unit_spec.rb |
164
+ | feature_integration_spec.rb |
@@ -0,0 +1,244 @@
1
+ Feature: Outputting feature elements
2
+
3
+ The output of an element model is a representation of the element as it would
4
+ appear in gherkin.
5
+
6
+
7
+ Scenario: Output of a feature that does not have a name
8
+ Given a feature element based on the following gherkin:
9
+ """
10
+ Feature:
11
+ """
12
+ When it is outputted
13
+ Then the following text is provided:
14
+ """
15
+ Feature:
16
+ """
17
+
18
+ Scenario: Output of a feature that does have a name
19
+ Given a feature element based on the following gherkin:
20
+ """
21
+ Feature: with a name
22
+ """
23
+ When it is outputted
24
+ Then the following text is provided:
25
+ """
26
+ Feature: with a name
27
+ """
28
+
29
+ Scenario: Output of a feature that has tags
30
+ Given a feature element based on the following gherkin:
31
+ """
32
+ @tag1@tag2
33
+ @tag3
34
+ Feature:
35
+ """
36
+ When it is outputted
37
+ Then the following text is provided:
38
+ """
39
+ @tag1 @tag2 @tag3
40
+ Feature:
41
+ """
42
+
43
+ Scenario: Output of a feature that has a description, no first line buffer
44
+ Given a feature element based on the following gherkin:
45
+ """
46
+ Feature:
47
+ Some description.
48
+ Some more description.
49
+ """
50
+ When it is outputted
51
+ Then the following text is provided:
52
+ """
53
+ Feature:
54
+
55
+ Some description.
56
+ Some more description.
57
+ """
58
+
59
+ Scenario: Output of a feature that has a description, first line is blank
60
+ Given a feature element based on the following gherkin:
61
+ """
62
+ Feature:
63
+
64
+ Some description.
65
+ Some more description.
66
+ """
67
+ When it is outputted
68
+ Then the following text is provided:
69
+ """
70
+ Feature:
71
+
72
+ Some description.
73
+ Some more description.
74
+ """
75
+
76
+ Scenario: Output of a feature that has a description, first line is only whitespace
77
+ Given a feature element based on the following gherkin:
78
+ """
79
+ Feature:
80
+
81
+ Some description.
82
+ Some more description.
83
+ """
84
+ When it is outputted
85
+ Then the following text is provided:
86
+ """
87
+ Feature:
88
+
89
+ Some description.
90
+ Some more description.
91
+ """
92
+
93
+ Scenario: Output of a feature that has a background
94
+ Given a feature element based on the following gherkin:
95
+ """
96
+ Feature:
97
+
98
+ Background:
99
+ * a step
100
+ * another step
101
+ """
102
+ When it is outputted
103
+ Then the following text is provided:
104
+ """
105
+ Feature:
106
+
107
+ Background:
108
+ * a step
109
+ * another step
110
+ """
111
+
112
+ Scenario: Output of a feature that has a scenario
113
+ Given a feature element based on the following gherkin:
114
+ """
115
+ Feature:
116
+
117
+ Scenario:
118
+ * a step
119
+ * another step
120
+ """
121
+ When it is outputted
122
+ Then the following text is provided:
123
+ """
124
+ Feature:
125
+
126
+ Scenario:
127
+ * a step
128
+ * another step
129
+ """
130
+
131
+ Scenario: Output of a feature that has an outline
132
+ Given a feature element based on the following gherkin:
133
+ """
134
+ Feature:
135
+
136
+ Scenario Outline:
137
+ * a step
138
+ * another step
139
+ Examples:
140
+ |param|
141
+ """
142
+ When it is outputted
143
+ Then the following text is provided:
144
+ """
145
+ Feature:
146
+
147
+ Scenario Outline:
148
+ * a step
149
+ * another step
150
+
151
+ Examples:
152
+ | param |
153
+ """
154
+
155
+ Scenario: Output of a feature that contains all possible parts
156
+ Given a feature element based on the following gherkin:
157
+ """
158
+ @tag1@tag2
159
+ @tag3
160
+ Feature: A feature with everything it could have
161
+ Including a description
162
+ and then some.
163
+ Background:
164
+ Background
165
+ description
166
+ * a step
167
+ |value1|
168
+ * another step
169
+ @scenario_tag
170
+ Scenario:
171
+ Scenario
172
+ description
173
+ * a step
174
+ * another step
175
+ \"\"\"
176
+ some text
177
+ \"\"\"
178
+ @outline_tag
179
+ Scenario Outline:
180
+ Outline
181
+ description
182
+ * a step
183
+ |value2|
184
+ * another step
185
+ \"\"\"
186
+ some text
187
+ \"\"\"
188
+ @example_tag
189
+ Examples:
190
+ Example
191
+ description
192
+ |param|
193
+ """
194
+ When it is outputted
195
+ Then the following text is provided:
196
+ """
197
+ @tag1 @tag2 @tag3
198
+ Feature: A feature with everything it could have
199
+
200
+ Including a description
201
+ and then some.
202
+
203
+ Background:
204
+
205
+ Background
206
+ description
207
+
208
+ * a step
209
+ | value1 |
210
+ * another step
211
+
212
+ @scenario_tag
213
+ Scenario:
214
+
215
+ Scenario
216
+ description
217
+
218
+ * a step
219
+ * another step
220
+ \"\"\"
221
+ some text
222
+ \"\"\"
223
+
224
+ @outline_tag
225
+ Scenario Outline:
226
+
227
+ Outline
228
+ description
229
+
230
+ * a step
231
+ | value2 |
232
+ * another step
233
+ \"\"\"
234
+ some text
235
+ \"\"\"
236
+
237
+ @example_tag
238
+ Examples:
239
+
240
+ Example
241
+ description
242
+
243
+ | param |
244
+ """