cuporter 0.2.0 → 0.2.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.
- data/README.textile +5 -5
- data/Rakefile +1 -1
- data/lib/cuporter.rb +1 -0
- data/lib/cuporter/formatters/html.rb +9 -41
- data/lib/cuporter/formatters/html_node_writer.rb +96 -0
- metadata +4 -3
data/README.textile
CHANGED
@@ -60,9 +60,9 @@ h3. Command Lines
|
|
60
60
|
h4. help
|
61
61
|
|
62
62
|
<pre>
|
63
|
-
$ ./bin/cuporter
|
63
|
+
$ ./bin/cuporter -h
|
64
64
|
|
65
|
-
Usage: cuporter
|
65
|
+
Usage: cuporter [options]
|
66
66
|
|
67
67
|
-i, --in DIR directory of *.feature files
|
68
68
|
Default: features/**/*.feature
|
@@ -80,11 +80,11 @@ h4. help
|
|
80
80
|
h4. run script directly
|
81
81
|
|
82
82
|
<pre>
|
83
|
-
$ ./bin/cuporter
|
83
|
+
$ ./bin/cuporter -i fixtures/self_text # pretty-print demo report to stdout
|
84
84
|
|
85
|
-
$ ./bin/cuporter
|
85
|
+
$ ./bin/cuporter -f html -o feature_tag_report.html # default input features/**/*.feature to named output file
|
86
86
|
|
87
|
-
$ ./bin/cuporter
|
87
|
+
$ ./bin/cuporter -f html --numbers -o feature_tag_report.html # same, but number the scenarios and example rows
|
88
88
|
</pre>
|
89
89
|
|
90
90
|
h4. run via rake
|
data/Rakefile
CHANGED
data/lib/cuporter.rb
CHANGED
@@ -1,48 +1,11 @@
|
|
1
1
|
# Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
|
2
2
|
require 'rubygems'
|
3
3
|
require 'erb'
|
4
|
-
require 'builder'
|
5
4
|
|
6
5
|
module Cuporter
|
7
6
|
module Formatters
|
8
7
|
class Html < Writer
|
9
8
|
|
10
|
-
NODE_CLASS = [:tag, :feature, :scenario, :example_set, :example]
|
11
|
-
|
12
|
-
def write_nodes
|
13
|
-
@report.children.each do |tag_node|
|
14
|
-
tag_node.number_all_descendants if @number_scenarios
|
15
|
-
write_node(tag_node, 0)
|
16
|
-
end
|
17
|
-
builder
|
18
|
-
end
|
19
|
-
|
20
|
-
def builder
|
21
|
-
@builder ||= Builder::XmlMarkup.new
|
22
|
-
end
|
23
|
-
|
24
|
-
def write_node(node, indent_level)
|
25
|
-
builder.li(:class => NODE_CLASS[indent_level]) do |list_item|
|
26
|
-
list_item.span("#{node.number}.", :class => :number) if node.number
|
27
|
-
list_item.span(node.name, :class => "#{NODE_CLASS[indent_level]}_name" )
|
28
|
-
|
29
|
-
if node.has_children?
|
30
|
-
list_item.ul(:class => "#{NODE_CLASS[indent_level]}_children") do |list|
|
31
|
-
node.children.each do |child|
|
32
|
-
if child.has_children?
|
33
|
-
write_node(child, indent_level + 1)
|
34
|
-
else
|
35
|
-
list.li() do |item|
|
36
|
-
item.span("#{child.number}.", :class => :number) if child.number
|
37
|
-
item.span(child.name, :class => "#{NODE_CLASS[indent_level + 1]}_name")
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
9
|
def inline_style
|
47
10
|
File.read("lib/cuporter/formatters/cuporter.css")
|
48
11
|
end
|
@@ -59,7 +22,7 @@ module Cuporter
|
|
59
22
|
@output.puts rhtml.result(get_binding).reject {|line| /^\s+$/ =~ line}
|
60
23
|
end
|
61
24
|
|
62
|
-
|
25
|
+
RHTML = %{
|
63
26
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
64
27
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
65
28
|
<head>
|
@@ -69,13 +32,18 @@ module Cuporter
|
|
69
32
|
</style>
|
70
33
|
</head>
|
71
34
|
<body>
|
35
|
+
<div class="cuporter_header">
|
36
|
+
<div id="label">
|
37
|
+
<h1>Cucumber Tags</h1>
|
38
|
+
</div>
|
39
|
+
</div>
|
72
40
|
<ul class="tag_list">
|
73
|
-
<%= write_nodes%>
|
41
|
+
<%= HtmlNodeWriter.new.write_nodes(@report, @number_scenarios)%>
|
74
42
|
</ul>
|
75
43
|
</body>
|
76
44
|
</html>
|
77
|
-
|
78
|
-
|
45
|
+
}
|
46
|
+
|
79
47
|
|
80
48
|
end
|
81
49
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
|
2
|
+
require 'rubygems'
|
3
|
+
require 'builder'
|
4
|
+
|
5
|
+
module Cuporter
|
6
|
+
module Formatters
|
7
|
+
class HtmlNodeWriter
|
8
|
+
|
9
|
+
attr_reader :builder
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@builder = Builder::XmlMarkup.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def write_nodes(report, number_scenarios)
|
16
|
+
report.children.each do |tag_node|
|
17
|
+
tag_node.number_all_descendants if number_scenarios
|
18
|
+
write_node(tag_node)
|
19
|
+
end
|
20
|
+
builder
|
21
|
+
end
|
22
|
+
|
23
|
+
def write_node(node)
|
24
|
+
builder.li(:class => node_class(node.name)) do
|
25
|
+
write_node_name(node)
|
26
|
+
write_children(node)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def write_node_name(node)
|
31
|
+
builder.span("#{node.number}.", :class => :number) if node.number
|
32
|
+
builder.div(node.name, :class => "#{node_class(node.name)}_name")
|
33
|
+
end
|
34
|
+
|
35
|
+
def write_children(node)
|
36
|
+
return if node.children.empty?
|
37
|
+
if node.is_a? ExampleSetNode
|
38
|
+
write_children_in_table(node.children)
|
39
|
+
else
|
40
|
+
write_children_in_list(node.children)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def write_children_in_table(children)
|
45
|
+
builder.div(:class => :example_rows) do
|
46
|
+
builder.table do
|
47
|
+
builder.thead {to_row(children.first)}
|
48
|
+
builder.tbody do
|
49
|
+
children[1..-1].each do |child|
|
50
|
+
to_row(child, :class => :example)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def to_row(node, attributes = {})
|
58
|
+
builder.tr(attributes) do |row|
|
59
|
+
number_string = node.number ? "#{node.number}." : ""
|
60
|
+
row.td(number_string, :class => :number)
|
61
|
+
node.name.sub(/^\|/,"").split("|").each {|s| row.td(s.strip, :class => :val) }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def write_children_in_list(children)
|
66
|
+
builder.ul do
|
67
|
+
children.each do |child|
|
68
|
+
if child.has_children?
|
69
|
+
write_node(child)
|
70
|
+
else
|
71
|
+
builder.li() { write_node_name(child) }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def node_class(name)
|
78
|
+
case name
|
79
|
+
when FeatureParser::TAG_LINE
|
80
|
+
:tag
|
81
|
+
when FeatureParser::FEATURE_LINE
|
82
|
+
:feature
|
83
|
+
when FeatureParser::SCENARIO_LINE
|
84
|
+
:scenario
|
85
|
+
when FeatureParser::SCENARIO_OUTLINE_LINE
|
86
|
+
:scenario_outline
|
87
|
+
when FeatureParser::SCENARIO_SET_LINE, FeatureParser::EXAMPLE_SET_LINE
|
88
|
+
:example_set
|
89
|
+
else
|
90
|
+
:example
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 1
|
9
|
+
version: 0.2.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Tim Camper
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-06 00:00:00 -04:00
|
18
18
|
default_executable: cuporter
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -34,6 +34,7 @@ files:
|
|
34
34
|
- lib/cuporter/example_set_node.rb
|
35
35
|
- lib/cuporter/formatters/csv.rb
|
36
36
|
- lib/cuporter/formatters/text.rb
|
37
|
+
- lib/cuporter/formatters/html_node_writer.rb
|
37
38
|
- lib/cuporter/formatters/html.rb
|
38
39
|
- lib/cuporter/formatters/writer.rb
|
39
40
|
- lib/cuporter/formatters/text_methods.rb
|