cucumber-in-the-yard 1.3 → 1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/History.txt +24 -0
  2. data/Manifest +54 -41
  3. data/README.md +45 -1
  4. data/Rakefile +4 -3
  5. data/cucumber-in-the-yard.gemspec +5 -5
  6. data/example/{example.step.rb → step_definitions/example.step.rb} +0 -0
  7. data/example/step_definitions/support/env.rb +0 -0
  8. data/example/step_definitions/support/env_support.rb +0 -0
  9. data/example/step_definitions/support/support.rb +0 -0
  10. data/features/definitions/city_step.rb +89 -0
  11. data/features/definitions/test.setup.and.teardown.rb +27 -0
  12. data/features/features.feature +44 -0
  13. data/lib/city.rb +20 -11
  14. data/lib/cucumber/city_builder.rb +60 -55
  15. data/lib/templates/default/feature/html/background.erb +92 -0
  16. data/lib/templates/default/feature/html/feature.erb +22 -0
  17. data/lib/templates/default/feature/html/no_steps_defined.erb +1 -0
  18. data/lib/templates/default/feature/html/outline.erb +19 -0
  19. data/lib/templates/default/feature/html/pystring.erb +3 -0
  20. data/lib/templates/default/feature/html/scenario.erb +43 -0
  21. data/lib/templates/default/feature/html/steps.erb +34 -0
  22. data/lib/templates/default/feature/html/table.erb +20 -0
  23. data/lib/templates/default/feature/setup.rb +28 -0
  24. data/lib/{yard/templates → templates}/default/fulldoc/html/css/common.css +0 -0
  25. data/lib/{yard/templates → templates}/default/fulldoc/html/full_list.erb +0 -0
  26. data/lib/templates/default/fulldoc/html/full_list_features.erb +7 -0
  27. data/lib/templates/default/fulldoc/html/full_list_requirements.erb +1 -0
  28. data/lib/templates/default/fulldoc/html/full_list_scenarios.erb +8 -0
  29. data/lib/{yard/templates → templates}/default/fulldoc/html/full_list_stepdefinitions.erb +2 -2
  30. data/lib/{yard/templates → templates}/default/fulldoc/html/full_list_steps.erb +0 -0
  31. data/lib/templates/default/fulldoc/html/full_list_tags.erb +8 -0
  32. data/lib/{yard/templates → templates}/default/fulldoc/html/index.erb +0 -0
  33. data/lib/{yard/templates → templates}/default/fulldoc/html/js/cucumber.js +1 -1
  34. data/lib/templates/default/fulldoc/html/setup.rb +56 -0
  35. data/lib/{yard/templates → templates}/default/layout/html/headers.erb +0 -0
  36. data/lib/{yard/templates → templates}/default/layout/html/search.erb +0 -0
  37. data/lib/{yard/templates → templates}/default/scenario/html/scenario.erb +0 -0
  38. data/lib/{yard/templates → templates}/default/scenario/setup.rb +0 -0
  39. data/lib/templates/default/steptransformers/html/stepdefinition.erb +38 -0
  40. data/lib/templates/default/steptransformers/html/steptransformers.erb +7 -0
  41. data/lib/templates/default/steptransformers/setup.rb +17 -0
  42. data/lib/templates/default/tag/html/feature.erb +23 -0
  43. data/lib/templates/default/tag/html/scenario.erb +21 -0
  44. data/lib/templates/default/tag/html/tag.erb +18 -0
  45. data/lib/templates/default/tag/setup.rb +5 -0
  46. data/lib/yard/code_objects/{base.rb → cucumber/base.rb} +3 -9
  47. data/lib/yard/code_objects/{feature.rb → cucumber/feature.rb} +1 -1
  48. data/lib/yard/code_objects/cucumber/namespace_object.rb +18 -0
  49. data/lib/yard/code_objects/{scenario.rb → cucumber/scenario.rb} +1 -1
  50. data/lib/yard/code_objects/{step.rb → cucumber/step.rb} +0 -0
  51. data/lib/yard/code_objects/cucumber/tag.rb +27 -0
  52. data/lib/yard/{extensions.rb → code_objects/namespace_object.rb} +11 -2
  53. data/lib/yard/code_objects/step_definition.rb +38 -0
  54. data/lib/yard/code_objects/step_transform.rb +14 -0
  55. data/lib/yard/handlers/{base.rb → cucumber/base.rb} +0 -0
  56. data/lib/yard/handlers/{feature_handler.rb → cucumber/feature_handler.rb} +3 -2
  57. data/lib/yard/handlers/step_definition_handler.rb +57 -0
  58. data/lib/yard/handlers/step_transform_handler.rb +21 -0
  59. data/lib/yard/parser/{feature.rb → cucumber/feature.rb} +0 -0
  60. data/lib/yard/parser/source_parser.rb +54 -0
  61. data/lib/yard/rake/city_task.rb +1 -1
  62. data/lib/yard/templates/helpers/base_helper.rb +20 -0
  63. metadata +105 -77
  64. data/lib/yard/code_objects/tags.rb +0 -55
  65. data/lib/yard/rb_extensions.rb +0 -156
  66. data/lib/yard/templates/default/feature/html/feature.erb +0 -245
  67. data/lib/yard/templates/default/feature/setup.rb +0 -5
  68. data/lib/yard/templates/default/fulldoc/html/full_list_features.erb +0 -10
  69. data/lib/yard/templates/default/fulldoc/html/full_list_scenarios.erb +0 -10
  70. data/lib/yard/templates/default/fulldoc/html/full_list_tagusages.erb +0 -10
  71. data/lib/yard/templates/default/fulldoc/html/setup.rb +0 -73
  72. data/lib/yard/templates/default/module/html/step_transforms.erb +0 -23
  73. data/lib/yard/templates/default/module/setup.rb +0 -5
  74. data/lib/yard/templates/default/steptransformers/html/stepdefinition.erb +0 -50
  75. data/lib/yard/templates/default/steptransformers/setup.rb +0 -5
  76. data/lib/yard/templates/default/tagusage/html/tagusage.erb +0 -65
  77. data/lib/yard/templates/default/tagusage/setup.rb +0 -5
  78. data/spec/city/feature_parser_spec_examples.rb +0 -153
  79. data/spec/city/gherkin_loader_spec.rb +0 -39
  80. data/spec/city/test.feature +0 -36
  81. data/spec/city/yard_handlers_cucumber_spec.rb +0 -24
  82. data/spec/city/yard_namespace_object_spec.rb +0 -8
  83. data/spec/city/yard_parser_cucumber_spec.rb +0 -215
  84. data/spec/city/yard_rb_extensions_spec.rb +0 -128
  85. data/spec/spec_helper.rb +0 -5
data/History.txt CHANGED
@@ -1,3 +1,27 @@
1
+ === 1.4 / 2010-10-17
2
+
3
+ * Tagusage has been retired
4
+ * Tags are found during parsing by name or created and all uses are appended to the exising or newly created object
5
+ * Tagusage template renamed and fixed up for just a tag and all the references
6
+ * Tags are named tag_TAG (removed the @ as it was encoded during file serialization and I couldn't find an encoder helper)
7
+ * Cleaned up all references in the fulldoc, full list to references tags
8
+
9
+ * Moved Cucumber CodeObjects, Handlers, and Parsers to a Cucumber sub-directory
10
+ * Moved StepDefinition and StepTransforms form extensions.rb to individual StepObject and Handlers files
11
+
12
+ * (lsegal advice) Created Cucumber Namespace and sub namespaces for features, tags, and step transformers.
13
+ * (lsegal advice) Started to break apart the feature.erb into smaller digestable erb sections
14
+
15
+ * Feature namespace now parallels the directory structure of the feature directory (from where it is parsed)
16
+ * Feature files have simpler names; i.e. featurefile.html instead of featurefile.feature.html
17
+ * Feature page title now states Feature: The Feature ( KEYWORD: FEATURE_TITLE )
18
+ * Moved the templates to lib/templates so I could use yard/templates to override the YARD helpers
19
+
20
+ * Changed document parsing to mirror the order imposed by Cucumber, this is to stop features being loaded before step definitions.
21
+ This should hopefully address the issue where steps were not being mapped correctly to step definitions. This fixed the issue
22
+ in the small and large test suite I ran it against.
23
+
24
+
1
25
  === 1.3 / 2010-10-13
2
26
 
3
27
  * (7rans requested) Step definitions to show their source code; required a better source definition to be stored during creation of the CodeObject
data/Manifest CHANGED
@@ -4,49 +4,62 @@ README.md
4
4
  Rakefile
5
5
  example/empty.feature
6
6
  example/example.feature
7
- example/example.step.rb
8
7
  example/example.third.feature
9
8
  example/second_example.feature
9
+ example/step_definitions/example.step.rb
10
+ example/step_definitions/support/env.rb
11
+ example/step_definitions/support/env_support.rb
12
+ example/step_definitions/support/support.rb
13
+ features/definitions/city_step.rb
14
+ features/definitions/test.setup.and.teardown.rb
15
+ features/features.feature
10
16
  lib/city.rb
11
17
  lib/cucumber/city_builder.rb
12
- lib/yard/code_objects/base.rb
13
- lib/yard/code_objects/feature.rb
14
- lib/yard/code_objects/scenario.rb
15
- lib/yard/code_objects/step.rb
16
- lib/yard/code_objects/tags.rb
17
- lib/yard/extensions.rb
18
- lib/yard/handlers/base.rb
19
- lib/yard/handlers/feature_handler.rb
20
- lib/yard/parser/feature.rb
18
+ lib/templates/default/feature/html/background.erb
19
+ lib/templates/default/feature/html/feature.erb
20
+ lib/templates/default/feature/html/no_steps_defined.erb
21
+ lib/templates/default/feature/html/outline.erb
22
+ lib/templates/default/feature/html/pystring.erb
23
+ lib/templates/default/feature/html/scenario.erb
24
+ lib/templates/default/feature/html/steps.erb
25
+ lib/templates/default/feature/html/table.erb
26
+ lib/templates/default/feature/setup.rb
27
+ lib/templates/default/fulldoc/html/css/common.css
28
+ lib/templates/default/fulldoc/html/full_list.erb
29
+ lib/templates/default/fulldoc/html/full_list_features.erb
30
+ lib/templates/default/fulldoc/html/full_list_requirements.erb
31
+ lib/templates/default/fulldoc/html/full_list_scenarios.erb
32
+ lib/templates/default/fulldoc/html/full_list_stepdefinitions.erb
33
+ lib/templates/default/fulldoc/html/full_list_steps.erb
34
+ lib/templates/default/fulldoc/html/full_list_tags.erb
35
+ lib/templates/default/fulldoc/html/index.erb
36
+ lib/templates/default/fulldoc/html/js/cucumber.js
37
+ lib/templates/default/fulldoc/html/setup.rb
38
+ lib/templates/default/layout/html/headers.erb
39
+ lib/templates/default/layout/html/search.erb
40
+ lib/templates/default/scenario/html/scenario.erb
41
+ lib/templates/default/scenario/setup.rb
42
+ lib/templates/default/steptransformers/html/stepdefinition.erb
43
+ lib/templates/default/steptransformers/html/steptransformers.erb
44
+ lib/templates/default/steptransformers/setup.rb
45
+ lib/templates/default/tag/html/feature.erb
46
+ lib/templates/default/tag/html/scenario.erb
47
+ lib/templates/default/tag/html/tag.erb
48
+ lib/templates/default/tag/setup.rb
49
+ lib/yard/code_objects/cucumber/base.rb
50
+ lib/yard/code_objects/cucumber/feature.rb
51
+ lib/yard/code_objects/cucumber/namespace_object.rb
52
+ lib/yard/code_objects/cucumber/scenario.rb
53
+ lib/yard/code_objects/cucumber/step.rb
54
+ lib/yard/code_objects/cucumber/tag.rb
55
+ lib/yard/code_objects/namespace_object.rb
56
+ lib/yard/code_objects/step_definition.rb
57
+ lib/yard/code_objects/step_transform.rb
58
+ lib/yard/handlers/cucumber/base.rb
59
+ lib/yard/handlers/cucumber/feature_handler.rb
60
+ lib/yard/handlers/step_definition_handler.rb
61
+ lib/yard/handlers/step_transform_handler.rb
62
+ lib/yard/parser/cucumber/feature.rb
63
+ lib/yard/parser/source_parser.rb
21
64
  lib/yard/rake/city_task.rb
22
- lib/yard/rb_extensions.rb
23
- lib/yard/templates/default/feature/html/feature.erb
24
- lib/yard/templates/default/feature/setup.rb
25
- lib/yard/templates/default/fulldoc/html/css/common.css
26
- lib/yard/templates/default/fulldoc/html/full_list.erb
27
- lib/yard/templates/default/fulldoc/html/full_list_features.erb
28
- lib/yard/templates/default/fulldoc/html/full_list_scenarios.erb
29
- lib/yard/templates/default/fulldoc/html/full_list_stepdefinitions.erb
30
- lib/yard/templates/default/fulldoc/html/full_list_steps.erb
31
- lib/yard/templates/default/fulldoc/html/full_list_tagusages.erb
32
- lib/yard/templates/default/fulldoc/html/index.erb
33
- lib/yard/templates/default/fulldoc/html/js/cucumber.js
34
- lib/yard/templates/default/fulldoc/html/setup.rb
35
- lib/yard/templates/default/layout/html/headers.erb
36
- lib/yard/templates/default/layout/html/search.erb
37
- lib/yard/templates/default/module/html/step_transforms.erb
38
- lib/yard/templates/default/module/setup.rb
39
- lib/yard/templates/default/scenario/html/scenario.erb
40
- lib/yard/templates/default/scenario/setup.rb
41
- lib/yard/templates/default/steptransformers/html/stepdefinition.erb
42
- lib/yard/templates/default/steptransformers/setup.rb
43
- lib/yard/templates/default/tagusage/html/tagusage.erb
44
- lib/yard/templates/default/tagusage/setup.rb
45
- spec/city/feature_parser_spec_examples.rb
46
- spec/city/gherkin_loader_spec.rb
47
- spec/city/test.feature
48
- spec/city/yard_handlers_cucumber_spec.rb
49
- spec/city/yard_namespace_object_spec.rb
50
- spec/city/yard_parser_cucumber_spec.rb
51
- spec/city/yard_rb_extensions_spec.rb
52
- spec/spec_helper.rb
65
+ lib/yard/templates/helpers/base_helper.rb
data/README.md CHANGED
@@ -19,6 +19,8 @@ An example, particularly the example features included with the project, of CITY
19
19
  **1. Users are able to search by Feature, Tags, and Scenario.**
20
20
 
21
21
  Appended to the traditional search areas is the ability to now search by Feature, Tag, and Scenario.
22
+ The user is able to search by steps, though I have not placed those links on the page, in step_list.html
23
+ found in the root of the output directory.
22
24
 
23
25
  **2. Feature pages are displayed in a decently formatted HTML representation**
24
26
 
@@ -32,7 +34,7 @@ Providing quick access to the important tag divisions that have been created in
32
34
  On the top of the page there are some quick calculations of the number of features and scenarios that
33
35
  share the specified tag.
34
36
 
35
- **4. Steps link to Step definitions. Step definitions show all uses. **
37
+ **4. Steps link to Step definitions. Step definitions show all uses.**
36
38
 
37
39
  Step definitions are displayed in their own index page and for each step definition a list of implemented
38
40
  steps for this step definition. This is useful for providing example documentation and quickly understanding
@@ -108,6 +110,48 @@ scale to test the functionality of small software component. Though, ultimately
108
110
  functionality may provide a valuable tool for many as I feel it helps more solidly bridge the reporting of
109
111
  the documentation by putting a coat of paint on it.
110
112
 
113
+ Roadmap
114
+ -------
115
+
116
+ **Version 1**
117
+
118
+ Current feature set is all that I had planned for this first release.
119
+
120
+ **1. Users are able to search by Feature, Tags, and Scenario.**
121
+ **2. Feature pages are displayed in a decently formatted HTML representation**
122
+ **3. Tag pages display all the Features and scenarios that currently employ the tag.**
123
+ **4. Steps link to Step definitions. Step definitions show all uses.**
124
+
125
+ Subsequent updates are fixes or enhancements to the fundamental structure behind the scenes. Lsegal,
126
+ has been extremely helpful in assisting me with the re-organization and refinement of this first release.
127
+
128
+ **Future Feature Ideas**
129
+
130
+ **1. Users are able to search Features, Scenarios, and Tags in a unified search box.**
131
+
132
+ I want to rid the three added search fields and provide one unified search field that will use YARD's
133
+ namespace structure (similar to how Class List works).
134
+
135
+ **2. Tag pages provide the ability to exclude other tags that intersect.**
136
+
137
+ Adding a list of tags currently used by the features and scenarios in the below list (that are not the
138
+ current tag). Allowing the visualization of what the execution of the requirements pass would look like.
139
+ Output of a sample generated tag command-line would be displayed to assist with execution. On selection
140
+ update of the total features and scenarios affected by the changes in the filtering.
141
+
142
+ I would like to also address some layout and formatting on the page. Scenarios will also link to the scenarios
143
+ feature page, show their descriptions, and of course all their other tags.
144
+
145
+ **3. Step Trasnforms would be displayed where they are used**
146
+
147
+ These tricky pieces of code tend to trip me up and others on the project. I want to be able to show which steps
148
+ that have mapped to step definitions are being affected by step transforms.
149
+
150
+ **4. Highlight the sections of steps that match in the step definition**
151
+
152
+ Similar to the great output that Cucumber uses to show what is the variable part of the step definition, I would like
153
+ to have the steps displayed differently to illustrate that they are the variable in the statement.
154
+
111
155
 
112
156
  LICENSE
113
157
  -------
data/Rakefile CHANGED
@@ -4,11 +4,12 @@ require 'echoe'
4
4
  task :default => :gendoc
5
5
 
6
6
  task :gendoc do
7
- `yardoc -e lib/city.rb -p lib/yard/templates 'example/**/*.rb' 'example/**/*.feature' --debug`
7
+ `rm -rf doc`
8
+ `yardoc -e lib/city.rb -p lib/templates 'example/**/*' --debug`
8
9
  end
9
10
 
10
- Echoe.new('cucumber-in-the-yard', '1.3') do |g|
11
- g.author = "Frank;lin Webber"
11
+ Echoe.new('cucumber-in-the-yard', '1.4') do |g|
12
+ g.author = "Franklin Webber"
12
13
  g.email = "franklin.webber@gmail.com"
13
14
  g.url = "http://github.com/burtlo/Cucumber-In-The-Yard"
14
15
  g.description = %{
@@ -2,19 +2,19 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{cucumber-in-the-yard}
5
- s.version = "1.3"
5
+ s.version = "1.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Frank;lin Webber"]
9
- s.date = %q{2010-10-13}
8
+ s.authors = ["Franklin Webber"]
9
+ s.date = %q{2010-10-17}
10
10
  s.description = %q{
11
11
  Cucumber-In-The-Yard is a YARD extension that processes Cucumber Features, Scenarios, Steps,
12
12
  Step Definitions, Transforms, and Tags and provides a documentation interface that allows you
13
13
  easily view and investigate the test suite. This tools hopes to bridge the gap of being able
14
14
  to provide your feature descriptions to your Product Owners and Stakeholders. }
15
15
  s.email = %q{franklin.webber@gmail.com}
16
- s.extra_rdoc_files = ["README.md", "lib/city.rb", "lib/cucumber/city_builder.rb", "lib/yard/code_objects/base.rb", "lib/yard/code_objects/feature.rb", "lib/yard/code_objects/scenario.rb", "lib/yard/code_objects/step.rb", "lib/yard/code_objects/tags.rb", "lib/yard/extensions.rb", "lib/yard/handlers/base.rb", "lib/yard/handlers/feature_handler.rb", "lib/yard/parser/feature.rb", "lib/yard/rake/city_task.rb", "lib/yard/rb_extensions.rb", "lib/yard/templates/default/feature/html/feature.erb", "lib/yard/templates/default/feature/setup.rb", "lib/yard/templates/default/fulldoc/html/css/common.css", "lib/yard/templates/default/fulldoc/html/full_list.erb", "lib/yard/templates/default/fulldoc/html/full_list_features.erb", "lib/yard/templates/default/fulldoc/html/full_list_scenarios.erb", "lib/yard/templates/default/fulldoc/html/full_list_stepdefinitions.erb", "lib/yard/templates/default/fulldoc/html/full_list_steps.erb", "lib/yard/templates/default/fulldoc/html/full_list_tagusages.erb", "lib/yard/templates/default/fulldoc/html/index.erb", "lib/yard/templates/default/fulldoc/html/js/cucumber.js", "lib/yard/templates/default/fulldoc/html/setup.rb", "lib/yard/templates/default/layout/html/headers.erb", "lib/yard/templates/default/layout/html/search.erb", "lib/yard/templates/default/module/html/step_transforms.erb", "lib/yard/templates/default/module/setup.rb", "lib/yard/templates/default/scenario/html/scenario.erb", "lib/yard/templates/default/scenario/setup.rb", "lib/yard/templates/default/steptransformers/html/stepdefinition.erb", "lib/yard/templates/default/steptransformers/setup.rb", "lib/yard/templates/default/tagusage/html/tagusage.erb", "lib/yard/templates/default/tagusage/setup.rb"]
17
- s.files = ["History.txt", "Manifest", "README.md", "Rakefile", "example/empty.feature", "example/example.feature", "example/example.step.rb", "example/example.third.feature", "example/second_example.feature", "lib/city.rb", "lib/cucumber/city_builder.rb", "lib/yard/code_objects/base.rb", "lib/yard/code_objects/feature.rb", "lib/yard/code_objects/scenario.rb", "lib/yard/code_objects/step.rb", "lib/yard/code_objects/tags.rb", "lib/yard/extensions.rb", "lib/yard/handlers/base.rb", "lib/yard/handlers/feature_handler.rb", "lib/yard/parser/feature.rb", "lib/yard/rake/city_task.rb", "lib/yard/rb_extensions.rb", "lib/yard/templates/default/feature/html/feature.erb", "lib/yard/templates/default/feature/setup.rb", "lib/yard/templates/default/fulldoc/html/css/common.css", "lib/yard/templates/default/fulldoc/html/full_list.erb", "lib/yard/templates/default/fulldoc/html/full_list_features.erb", "lib/yard/templates/default/fulldoc/html/full_list_scenarios.erb", "lib/yard/templates/default/fulldoc/html/full_list_stepdefinitions.erb", "lib/yard/templates/default/fulldoc/html/full_list_steps.erb", "lib/yard/templates/default/fulldoc/html/full_list_tagusages.erb", "lib/yard/templates/default/fulldoc/html/index.erb", "lib/yard/templates/default/fulldoc/html/js/cucumber.js", "lib/yard/templates/default/fulldoc/html/setup.rb", "lib/yard/templates/default/layout/html/headers.erb", "lib/yard/templates/default/layout/html/search.erb", "lib/yard/templates/default/module/html/step_transforms.erb", "lib/yard/templates/default/module/setup.rb", "lib/yard/templates/default/scenario/html/scenario.erb", "lib/yard/templates/default/scenario/setup.rb", "lib/yard/templates/default/steptransformers/html/stepdefinition.erb", "lib/yard/templates/default/steptransformers/setup.rb", "lib/yard/templates/default/tagusage/html/tagusage.erb", "lib/yard/templates/default/tagusage/setup.rb", "spec/city/feature_parser_spec_examples.rb", "spec/city/gherkin_loader_spec.rb", "spec/city/test.feature", "spec/city/yard_handlers_cucumber_spec.rb", "spec/city/yard_namespace_object_spec.rb", "spec/city/yard_parser_cucumber_spec.rb", "spec/city/yard_rb_extensions_spec.rb", "spec/spec_helper.rb", "cucumber-in-the-yard.gemspec"]
16
+ s.extra_rdoc_files = ["README.md", "lib/city.rb", "lib/cucumber/city_builder.rb", "lib/templates/default/feature/html/background.erb", "lib/templates/default/feature/html/feature.erb", "lib/templates/default/feature/html/no_steps_defined.erb", "lib/templates/default/feature/html/outline.erb", "lib/templates/default/feature/html/pystring.erb", "lib/templates/default/feature/html/scenario.erb", "lib/templates/default/feature/html/steps.erb", "lib/templates/default/feature/html/table.erb", "lib/templates/default/feature/setup.rb", "lib/templates/default/fulldoc/html/css/common.css", "lib/templates/default/fulldoc/html/full_list.erb", "lib/templates/default/fulldoc/html/full_list_features.erb", "lib/templates/default/fulldoc/html/full_list_requirements.erb", "lib/templates/default/fulldoc/html/full_list_scenarios.erb", "lib/templates/default/fulldoc/html/full_list_stepdefinitions.erb", "lib/templates/default/fulldoc/html/full_list_steps.erb", "lib/templates/default/fulldoc/html/full_list_tags.erb", "lib/templates/default/fulldoc/html/index.erb", "lib/templates/default/fulldoc/html/js/cucumber.js", "lib/templates/default/fulldoc/html/setup.rb", "lib/templates/default/layout/html/headers.erb", "lib/templates/default/layout/html/search.erb", "lib/templates/default/scenario/html/scenario.erb", "lib/templates/default/scenario/setup.rb", "lib/templates/default/steptransformers/html/stepdefinition.erb", "lib/templates/default/steptransformers/html/steptransformers.erb", "lib/templates/default/steptransformers/setup.rb", "lib/templates/default/tag/html/feature.erb", "lib/templates/default/tag/html/scenario.erb", "lib/templates/default/tag/html/tag.erb", "lib/templates/default/tag/setup.rb", "lib/yard/code_objects/cucumber/base.rb", "lib/yard/code_objects/cucumber/feature.rb", "lib/yard/code_objects/cucumber/namespace_object.rb", "lib/yard/code_objects/cucumber/scenario.rb", "lib/yard/code_objects/cucumber/step.rb", "lib/yard/code_objects/cucumber/tag.rb", "lib/yard/code_objects/namespace_object.rb", "lib/yard/code_objects/step_definition.rb", "lib/yard/code_objects/step_transform.rb", "lib/yard/handlers/cucumber/base.rb", "lib/yard/handlers/cucumber/feature_handler.rb", "lib/yard/handlers/step_definition_handler.rb", "lib/yard/handlers/step_transform_handler.rb", "lib/yard/parser/cucumber/feature.rb", "lib/yard/parser/source_parser.rb", "lib/yard/rake/city_task.rb", "lib/yard/templates/helpers/base_helper.rb"]
17
+ s.files = ["History.txt", "Manifest", "README.md", "Rakefile", "example/empty.feature", "example/example.feature", "example/example.third.feature", "example/second_example.feature", "example/step_definitions/example.step.rb", "example/step_definitions/support/env.rb", "example/step_definitions/support/env_support.rb", "example/step_definitions/support/support.rb", "features/definitions/city_step.rb", "features/definitions/test.setup.and.teardown.rb", "features/features.feature", "lib/city.rb", "lib/cucumber/city_builder.rb", "lib/templates/default/feature/html/background.erb", "lib/templates/default/feature/html/feature.erb", "lib/templates/default/feature/html/no_steps_defined.erb", "lib/templates/default/feature/html/outline.erb", "lib/templates/default/feature/html/pystring.erb", "lib/templates/default/feature/html/scenario.erb", "lib/templates/default/feature/html/steps.erb", "lib/templates/default/feature/html/table.erb", "lib/templates/default/feature/setup.rb", "lib/templates/default/fulldoc/html/css/common.css", "lib/templates/default/fulldoc/html/full_list.erb", "lib/templates/default/fulldoc/html/full_list_features.erb", "lib/templates/default/fulldoc/html/full_list_requirements.erb", "lib/templates/default/fulldoc/html/full_list_scenarios.erb", "lib/templates/default/fulldoc/html/full_list_stepdefinitions.erb", "lib/templates/default/fulldoc/html/full_list_steps.erb", "lib/templates/default/fulldoc/html/full_list_tags.erb", "lib/templates/default/fulldoc/html/index.erb", "lib/templates/default/fulldoc/html/js/cucumber.js", "lib/templates/default/fulldoc/html/setup.rb", "lib/templates/default/layout/html/headers.erb", "lib/templates/default/layout/html/search.erb", "lib/templates/default/scenario/html/scenario.erb", "lib/templates/default/scenario/setup.rb", "lib/templates/default/steptransformers/html/stepdefinition.erb", "lib/templates/default/steptransformers/html/steptransformers.erb", "lib/templates/default/steptransformers/setup.rb", "lib/templates/default/tag/html/feature.erb", "lib/templates/default/tag/html/scenario.erb", "lib/templates/default/tag/html/tag.erb", "lib/templates/default/tag/setup.rb", "lib/yard/code_objects/cucumber/base.rb", "lib/yard/code_objects/cucumber/feature.rb", "lib/yard/code_objects/cucumber/namespace_object.rb", "lib/yard/code_objects/cucumber/scenario.rb", "lib/yard/code_objects/cucumber/step.rb", "lib/yard/code_objects/cucumber/tag.rb", "lib/yard/code_objects/namespace_object.rb", "lib/yard/code_objects/step_definition.rb", "lib/yard/code_objects/step_transform.rb", "lib/yard/handlers/cucumber/base.rb", "lib/yard/handlers/cucumber/feature_handler.rb", "lib/yard/handlers/step_definition_handler.rb", "lib/yard/handlers/step_transform_handler.rb", "lib/yard/parser/cucumber/feature.rb", "lib/yard/parser/source_parser.rb", "lib/yard/rake/city_task.rb", "lib/yard/templates/helpers/base_helper.rb", "cucumber-in-the-yard.gemspec"]
18
18
  s.homepage = %q{http://github.com/burtlo/Cucumber-In-The-Yard}
19
19
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Cucumber-in-the-yard", "--main", "README.md"]
20
20
  s.require_paths = ["lib"]
File without changes
File without changes
File without changes
@@ -0,0 +1,89 @@
1
+ require 'rexml/document'
2
+
3
+
4
+ TARGET_MATCH = /the feature/
5
+
6
+ Transform /^the feature$/ do |feauture|
7
+ @cache[:feature]
8
+ end
9
+
10
+
11
+ Given /^the feature file, '([^']+)', is the (feature) for the scenario$/ do |name,type|
12
+ @cache[type.to_sym] = name
13
+ end
14
+
15
+ Then /^I expect (#{TARGET_MATCH}) file (\w+) to exist at '([^']+)'$/ do |target,file_type,path|
16
+ file = "#{$env[:documents]}/#{path}/#{target}.#{file_type}"
17
+ File.should exist(file)
18
+ file
19
+ end
20
+
21
+ Then /^I expect the feature title to be '([^']+)'$/ do |title|
22
+ xml = REXML::Document.new(File.open("doc/requirements/features/features.html"))
23
+
24
+ actual_title = xml.elements["//title"].text
25
+ actual_title.should == title
26
+ end
27
+
28
+ Then /^I expect the feature heading to be '([^']+)'$/ do |title|
29
+ xml = REXML::Document.new(File.open("doc/requirements/features/features.html"))
30
+
31
+ actual_title = "#{xml.elements["//*[@class='feature']/*[@class='title']/*[@class='pre']"].text} " +
32
+ "#{xml.elements["//*[@class='feature']/*[@class='title']/*[@class='name']"].text}"
33
+
34
+ actual_title.should == title
35
+ end
36
+
37
+ Then /^I expect the feature to have the (@\w+) tag$/ do |tag|
38
+ xml = REXML::Document.new(File.open("doc/requirements/features/features.html"))
39
+
40
+ found = false
41
+
42
+ xml.elements.each("//*[@class='feature']//*[@class='tags']/a") do |actual_tag|
43
+ found = true if actual_tag.text == tag
44
+ end
45
+
46
+ found.should be_true
47
+
48
+ end
49
+
50
+ Then /^I expect the feature description to be$/ do |description|
51
+
52
+ xml = REXML::Document.new(File.open("doc/requirements/features/features.html"))
53
+ xml.elements["//*[@class='feature']//*[@class='description']"].text.strip.should == description.strip
54
+
55
+ end
56
+
57
+ Then /^I expect the feature to have a background$/ do
58
+
59
+ xml = REXML::Document.new(File.open("doc/requirements/features/features.html"))
60
+ xml.elements["//*[@id='background']"].should_not be_nil
61
+
62
+ end
63
+
64
+ Then /^I expect the background to have steps?$/ do |string|
65
+
66
+ found = true
67
+
68
+ xml = REXML::Document.new(File.open("doc/requirements/features/features.html"))
69
+ xml.elements["//*[@id='backgroundSteps']"].elements.each do |step|
70
+ found = true if "#{step.elements["span[1]"].text}#{step.elements["span[2]"].text}" == string
71
+ end
72
+
73
+ found.should be_true
74
+
75
+ end
76
+
77
+ Then /^I expect the feature to have the scenarios:$/ do |string|
78
+
79
+ xml = REXML::Document.new(File.open("doc/requirements/features/features.html"))
80
+ string.split("\n").each do |expected_title|
81
+ found = nil
82
+ xml.elements.each("//*[@class='scenario']/*[@class='title']/*[@class='name']") do |scenario|
83
+ found = scenario if scenario.text == expected_title
84
+ end
85
+ found.should_not be_nil
86
+ end
87
+
88
+ end
89
+
@@ -0,0 +1,27 @@
1
+ #
2
+ # Before all of the scenarios....
3
+ #
4
+ Before do
5
+ $env = {}
6
+ $env[:documents] = 'doc'
7
+ @cache = {}
8
+ end
9
+
10
+
11
+ #
12
+ # Before each scenario ...
13
+ #
14
+ Before do |scenario|
15
+ end
16
+
17
+
18
+ #
19
+ # After each scenario...
20
+ #
21
+ After do |scenario|
22
+ end
23
+
24
+
25
+ at_exit do
26
+
27
+ end
@@ -0,0 +1,44 @@
1
+ @feature
2
+ Feature: Features Page
3
+ As a Cucumber-In-The-YARD user I rely on the ability to view the details of each feature.
4
+
5
+ Background:
6
+ Given the feature file, 'features', is the feature for the scenario
7
+
8
+
9
+ Scenario: Location
10
+ Then I expect the feature file html to exist at 'requirements/features'
11
+
12
+ Scenario: Identification
13
+ Then I expect the feature title to be 'Feature: Features Page'
14
+ And I expect the feature heading to be 'Feature: Features Page'
15
+
16
+ Scenario: Tags
17
+ Then I expect the feature to have the @feature tag
18
+
19
+ Scenario: Description
20
+ Then I expect the feature description to be
21
+ """
22
+ As a Cucumber-In-The-YARD user I rely on the ability to view the details of each feature.
23
+ """
24
+
25
+ Scenario: Background
26
+ Then I expect the feature to have a background
27
+ And I expect the background to have steps
28
+ """
29
+ Given the feature, 'features.feature', is the feature for the scenario
30
+ """
31
+
32
+ Scenario: Scenarios
33
+ Then I expect the feature to have the scenarios:
34
+ """
35
+ Location
36
+ Identification
37
+ Tags
38
+ Description
39
+ Background
40
+ Scenarios
41
+ """
42
+
43
+
44
+
data/lib/city.rb CHANGED
@@ -3,21 +3,30 @@ require 'cucumber/parser/gherkin_builder'
3
3
  require 'gherkin/parser/parser'
4
4
  require 'gherkin/formatter/tag_count_formatter'
5
5
 
6
+ require 'yard'
7
+
8
+ require File.dirname(__FILE__) + "/yard/code_objects/cucumber/base.rb"
9
+ require File.dirname(__FILE__) + "/yard/code_objects/cucumber/namespace_object.rb"
10
+ require File.dirname(__FILE__) + "/yard/code_objects/cucumber/feature.rb"
11
+ require File.dirname(__FILE__) + "/yard/code_objects/cucumber/scenario.rb"
12
+ require File.dirname(__FILE__) + "/yard/code_objects/cucumber/step.rb"
13
+ require File.dirname(__FILE__) + "/yard/code_objects/cucumber/tag.rb"
14
+
6
15
  require File.dirname(__FILE__) + "/cucumber/city_builder.rb"
7
16
 
8
- require 'yard'
17
+ require File.dirname(__FILE__) + "/yard/code_objects/step_definition.rb"
18
+ require File.dirname(__FILE__) + "/yard/code_objects/step_transform.rb"
19
+ require File.dirname(__FILE__) + "/yard/code_objects/namespace_object.rb"
20
+
21
+ require File.dirname(__FILE__) + "/yard/parser/cucumber/feature.rb"
9
22
 
10
- require File.dirname(__FILE__) + "/yard/code_objects/base.rb"
11
- require File.dirname(__FILE__) + "/yard/code_objects/feature.rb"
12
- require File.dirname(__FILE__) + "/yard/code_objects/scenario.rb"
13
- require File.dirname(__FILE__) + "/yard/code_objects/step.rb"
14
- require File.dirname(__FILE__) + "/yard/code_objects/tags.rb"
23
+ require File.dirname(__FILE__) + "/yard/handlers/cucumber/base.rb"
24
+ require File.dirname(__FILE__) + "/yard/handlers/cucumber/feature_handler.rb"
15
25
 
16
- require File.dirname(__FILE__) + "/yard/extensions.rb"
17
- require File.dirname(__FILE__) + "/yard/rb_extensions.rb"
18
- require File.dirname(__FILE__) + "/yard/parser/feature.rb"
19
- require File.dirname(__FILE__) + "/yard/handlers/base.rb"
20
- require File.dirname(__FILE__) + "/yard/handlers/feature_handler.rb"
26
+ require File.dirname(__FILE__) + "/yard/handlers/step_definition_handler.rb"
27
+ require File.dirname(__FILE__) + "/yard/handlers/step_transform_handler.rb"
21
28
 
29
+ require File.dirname(__FILE__) + "/yard/parser/source_parser.rb"
30
+ require File.dirname(__FILE__) + "/yard/templates/helpers/base_helper.rb"
22
31
  require File.dirname(__FILE__) + "/yard/rake/city_task.rb"
23
32