cuke_modeler 0.4.1 → 1.0.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 +4 -4
- data/.gitignore +17 -17
- data/.travis.yml +1 -1
- data/Gemfile +4 -0
- data/History.rdoc +71 -3
- data/LICENSE.txt +22 -22
- data/README.md +24 -10
- data/Rakefile +2 -12
- data/cuke_modeler.gemspec +1 -1
- data/features/analysis/test_comparison.feature +37 -122
- data/features/modeling/background_modeling.feature +77 -0
- data/features/modeling/background_output.feature +42 -0
- data/features/modeling/cell_modeling.feature +23 -0
- data/features/modeling/cell_output.feature +22 -0
- data/features/modeling/directory_modeling.feature +65 -0
- data/features/modeling/directory_output.feature +12 -0
- data/features/modeling/doc_string_modeling.feature +61 -0
- data/features/modeling/doc_string_output.feature +32 -0
- data/features/modeling/example_modeling.feature +125 -0
- data/features/modeling/example_output.feature +39 -0
- data/features/modeling/feature_file_modeling.feature +40 -0
- data/features/modeling/feature_file_output.feature +12 -0
- data/features/modeling/feature_modeling.feature +109 -0
- data/features/modeling/feature_output.feature +104 -0
- data/features/modeling/model_output.feature +22 -0
- data/features/modeling/model_structure.feature +48 -0
- data/features/modeling/outline_modeling.feature +144 -0
- data/features/modeling/outline_output.feature +69 -0
- data/features/modeling/row_modeling.feature +48 -0
- data/features/modeling/row_output.feature +22 -0
- data/features/modeling/scenario_modeling.feature +118 -0
- data/features/modeling/scenario_output.feature +45 -0
- data/features/modeling/step_modeling.feature +84 -0
- data/features/modeling/step_output.feature +29 -0
- data/features/modeling/table_modeling.feature +50 -0
- data/features/modeling/table_output.feature +24 -0
- data/features/modeling/tag_modeling.feature +43 -0
- data/features/modeling/tag_output.feature +22 -0
- data/features/step_definitions/action_steps.rb +11 -1
- data/features/step_definitions/background_steps.rb +1 -85
- data/features/step_definitions/directory_steps.rb +2 -48
- data/features/step_definitions/doc_string_steps.rb +1 -67
- data/features/step_definitions/feature_file_steps.rb +2 -37
- data/features/step_definitions/feature_steps.rb +4 -100
- data/features/step_definitions/modeling_steps.rb +44 -0
- data/features/step_definitions/setup_steps.rb +19 -41
- data/features/step_definitions/step_steps.rb +2 -166
- data/features/step_definitions/table_steps.rb +1 -58
- data/features/step_definitions/tag_steps.rb +2 -72
- data/features/step_definitions/verification_steps.rb +152 -4
- data/features/support/env.rb +4 -6
- data/gemfiles/{gherkin.gemfile → gherkin2.gemfile} +4 -0
- data/gemfiles/gherkin3.gemfile +4 -0
- data/gemfiles/gherkin4.gemfile +4 -0
- data/lib/cuke_modeler.rb +24 -22
- data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +103 -31
- data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +103 -40
- data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +111 -50
- data/lib/cuke_modeler/containing.rb +255 -4
- data/lib/cuke_modeler/described.rb +28 -0
- data/lib/cuke_modeler/models/background.rb +66 -0
- data/lib/cuke_modeler/models/cell.rb +48 -0
- data/lib/cuke_modeler/models/directory.rb +95 -0
- data/lib/cuke_modeler/models/doc_string.rb +59 -0
- data/lib/cuke_modeler/models/example.rb +167 -0
- data/lib/cuke_modeler/models/feature.rb +106 -0
- data/lib/cuke_modeler/models/feature_file.rb +64 -0
- data/lib/cuke_modeler/models/model.rb +32 -0
- data/lib/cuke_modeler/models/outline.rb +79 -0
- data/lib/cuke_modeler/models/row.rb +49 -0
- data/lib/cuke_modeler/models/scenario.rb +69 -0
- data/lib/cuke_modeler/models/step.rb +68 -0
- data/lib/cuke_modeler/models/table.rb +67 -0
- data/lib/cuke_modeler/models/tag.rb +46 -0
- data/lib/cuke_modeler/named.rb +19 -0
- data/lib/cuke_modeler/nested.rb +22 -15
- data/lib/cuke_modeler/parsed.rb +11 -0
- data/lib/cuke_modeler/parsing.rb +66 -83
- data/lib/cuke_modeler/sourceable.rb +3 -11
- data/lib/cuke_modeler/stepped.rb +24 -0
- data/lib/cuke_modeler/taggable.rb +6 -29
- data/lib/cuke_modeler/version.rb +2 -1
- data/spec/integration/background_integration_spec.rb +332 -7
- data/spec/integration/cell_integration_spec.rb +321 -0
- data/spec/integration/directory_integration_spec.rb +175 -9
- data/spec/integration/doc_string_integration_spec.rb +318 -7
- data/spec/integration/example_integration_spec.rb +602 -19
- data/spec/integration/feature_file_integration_spec.rb +98 -3
- data/spec/integration/feature_integration_spec.rb +445 -27
- data/spec/integration/gherkin_2_adapter_spec.rb +122 -0
- data/spec/integration/gherkin_3_adapter_spec.rb +125 -0
- data/spec/integration/gherkin_4_adapter_spec.rb +123 -0
- data/spec/integration/model_integration_spec.rb +15 -0
- data/spec/integration/nested_integration_spec.rb +91 -0
- data/spec/integration/outline_integration_spec.rb +485 -12
- data/spec/integration/parsing_integration_spec.rb +85 -0
- data/spec/integration/row_integration_spec.rb +221 -18
- data/spec/integration/scenario_integration_spec.rb +368 -14
- data/spec/integration/shared/models_integration_specs.rb +18 -0
- data/spec/integration/step_integration_spec.rb +328 -77
- data/spec/integration/table_integration_spec.rb +242 -20
- data/spec/integration/tag_integration_spec.rb +178 -13
- data/spec/spec_helper.rb +32 -18
- data/spec/unit/background_unit_spec.rb +24 -44
- data/spec/unit/cell_unit_spec.rb +73 -0
- data/spec/unit/described_unit_spec.rb +23 -0
- data/spec/unit/directory_unit_spec.rb +52 -62
- data/spec/unit/doc_string_unit_spec.rb +47 -100
- data/spec/unit/example_unit_spec.rb +50 -296
- data/spec/unit/feature_file_unit_spec.rb +53 -52
- data/spec/unit/feature_unit_spec.rb +39 -83
- data/spec/unit/model_unit_spec.rb +15 -0
- data/spec/unit/named_unit_spec.rb +23 -0
- data/spec/unit/nested_unit_spec.rb +24 -21
- data/spec/unit/outline_unit_spec.rb +46 -69
- data/spec/unit/parsed_unit_spec.rb +27 -0
- data/spec/unit/parsing_unit_spec.rb +2 -70
- data/spec/unit/row_unit_spec.rb +22 -51
- data/spec/unit/scenario_unit_spec.rb +27 -59
- data/spec/unit/{bare_bones_unit_specs.rb → shared/bare_bones_models_unit_specs.rb} +2 -2
- data/spec/unit/shared/containing_models_unit_specs.rb +18 -0
- data/spec/unit/shared/described_models_unit_specs.rb +38 -0
- data/spec/unit/shared/models_unit_specs.rb +15 -0
- data/spec/unit/shared/named_models_unit_specs.rb +39 -0
- data/spec/unit/shared/nested_models_unit_specs.rb +51 -0
- data/spec/unit/shared/parsed_models_unit_specs.rb +39 -0
- data/spec/unit/shared/prepopulated_models_unit_specs.rb +18 -0
- data/spec/unit/shared/sourced_models_unit_specs.rb +39 -0
- data/spec/unit/shared/stepped_models_unit_specs.rb +46 -0
- data/spec/unit/shared/stringifiable_models_unit_specs.rb +18 -0
- data/spec/unit/shared/tagged_models_unit_specs.rb +72 -0
- data/spec/unit/sourceable_unit_spec.rb +12 -4
- data/spec/unit/step_unit_spec.rb +40 -231
- data/spec/unit/stepped_unit_spec.rb +23 -0
- data/spec/unit/table_unit_spec.rb +27 -89
- data/spec/unit/tag_unit_spec.rb +30 -53
- data/spec/unit/taggable_unit_spec.rb +26 -42
- data/todo.txt +32 -0
- metadata +135 -217
- data/features/analysis/test_manipulation.feature +0 -37
- data/features/modeling/gherkin/background_modeling.feature +0 -65
- data/features/modeling/gherkin/background_output.feature +0 -131
- data/features/modeling/gherkin/directory_modeling.feature +0 -110
- data/features/modeling/gherkin/directory_output.feature +0 -14
- data/features/modeling/gherkin/doc_string_modeling.feature +0 -53
- data/features/modeling/gherkin/doc_string_output.feature +0 -72
- data/features/modeling/gherkin/example_modeling.feature +0 -101
- data/features/modeling/gherkin/example_output.feature +0 -193
- data/features/modeling/gherkin/feature_file_modeling.feature +0 -54
- data/features/modeling/gherkin/feature_file_output.feature +0 -14
- data/features/modeling/gherkin/feature_modeling.feature +0 -154
- data/features/modeling/gherkin/feature_output.feature +0 -245
- data/features/modeling/gherkin/outline_modeling.feature +0 -90
- data/features/modeling/gherkin/outline_output.feature +0 -198
- data/features/modeling/gherkin/row_modeling.feature +0 -68
- data/features/modeling/gherkin/row_output.feature +0 -28
- data/features/modeling/gherkin/scenario_modeling.feature +0 -79
- data/features/modeling/gherkin/scenario_output.feature +0 -148
- data/features/modeling/gherkin/step_modeling.feature +0 -75
- data/features/modeling/gherkin/step_output.feature +0 -53
- data/features/modeling/gherkin/table_modeling.feature +0 -42
- data/features/modeling/gherkin/table_output.feature +0 -43
- data/features/modeling/gherkin/table_row_modeling.feature +0 -57
- data/features/modeling/gherkin/table_row_output.feature +0 -28
- data/features/modeling/gherkin/tag_modeling.feature +0 -48
- data/features/modeling/gherkin/tag_output.feature +0 -17
- data/features/modeling/gherkin3/background_modeling.feature +0 -64
- data/features/modeling/gherkin3/background_output.feature +0 -131
- data/features/modeling/gherkin3/directory_modeling.feature +0 -110
- data/features/modeling/gherkin3/directory_output.feature +0 -14
- data/features/modeling/gherkin3/doc_string_modeling.feature +0 -53
- data/features/modeling/gherkin3/doc_string_output.feature +0 -72
- data/features/modeling/gherkin3/example_modeling.feature +0 -100
- data/features/modeling/gherkin3/example_output.feature +0 -207
- data/features/modeling/gherkin3/feature_file_modeling.feature +0 -54
- data/features/modeling/gherkin3/feature_file_output.feature +0 -14
- data/features/modeling/gherkin3/feature_modeling.feature +0 -155
- data/features/modeling/gherkin3/feature_output.feature +0 -249
- data/features/modeling/gherkin3/outline_modeling.feature +0 -89
- data/features/modeling/gherkin3/outline_output.feature +0 -255
- data/features/modeling/gherkin3/row_modeling.feature +0 -68
- data/features/modeling/gherkin3/row_output.feature +0 -28
- data/features/modeling/gherkin3/scenario_modeling.feature +0 -78
- data/features/modeling/gherkin3/scenario_output.feature +0 -148
- data/features/modeling/gherkin3/step_modeling.feature +0 -75
- data/features/modeling/gherkin3/step_output.feature +0 -53
- data/features/modeling/gherkin3/table_modeling.feature +0 -42
- data/features/modeling/gherkin3/table_output.feature +0 -43
- data/features/modeling/gherkin3/table_row_modeling.feature +0 -57
- data/features/modeling/gherkin3/table_row_output.feature +0 -28
- data/features/modeling/gherkin3/tag_modeling.feature +0 -49
- data/features/modeling/gherkin3/tag_output.feature +0 -17
- data/features/modeling/gherkin4/background_modeling.feature +0 -64
- data/features/modeling/gherkin4/background_output.feature +0 -131
- data/features/modeling/gherkin4/directory_modeling.feature +0 -110
- data/features/modeling/gherkin4/directory_output.feature +0 -14
- data/features/modeling/gherkin4/doc_string_modeling.feature +0 -53
- data/features/modeling/gherkin4/doc_string_output.feature +0 -72
- data/features/modeling/gherkin4/example_modeling.feature +0 -100
- data/features/modeling/gherkin4/example_output.feature +0 -193
- data/features/modeling/gherkin4/feature_file_modeling.feature +0 -54
- data/features/modeling/gherkin4/feature_file_output.feature +0 -14
- data/features/modeling/gherkin4/feature_modeling.feature +0 -153
- data/features/modeling/gherkin4/feature_output.feature +0 -245
- data/features/modeling/gherkin4/outline_modeling.feature +0 -89
- data/features/modeling/gherkin4/outline_output.feature +0 -198
- data/features/modeling/gherkin4/row_modeling.feature +0 -68
- data/features/modeling/gherkin4/row_output.feature +0 -28
- data/features/modeling/gherkin4/scenario_modeling.feature +0 -78
- data/features/modeling/gherkin4/scenario_output.feature +0 -148
- data/features/modeling/gherkin4/step_modeling.feature +0 -75
- data/features/modeling/gherkin4/step_output.feature +0 -53
- data/features/modeling/gherkin4/table_modeling.feature +0 -42
- data/features/modeling/gherkin4/table_output.feature +0 -43
- data/features/modeling/gherkin4/table_row_modeling.feature +0 -57
- data/features/modeling/gherkin4/table_row_output.feature +0 -28
- data/features/modeling/gherkin4/tag_modeling.feature +0 -48
- data/features/modeling/gherkin4/tag_output.feature +0 -17
- data/features/step_definitions/outline_steps.rb +0 -258
- data/features/step_definitions/test_steps.rb +0 -123
- data/lib/cuke_modeler/background.rb +0 -38
- data/lib/cuke_modeler/directory.rb +0 -83
- data/lib/cuke_modeler/doc_string.rb +0 -87
- data/lib/cuke_modeler/example.rb +0 -195
- data/lib/cuke_modeler/feature.rb +0 -147
- data/lib/cuke_modeler/feature_element.rb +0 -73
- data/lib/cuke_modeler/feature_file.rb +0 -77
- data/lib/cuke_modeler/outline.rb +0 -68
- data/lib/cuke_modeler/raw.rb +0 -20
- data/lib/cuke_modeler/row.rb +0 -64
- data/lib/cuke_modeler/scenario.rb +0 -45
- data/lib/cuke_modeler/step.rb +0 -216
- data/lib/cuke_modeler/table.rb +0 -90
- data/lib/cuke_modeler/table_row.rb +0 -64
- data/lib/cuke_modeler/tag.rb +0 -62
- data/lib/cuke_modeler/test_element.rb +0 -79
- data/lib/cuke_modeler/world.rb +0 -113
- data/spec/integration/table_row_integration_spec.rb +0 -76
- data/spec/integration/world_integration_spec.rb +0 -14
- data/spec/unit/containing_element_unit_specs.rb +0 -18
- data/spec/unit/feature_element_unit_spec.rb +0 -19
- data/spec/unit/feature_element_unit_specs.rb +0 -52
- data/spec/unit/nested_element_unit_specs.rb +0 -39
- data/spec/unit/prepopulated_unit_specs.rb +0 -14
- data/spec/unit/raw_element_unit_specs.rb +0 -27
- data/spec/unit/raw_unit_spec.rb +0 -28
- data/spec/unit/sourced_element_unit_specs.rb +0 -18
- data/spec/unit/table_row_unit_spec.rb +0 -102
- data/spec/unit/tagged_element_unit_specs.rb +0 -67
- data/spec/unit/test_element_unit_spec.rb +0 -54
- data/spec/unit/test_element_unit_specs.rb +0 -34
- data/spec/unit/world_unit_spec.rb +0 -140
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
module CukeModeler
|
|
2
|
-
|
|
3
|
-
# A class modeling an element that contains steps.
|
|
4
|
-
|
|
5
|
-
class TestElement < FeatureElement
|
|
6
|
-
|
|
7
|
-
include Containing
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# The steps contained by the TestElement
|
|
11
|
-
attr_accessor :steps
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# Creates a new TestElement object and, if *parsed_test_element* is provided,
|
|
15
|
-
# populates the object.
|
|
16
|
-
def initialize(parsed_test_element = nil)
|
|
17
|
-
super
|
|
18
|
-
|
|
19
|
-
@steps = []
|
|
20
|
-
|
|
21
|
-
build_test_element(parsed_test_element) if parsed_test_element
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Returns true if the two elements have equivalent steps and false otherwise.
|
|
25
|
-
def ==(other_element)
|
|
26
|
-
return false unless other_element.respond_to?(:steps)
|
|
27
|
-
|
|
28
|
-
steps == other_element.steps
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Returns the immediate child elements of the element.
|
|
32
|
-
def contains
|
|
33
|
-
@steps
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
private
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def process_source(source, file_name = nil)
|
|
41
|
-
case
|
|
42
|
-
when source.is_a?(String)
|
|
43
|
-
parse_test_element(source, file_name)
|
|
44
|
-
else
|
|
45
|
-
source
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def parse_test_element(source_text, file_name = nil)
|
|
50
|
-
base_file_string = "Feature: Fake feature to parse\n"
|
|
51
|
-
source_text = base_file_string + source_text
|
|
52
|
-
|
|
53
|
-
parsed_file = Parsing::parse_text(source_text, file_name)
|
|
54
|
-
|
|
55
|
-
parsed_file.first['elements'].first
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def build_test_element(parsed_test_element)
|
|
59
|
-
populate_test_element_steps(parsed_test_element)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def populate_test_element_steps(parsed_test_element)
|
|
63
|
-
if parsed_test_element['steps']
|
|
64
|
-
parsed_test_element['steps'].each do |step|
|
|
65
|
-
@steps << build_child_element(Step, step)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def steps_output_string
|
|
71
|
-
steps.collect { |step| indented_step_text(step) }.join("\n")
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def indented_step_text(step)
|
|
75
|
-
step.to_s.split("\n").collect { |line| " #{line}" }.join("\n")
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
end
|
|
79
|
-
end
|
data/lib/cuke_modeler/world.rb
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
module CukeModeler
|
|
2
|
-
|
|
3
|
-
# A module providing suite level analysis functionality.
|
|
4
|
-
|
|
5
|
-
module World
|
|
6
|
-
|
|
7
|
-
# A placeholder string used to mark 'dirty' portions of input strings
|
|
8
|
-
SANITARY_STRING = '___SANITIZED_BY_CUCUMBER_ANALYTICS___'
|
|
9
|
-
|
|
10
|
-
# A pattern that matches a Cucumber step keyword
|
|
11
|
-
STEP_DEF_KEYWORD_PATTERN = '(?:Given|When|Then|And|But)'
|
|
12
|
-
|
|
13
|
-
# A pattern that matches a 'clean' regular expression
|
|
14
|
-
REGEX_PATTERN_STRING = '\/[^\/]*\/'
|
|
15
|
-
|
|
16
|
-
# A pattern that matches a step definition declaration line
|
|
17
|
-
STEP_DEF_LINE_PATTERN = /^\s*#{World::STEP_DEF_KEYWORD_PATTERN}\s*\(?\s*#{REGEX_PATTERN_STRING}\s*\)?/
|
|
18
|
-
|
|
19
|
-
# A pattern that captures the regular expression portion of a step definition declaration line
|
|
20
|
-
STEP_DEF_PATTERN_CAPTURE_PATTERN = /^\s*#{World::STEP_DEF_KEYWORD_PATTERN}\s*\(?\s*(#{REGEX_PATTERN_STRING})\s*\)?/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class << self
|
|
24
|
-
|
|
25
|
-
# Returns the left delimiter, which is used to mark the beginning of a step
|
|
26
|
-
# argument.
|
|
27
|
-
def left_delimiter
|
|
28
|
-
@left_delimiter
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Sets the left delimiter that will be used by default when determining
|
|
32
|
-
# step arguments.
|
|
33
|
-
def left_delimiter=(new_delimiter)
|
|
34
|
-
@left_delimiter = new_delimiter
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Returns the right delimiter, which is used to mark the end of a step
|
|
38
|
-
# argument.
|
|
39
|
-
def right_delimiter
|
|
40
|
-
@right_delimiter
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Sets the right delimiter that will be used by default when determining
|
|
44
|
-
# step arguments.
|
|
45
|
-
def right_delimiter=(new_delimiter)
|
|
46
|
-
@right_delimiter = new_delimiter
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Sets the delimiter that will be used by default when determining the
|
|
50
|
-
# boundaries of step arguments.
|
|
51
|
-
def delimiter=(new_delimiter)
|
|
52
|
-
self.left_delimiter = new_delimiter
|
|
53
|
-
self.right_delimiter = new_delimiter
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Loads the step patterns contained in the given file into the World.
|
|
57
|
-
def load_step_file(file_path)
|
|
58
|
-
File.open(file_path, 'r') do |file|
|
|
59
|
-
file.readlines.each do |line|
|
|
60
|
-
if step_def_line?(line)
|
|
61
|
-
the_reg_ex = extract_regular_expression(line)
|
|
62
|
-
loaded_step_patterns << the_reg_ex
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Loads the step pattern into the World.
|
|
69
|
-
def load_step_pattern(pattern)
|
|
70
|
-
loaded_step_patterns << pattern
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Returns the step patterns that have been loaded into the World.
|
|
74
|
-
def loaded_step_patterns
|
|
75
|
-
@defined_expressions ||= []
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# Clears the step patterns that have been loaded into the World.
|
|
79
|
-
def clear_step_patterns
|
|
80
|
-
@defined_expressions = []
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
private
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
# Make life easier by ensuring that the only forward slashes in the
|
|
88
|
-
# regular expression are the important ones.
|
|
89
|
-
def sanitize_line(line)
|
|
90
|
-
line.gsub('\/', SANITARY_STRING)
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# And be sure to restore the line to its original state.
|
|
94
|
-
def desanitize_line(line)
|
|
95
|
-
line.gsub(SANITARY_STRING, '\/')
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# Returns whether or not the passed line is a step pattern.
|
|
99
|
-
def step_def_line?(line)
|
|
100
|
-
!!(sanitize_line(line) =~ STEP_DEF_LINE_PATTERN)
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# Returns the regular expression portion of a step pattern line.
|
|
104
|
-
def extract_regular_expression(line)
|
|
105
|
-
line = desanitize_line(sanitize_line(line).match(STEP_DEF_PATTERN_CAPTURE_PATTERN)[1])
|
|
106
|
-
line = line.slice(1..(line.length - 2))
|
|
107
|
-
|
|
108
|
-
Regexp.new(line)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
SimpleCov.command_name('TableRow') unless RUBY_VERSION.to_s < '1.9.0'
|
|
4
|
-
|
|
5
|
-
describe 'TableRow, Integration' do
|
|
6
|
-
|
|
7
|
-
let(:clazz) { CukeModeler::TableRow }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
describe 'unique behavior' do
|
|
11
|
-
|
|
12
|
-
describe 'getting ancestors' do
|
|
13
|
-
|
|
14
|
-
before(:each) do
|
|
15
|
-
source = ['Feature: Test feature',
|
|
16
|
-
'',
|
|
17
|
-
' Scenario: Test test',
|
|
18
|
-
' * a step:',
|
|
19
|
-
' | a | table |']
|
|
20
|
-
source = source.join("\n")
|
|
21
|
-
|
|
22
|
-
file_path = "#{@default_file_directory}/table_row_test_file.feature"
|
|
23
|
-
File.open(file_path, 'w') { |file| file.write(source) }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
|
|
27
|
-
let(:table_row) { directory.feature_files.first.features.first.tests.first.steps.first.block.row_elements.first }
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
it 'can get its directory' do
|
|
31
|
-
ancestor = table_row.get_ancestor(:directory)
|
|
32
|
-
|
|
33
|
-
ancestor.should equal directory
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'can get its feature file' do
|
|
37
|
-
ancestor = table_row.get_ancestor(:feature_file)
|
|
38
|
-
|
|
39
|
-
ancestor.should equal directory.feature_files.first
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it 'can get its feature' do
|
|
43
|
-
ancestor = table_row.get_ancestor(:feature)
|
|
44
|
-
|
|
45
|
-
ancestor.should equal directory.feature_files.first.features.first
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it 'can get its test' do
|
|
49
|
-
ancestor = table_row.get_ancestor(:test)
|
|
50
|
-
|
|
51
|
-
ancestor.should equal directory.feature_files.first.features.first.tests.first
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'can get its step' do
|
|
55
|
-
ancestor = table_row.get_ancestor(:step)
|
|
56
|
-
|
|
57
|
-
ancestor.should equal directory.feature_files.first.features.first.tests.first.steps.first
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it 'can get its table' do
|
|
61
|
-
ancestor = table_row.get_ancestor(:table)
|
|
62
|
-
|
|
63
|
-
ancestor.should equal directory.feature_files.first.features.first.tests.first.steps.first.block
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it 'returns nil if it does not have the requested type of ancestor' do
|
|
67
|
-
ancestor = table_row.get_ancestor(:example)
|
|
68
|
-
|
|
69
|
-
ancestor.should be_nil
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
SimpleCov.command_name('World') unless RUBY_VERSION.to_s < '1.9.0'
|
|
4
|
-
|
|
5
|
-
describe 'World, Integration' do
|
|
6
|
-
|
|
7
|
-
let(:world) { CukeModeler::World }
|
|
8
|
-
|
|
9
|
-
before(:each) do
|
|
10
|
-
@world.loaded_step_patterns.clear
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# Nothing left to do here for now.
|
|
14
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a containing element' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:element) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has children' do
|
|
11
|
-
element.should respond_to(:contains)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'returns a collection of children' do
|
|
15
|
-
element.contains.is_a?(Array).should be_true
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
SimpleCov.command_name('FeatureElement') unless RUBY_VERSION.to_s < '1.9.0'
|
|
4
|
-
|
|
5
|
-
describe 'FeatureElement, Unit' do
|
|
6
|
-
|
|
7
|
-
let(:clazz) { CukeModeler::FeatureElement }
|
|
8
|
-
let(:element) { clazz.new }
|
|
9
|
-
|
|
10
|
-
describe 'common behavior' do
|
|
11
|
-
|
|
12
|
-
it_should_behave_like 'a feature element'
|
|
13
|
-
it_should_behave_like 'a nested element'
|
|
14
|
-
it_should_behave_like 'a prepopulated element'
|
|
15
|
-
it_should_behave_like 'a bare bones element'
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
end
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a feature element' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:element) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has a name' do
|
|
11
|
-
element.should respond_to(:name)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its name' do
|
|
15
|
-
expect(element).to respond_to(:name=)
|
|
16
|
-
|
|
17
|
-
element.name = :some_name
|
|
18
|
-
element.name.should == :some_name
|
|
19
|
-
element.name = :some_other_name
|
|
20
|
-
element.name.should == :some_other_name
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'has a description' do
|
|
24
|
-
element.should respond_to(:description)
|
|
25
|
-
element.should respond_to(:description_text)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it 'can get and set its description' do
|
|
29
|
-
expect(element).to respond_to(:description=)
|
|
30
|
-
expect(element).to respond_to(:description_text=)
|
|
31
|
-
|
|
32
|
-
element.description = :some_description
|
|
33
|
-
element.description.should == :some_description
|
|
34
|
-
element.description = :some_other_description
|
|
35
|
-
element.description.should == :some_other_description
|
|
36
|
-
|
|
37
|
-
element.description_text = :some_description
|
|
38
|
-
element.description_text.should == :some_description
|
|
39
|
-
element.description_text = :some_other_description
|
|
40
|
-
element.description_text.should == :some_other_description
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it 'starts with no name' do
|
|
44
|
-
element.name.should == ''
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it 'starts with no description' do
|
|
48
|
-
element.description.should == []
|
|
49
|
-
element.description_text.should == ''
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a nested element' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:nested_element) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has a parent element' do
|
|
11
|
-
nested_element.should respond_to(:parent_element)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its parent element' do
|
|
15
|
-
expect(nested_element).to respond_to(:parent_element=)
|
|
16
|
-
|
|
17
|
-
nested_element.parent_element = :some_parent_element
|
|
18
|
-
nested_element.parent_element.should == :some_parent_element
|
|
19
|
-
nested_element.parent_element = :some_other_parent_element
|
|
20
|
-
nested_element.parent_element.should == :some_other_parent_element
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'starts with no parent element' do
|
|
24
|
-
nested_element.parent_element.should == nil
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'has access to its ancestors' do
|
|
28
|
-
nested_element.should respond_to(:get_ancestor)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'gets an ancestor based on type' do
|
|
32
|
-
(clazz.instance_method(:get_ancestor).arity == 1).should be_true
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it 'raises and exception if an unknown ancestor type is requested' do
|
|
36
|
-
expect { nested_element.get_ancestor(:bad_ancestor_type) }.to raise_exception(ArgumentError)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a prepopulated element' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:element) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'can take an argument' do
|
|
11
|
-
(clazz.instance_method(:initialize).arity != 0).should be_true
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a raw element' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:element) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has an underlying implementation representation' do
|
|
11
|
-
element.should respond_to(:raw_element)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its underlying implementation representation' do
|
|
15
|
-
expect(element).to respond_to(:raw_element=)
|
|
16
|
-
|
|
17
|
-
element.raw_element = :some_raw_element
|
|
18
|
-
element.raw_element.should == :some_raw_element
|
|
19
|
-
element.raw_element = :some_other_raw_element
|
|
20
|
-
element.raw_element.should == :some_other_raw_element
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'starts with no underlying implementation representation' do
|
|
24
|
-
element.raw_element.should == nil
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
end
|