cucumber-in-the-yard 1.5.4 → 1.6.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.
- data/History.txt +6 -0
- data/README.md +18 -14
- data/city.gemspec +1 -1
- data/example/step_definitions/example.step.rb +4 -0
- data/example/sub_features/second_example.feature +51 -0
- data/lib/city.rb +1 -1
- data/lib/cucumber/city_builder.rb +3 -1
- data/lib/templates/default/feature/html/outline.erb +49 -17
- data/lib/templates/default/feature/html/scenario.erb +7 -9
- data/lib/templates/default/feature/html/steps.erb +17 -17
- data/lib/templates/default/feature/setup.rb +1 -1
- data/lib/templates/default/featuredirectory/html/directory.erb +76 -0
- data/lib/templates/default/featuredirectory/html/setup.rb +36 -0
- data/lib/templates/default/fulldoc/html/css/common.css +74 -60
- data/lib/templates/default/fulldoc/html/full_list_features.erb +3 -0
- data/lib/templates/default/fulldoc/html/full_list_tags.erb +4 -15
- data/lib/templates/default/fulldoc/html/js/cucumber.js +29 -7
- data/lib/templates/default/fulldoc/html/setup.rb +15 -11
- data/lib/templates/default/requirements/html/namespace.erb +76 -0
- data/lib/templates/default/requirements/html/setup.rb +35 -0
- data/lib/templates/default/scenario/html/scenario.erb +0 -3
- data/lib/templates/default/tag/html/feature.erb +28 -47
- data/lib/templates/default/tag/html/scenario.erb +28 -42
- data/lib/templates/default/tag/html/tag.erb +1 -0
- data/lib/templates/default/tag/setup.rb +15 -1
- data/lib/templates/default/tags/html/namespace.erb +39 -0
- data/lib/templates/default/tags/html/setup.rb +21 -0
- data/lib/yard/code_objects/cucumber/namespace_object.rb +16 -6
- metadata +16 -25
@@ -1,23 +1,12 @@
|
|
1
|
+
<li>
|
2
|
+
<%= linkify YARD::CodeObjects::Cucumber::CUCUMBER_TAG_NAMESPACE, "All Tags" %>
|
3
|
+
</li>
|
1
4
|
<% n = 1 %>
|
5
|
+
|
2
6
|
<% @items.each do |tag| %>
|
3
7
|
<li class="r<%= n %>">
|
4
|
-
<a class='toggle'></a>
|
5
8
|
<%= linkify tag, tag.value %>
|
6
9
|
<small><%= tag.all_scenarios.size %></small>
|
7
10
|
</li>
|
8
|
-
<ul>
|
9
|
-
<% tag.features.each do |feature| %>
|
10
|
-
<li>
|
11
|
-
<%= linkify feature, feature.value %>
|
12
|
-
<small><%= feature.location %></small>
|
13
|
-
</li>
|
14
|
-
<% end %>
|
15
|
-
<% tag.scenarios.each do |scenario| %>
|
16
|
-
<li>
|
17
|
-
<%= linkify scenario.feature, scenario.value %>
|
18
|
-
<small><%= scenario.location %></small>
|
19
|
-
</li>
|
20
|
-
<% end %>
|
21
|
-
</ul>
|
22
11
|
<% n = n == 2 ? 1 : 2 %>
|
23
12
|
<% end %>
|
@@ -1,10 +1,32 @@
|
|
1
1
|
function cucumberSearchFrameLinks() {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
$('#feature_list_link').click(function() {
|
3
|
+
toggleSearchFrame(this, relpath + 'feature_list.html');
|
4
|
+
});
|
5
|
+
$('#tagusage_list_link').click(function() {
|
6
|
+
toggleSearchFrame(this, relpath + 'tag_list.html');
|
7
|
+
});
|
8
8
|
}
|
9
9
|
|
10
|
-
$(cucumberSearchFrameLinks);
|
10
|
+
$(cucumberSearchFrameLinks);
|
11
|
+
|
12
|
+
function toggleScenarioExample(id,example) {
|
13
|
+
|
14
|
+
var element = $("#" + id + "Example" + example + "Steps")[0];
|
15
|
+
|
16
|
+
$('#' + id + ' tr').each(function(index) {
|
17
|
+
this.style.backgroundColor = (index % 2 == 0 ? '#FFFFFF' : '#F0F6F9' );
|
18
|
+
});
|
19
|
+
|
20
|
+
if (element.style.display != 'none') {
|
21
|
+
element = $("#" + id + "Steps")[0];
|
22
|
+
} else {
|
23
|
+
$('#' + id + ' .outline * tr')[example].style.backgroundColor = '#FFCC80';
|
24
|
+
}
|
25
|
+
|
26
|
+
$('#' + id + ' .steps').each(function(index) {
|
27
|
+
this.style.display = 'none';
|
28
|
+
});
|
29
|
+
|
30
|
+
element.style.display = 'block';
|
31
|
+
|
32
|
+
}
|
@@ -11,8 +11,6 @@ def init
|
|
11
11
|
generate_full_list(@features)
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
14
|
@tags = Registry.all(:tag)
|
17
15
|
|
18
16
|
if @tags
|
@@ -20,16 +18,12 @@ def init
|
|
20
18
|
generate_full_list @tags.sort {|x,y| y.all_scenarios.size <=> x.all_scenarios.size }
|
21
19
|
end
|
22
20
|
|
23
|
-
|
24
|
-
#generate_full_list(@scenarios) if @scenarios
|
21
|
+
feature_directories = YARD::CodeObjects::Cucumber::CUCUMBER_NAMESPACE.children.find_all {|child| child.is_a?(YARD::CodeObjects::Cucumber::FeatureDirectory) }
|
25
22
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
options[:object] = YARD::CodeObjects::Cucumber::CUCUMBER_STEPTRANSFORM_NAMESPACE
|
31
|
-
T('layout').run(options)
|
32
|
-
end
|
23
|
+
serialize(YARD::CodeObjects::Cucumber::CUCUMBER_NAMESPACE)
|
24
|
+
serialize(YARD::CodeObjects::Cucumber::CUCUMBER_STEPTRANSFORM_NAMESPACE)
|
25
|
+
serialize(YARD::CodeObjects::Cucumber::CUCUMBER_TAG_NAMESPACE)
|
26
|
+
serialize_feature_directories(feature_directories)
|
33
27
|
|
34
28
|
end
|
35
29
|
|
@@ -54,4 +48,14 @@ def class_list(root = Registry.root)
|
|
54
48
|
out = super(root)
|
55
49
|
root.instance_eval { children << YARD::CodeObjects::Cucumber::CUCUMBER_NAMESPACE } if root == Registry.root
|
56
50
|
out
|
51
|
+
end
|
52
|
+
|
53
|
+
def serialize_feature_directories(namespaces)
|
54
|
+
namespaces.each do |namespace|
|
55
|
+
Templates::Engine.with_serializer(namespace, options[:serializer]) do
|
56
|
+
options[:object] = namespace
|
57
|
+
T('layout').run(options)
|
58
|
+
end
|
59
|
+
serialize_feature_directories(namespace.children.find_all {|child| child.is_a?(YARD::CodeObjects::Cucumber::FeatureDirectory)})
|
60
|
+
end
|
57
61
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
<% if @namespace %>
|
2
|
+
<div id="cukes_logo"> </div>
|
3
|
+
<div id="cukes_links">
|
4
|
+
<a href="http://cukes.info/">Cucumber</a> |
|
5
|
+
<a href="http://github.com/aslakhellesoy/cucumber/wiki/Gherkin">Gherkin</a> |
|
6
|
+
<a href="http://yardoc.org/">YARD</a> |
|
7
|
+
<a href="http://github.com/burtlo/Cucumber-In-The-Yard">Cucumber-In-The-YARD</a>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="requirements">
|
11
|
+
|
12
|
+
<div class="summary">
|
13
|
+
<span class="name">Features:</span><span class="value"><%= features.size %></span>
|
14
|
+
<span class="name">Scenarios:</span><span class="value"><%= scenarios.size %></span>
|
15
|
+
<span class="name">Steps:</span><span class="value"><%= steps.size %></span>
|
16
|
+
<span class="name">Tags:</span><span class="value"><%= tags.size %></span>
|
17
|
+
</div>
|
18
|
+
<div class="tags"><span class="name">Tags:</span>
|
19
|
+
<%= tags.collect {|tag| linkify(tag,tag.value) }.join(",\n") %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div id="features" style="margin-left: 40px;">
|
23
|
+
<div class="title"><span class="name">Features</span></div>
|
24
|
+
</div>
|
25
|
+
<% i = 0 %>
|
26
|
+
<table style="margin-left: 10px;">
|
27
|
+
<tr>
|
28
|
+
<td valign='top' width="50%">
|
29
|
+
<% all_features_by_letter.sort_by {|l,o| l.to_s }.each do |letter, objects| %>
|
30
|
+
<% if (i += 1) % 13 == 0 %>
|
31
|
+
</td><td valign='top' width="50%">
|
32
|
+
<% i = 0 %>
|
33
|
+
<% end %>
|
34
|
+
<ul id="alpha_<%= letter %>" class="alpha">
|
35
|
+
<li class="letter"><%= letter %></li>
|
36
|
+
<ul>
|
37
|
+
<% objects.each do |obj| %>
|
38
|
+
<li>
|
39
|
+
<%= linkify obj, obj.value %>
|
40
|
+
<small>(<%= obj.file %>)</small>
|
41
|
+
</li>
|
42
|
+
<% end %>
|
43
|
+
</ul>
|
44
|
+
</ul>
|
45
|
+
<% end %>
|
46
|
+
</td>
|
47
|
+
</tr>
|
48
|
+
</table>
|
49
|
+
|
50
|
+
<% if @directories && !@directories.empty? %>
|
51
|
+
<div id="directory" style="margin-left: 40px;">
|
52
|
+
<div class="title"><span class="name">Subdirectories</span></div>
|
53
|
+
</div>
|
54
|
+
<% i = 0 %>
|
55
|
+
<table style="margin-left: 10px;">
|
56
|
+
<tr>
|
57
|
+
<td valign='top' width="33%">
|
58
|
+
<% @directories.each do |directory| %>
|
59
|
+
<% if (i += 1) % 8 == 0 %>
|
60
|
+
</td><td valign='top' width="33%">
|
61
|
+
<% i = 0 %>
|
62
|
+
<% end %>
|
63
|
+
<ul>
|
64
|
+
<%= linkify directory, directory.name %>
|
65
|
+
</ul>
|
66
|
+
<% end %>
|
67
|
+
</td>
|
68
|
+
</tr>
|
69
|
+
</table>
|
70
|
+
|
71
|
+
<% end %>
|
72
|
+
|
73
|
+
</div>
|
74
|
+
<% end %>
|
75
|
+
|
76
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
def init
|
2
|
+
super
|
3
|
+
sections.push :namespace
|
4
|
+
@namespace = object
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
def namespace
|
9
|
+
@directories = Registry.all(:featuredirectory)
|
10
|
+
erb(:namespace)
|
11
|
+
end
|
12
|
+
|
13
|
+
def all_features_by_letter
|
14
|
+
hash = {}
|
15
|
+
objects = features
|
16
|
+
objects = run_verifier(objects)
|
17
|
+
objects.each {|o| (hash[o.value.to_s[0,1].upcase] ||= []) << o }
|
18
|
+
hash
|
19
|
+
end
|
20
|
+
|
21
|
+
def features
|
22
|
+
Registry.all(:feature)
|
23
|
+
end
|
24
|
+
|
25
|
+
def scenarios
|
26
|
+
Registry.all(:scenario)
|
27
|
+
end
|
28
|
+
|
29
|
+
def steps
|
30
|
+
Registry.all(:step)
|
31
|
+
end
|
32
|
+
|
33
|
+
def tags
|
34
|
+
Registry.all(:tag)
|
35
|
+
end
|
@@ -14,9 +14,6 @@
|
|
14
14
|
<div class="steps">
|
15
15
|
<% unless @scenario.steps.empty? %>
|
16
16
|
<% @scenario.steps.each do |step| %>
|
17
|
-
<!-- TODO: Style the first word differently -->
|
18
|
-
<!-- TODO: Link the step to the step definition -->
|
19
|
-
<!-- TODO: Steps without links should appear different -->
|
20
17
|
<div class="step"><span class="predicate"><%= step.keyword %></span> <%= step.line %></div>
|
21
18
|
<% end %>
|
22
19
|
<% else %>
|
@@ -1,48 +1,29 @@
|
|
1
|
-
|
2
|
-
<div class="
|
3
|
-
<div class="title">
|
4
|
-
<span class="pre"><%= feature.keyword %></span>
|
5
|
-
<span class="name">
|
6
|
-
<a href="<%= url_for feature %>"><%= feature.value %></a>
|
7
|
-
</span>
|
8
|
-
</div>
|
9
|
-
<div class="meta">
|
10
|
-
<div class="file"><%= h(feature.file) %></div>
|
11
|
-
<div class="tags">Tags:
|
12
|
-
<% feature.tags.each do |tag| %>
|
13
|
-
<a href="<%= url_for tag %>"><%= tag.value %></a>
|
14
|
-
<% end %>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
<div class="description">
|
18
|
-
<%= feature.description %>
|
19
|
-
</div>
|
1
|
+
<div id="features">
|
2
|
+
<div class="title"><span class="name">Features</span></div>
|
20
3
|
</div>
|
21
|
-
<%
|
22
|
-
<
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
</
|
47
|
-
<% end %>
|
48
|
-
<% end %>
|
4
|
+
<% i = 0 %>
|
5
|
+
<table>
|
6
|
+
<tr>
|
7
|
+
<td valign='top' width="33%">
|
8
|
+
<% all_features_by_letter.sort_by {|l,o| l.to_s }.each do |letter, objects| %>
|
9
|
+
<% if (i += 1) % 8 == 0 %>
|
10
|
+
</td><td valign='top' width="33%">
|
11
|
+
<% i = 0 %>
|
12
|
+
<% end %>
|
13
|
+
<ul id="alpha_<%= letter %>" class="alpha">
|
14
|
+
<li class="letter"><%= letter %></li>
|
15
|
+
<ul>
|
16
|
+
<% objects.each do |obj| %>
|
17
|
+
<li>
|
18
|
+
<%= linkify obj, obj.value %>
|
19
|
+
<% if !obj.namespace.root? %>
|
20
|
+
<small>(<%= obj.namespace.file %>)</small>
|
21
|
+
<% end %>
|
22
|
+
</li>
|
23
|
+
<% end %>
|
24
|
+
</ul>
|
25
|
+
</ul>
|
26
|
+
<% end %>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
</table>
|
@@ -1,43 +1,29 @@
|
|
1
|
-
|
2
|
-
<div class="
|
3
|
-
<div class="title">
|
4
|
-
<span class="pre"><%= scenario.feature.keyword %></span>
|
5
|
-
<span class="name">
|
6
|
-
<a href="<%= url_for scenario.feature %>"><%= scenario.feature.value %></a>
|
7
|
-
</span>
|
8
|
-
</div>
|
9
|
-
<div class="meta">
|
10
|
-
<div class="file"><%= h(scenario.feature.file) %></div>
|
11
|
-
<div class="tags">Tags:
|
12
|
-
<% scenario.feature.tags.each do |tag| %>
|
13
|
-
<a href="<%= url_for tag %>"><%= tag.value %></a>
|
14
|
-
<% end %>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
<div class="description"><%= scenario.feature.description %></div>
|
1
|
+
<div id="features">
|
2
|
+
<div class="title"><span class="name">Scenarios</span></div>
|
18
3
|
</div>
|
19
|
-
|
20
|
-
<
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
</
|
43
|
-
|
4
|
+
<% i = 0 %>
|
5
|
+
<table>
|
6
|
+
<tr>
|
7
|
+
<td valign='top' width="33%">
|
8
|
+
<% all_scenarios_by_letter.sort_by {|l,o| l.to_s }.each do |letter, objects| %>
|
9
|
+
<% if (i += 1) % 8 == 0 %>
|
10
|
+
</td><td valign='top' width="33%">
|
11
|
+
<% i = 0 %>
|
12
|
+
<% end %>
|
13
|
+
<ul id="alpha_<%= letter %>" class="alpha">
|
14
|
+
<li class="letter"><%= letter %></li>
|
15
|
+
<ul>
|
16
|
+
<% objects.each do |obj| %>
|
17
|
+
<li>
|
18
|
+
<%= linkify obj.feature, obj.value %>
|
19
|
+
<% if !obj.namespace.root? %>
|
20
|
+
<small>(<%= obj.namespace.file %>)</small>
|
21
|
+
<% end %>
|
22
|
+
</li>
|
23
|
+
<% end %>
|
24
|
+
</ul>
|
25
|
+
</ul>
|
26
|
+
<% end %>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
</table>
|
@@ -2,5 +2,19 @@ def init
|
|
2
2
|
super
|
3
3
|
@tag = object
|
4
4
|
|
5
|
-
sections.push :tag
|
5
|
+
sections.push :tag
|
6
|
+
sections.push :feature unless @tag.features.empty?
|
7
|
+
sections.push :scenario unless @tag.scenarios.empty?
|
8
|
+
end
|
9
|
+
|
10
|
+
def all_features_by_letter
|
11
|
+
hash = {}
|
12
|
+
@tag.features.each {|o| (hash[o.value.to_s[0,1].upcase] ||= []) << o }
|
13
|
+
hash
|
14
|
+
end
|
15
|
+
|
16
|
+
def all_scenarios_by_letter
|
17
|
+
hash = {}
|
18
|
+
@tag.scenarios.each {|o| (hash[o.value.to_s[0,1].upcase] ||= []) << o }
|
19
|
+
hash
|
6
20
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<% if @namespace %>
|
2
|
+
<div class="requirements">
|
3
|
+
<div class="title">
|
4
|
+
<span class="name">Tags</span>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<% i = 0 %>
|
8
|
+
<table style="margin-left: 10px;">
|
9
|
+
<tr>
|
10
|
+
<td valign='top' width="50%">
|
11
|
+
<% all_tags_by_letter.sort_by {|l,o| l.to_s }.each do |letter, objects| %>
|
12
|
+
<% if (i += 1) % 8 == 0 %>
|
13
|
+
</td><td valign='top' width="50%">
|
14
|
+
<% i = 0 %>
|
15
|
+
<% end %>
|
16
|
+
<ul id="alpha_<%= letter %>" class="alpha">
|
17
|
+
<li class="letter"><%= letter %></li>
|
18
|
+
<ul>
|
19
|
+
<% objects.each do |obj| %>
|
20
|
+
<li>
|
21
|
+
<%= linkify obj, obj.value %>
|
22
|
+
<small>
|
23
|
+
( <%= obj.features.size > 0 ? "#{obj.features.size} feature#{obj.features.size > 1 ? 's' : ''}" : "" %>
|
24
|
+
<%= " and " if obj.features.size > 0 && obj.scenarios.size > 0 %>
|
25
|
+
<%= obj.scenarios.size > 0 ? "#{obj.scenarios.size} scenario#{obj.scenarios.size > 1 ? 's' : ''}" : "" %> )
|
26
|
+
</small>
|
27
|
+
</li>
|
28
|
+
<% end %>
|
29
|
+
</ul>
|
30
|
+
</ul>
|
31
|
+
<% end %>
|
32
|
+
</td>
|
33
|
+
</tr>
|
34
|
+
</table>
|
35
|
+
|
36
|
+
</div>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
|