cuporter 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +123 -44
- data/Rakefile +5 -5
- data/bin/cuporter +19 -11
- data/lib/cuporter.rb +15 -26
- data/lib/cuporter/cli/options.rb +95 -22
- data/lib/cuporter/document.rb +23 -0
- data/lib/cuporter/document/html_document.rb +82 -0
- data/lib/cuporter/extensions/nokogiri.rb +46 -0
- data/lib/cuporter/feature_parser.rb +38 -19
- data/lib/cuporter/filter.rb +1 -0
- data/lib/cuporter/formatters/csv.rb +69 -0
- data/lib/cuporter/formatters/text.rb +166 -0
- data/lib/cuporter/formatters/xml_to_html.xslt +315 -0
- data/lib/cuporter/node.rb +7 -83
- data/lib/cuporter/node/node_base.rb +114 -0
- data/lib/cuporter/node/numbering.rb +32 -0
- data/lib/cuporter/node/sorting.rb +27 -0
- data/lib/cuporter/node/tagged_node.rb +22 -0
- data/lib/cuporter/node/totalling.rb +19 -0
- data/lib/cuporter/node/types.rb +158 -0
- data/lib/cuporter/node_parser.rb +62 -0
- data/lib/cuporter/report/feature_report.rb +23 -0
- data/lib/cuporter/report/report_base.rb +69 -0
- data/lib/cuporter/report/tag_report.rb +27 -7
- data/lib/cuporter/report/tree_report.rb +24 -0
- data/lib/cuporter/tag_nodes_parser.rb +94 -0
- data/public/images/ajax-loader.gif +0 -0
- data/public/images/file.gif +0 -0
- data/public/images/folder-closed.gif +0 -0
- data/public/images/folder.gif +0 -0
- data/public/images/minus.gif +0 -0
- data/public/images/plus.gif +0 -0
- data/public/images/treeview-black-line.gif +0 -0
- data/public/images/treeview-black.gif +0 -0
- data/public/images/treeview-default-line.gif +0 -0
- data/public/images/treeview-default.gif +0 -0
- data/public/images/treeview-famfamfam-line.gif +0 -0
- data/public/images/treeview-famfamfam.gif +0 -0
- data/public/images/treeview-gray-line.gif +0 -0
- data/public/images/treeview-gray.gif +0 -0
- data/public/images/treeview-red-line.gif +0 -0
- data/public/images/treeview-red.gif +0 -0
- data/public/javascripts/expand-collapse.js +47 -0
- data/public/javascripts/jquery-min.js +167 -0
- data/public/javascripts/jquery.treeview.js +267 -0
- data/public/javascripts/treeview-loader.js +11 -0
- data/public/stylesheets/cuporter.css +101 -0
- data/{lib/cuporter/formatter/name_report/style.css → public/stylesheets/feature_style.css} +17 -18
- data/public/stylesheets/jquery.treeview.css +75 -0
- data/{lib/cuporter/formatter/tag_report/style.css → public/stylesheets/tag_style.css} +17 -22
- data/public/stylesheets/tree_style.css +104 -0
- metadata +52 -37
- data/lib/cuporter/example_set_node.rb +0 -15
- data/lib/cuporter/formatter/csv_text_methods.rb +0 -20
- data/lib/cuporter/formatter/cuporter.css +0 -64
- data/lib/cuporter/formatter/html_methods.rb +0 -122
- data/lib/cuporter/formatter/html_node_writer.rb +0 -104
- data/lib/cuporter/formatter/jquery-min.js +0 -154
- data/lib/cuporter/formatter/name_report/csv.rb +0 -12
- data/lib/cuporter/formatter/name_report/html.rb +0 -48
- data/lib/cuporter/formatter/name_report/html_node_writer.rb +0 -18
- data/lib/cuporter/formatter/name_report/text.rb +0 -16
- data/lib/cuporter/formatter/name_report/text_node_writer.rb +0 -16
- data/lib/cuporter/formatter/pretty_text_methods.rb +0 -22
- data/lib/cuporter/formatter/tag_report/csv.rb +0 -12
- data/lib/cuporter/formatter/tag_report/html.rb +0 -35
- data/lib/cuporter/formatter/tag_report/html_node_writer.rb +0 -19
- data/lib/cuporter/formatter/tag_report/text.rb +0 -14
- data/lib/cuporter/formatter/tag_report/text_node_writer.rb +0 -17
- data/lib/cuporter/formatter/text_methods.rb +0 -19
- data/lib/cuporter/formatter/writer.rb +0 -33
- data/lib/cuporter/name_list_parser.rb +0 -44
- data/lib/cuporter/node_numberer.rb +0 -18
- data/lib/cuporter/report/name_report.rb +0 -19
- data/lib/cuporter/report/report.rb +0 -22
- data/lib/cuporter/tag_list_node.rb +0 -54
- data/lib/cuporter/tag_list_parser.rb +0 -39
@@ -1,44 +0,0 @@
|
|
1
|
-
# Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
|
2
|
-
|
3
|
-
module Cuporter
|
4
|
-
class NameListParser < FeatureParser
|
5
|
-
|
6
|
-
# ++sub_expression++ is the paren group in the regex, dereferenced with $1 in the caller
|
7
|
-
def new_feature_node(sub_expression)
|
8
|
-
TagListNode.new(sub_expression, @current_tags, @filter)
|
9
|
-
end
|
10
|
-
|
11
|
-
def handle_scenario_line(sub_expression)
|
12
|
-
@feature.filter_child(Node.new(sub_expression), @current_tags)
|
13
|
-
end
|
14
|
-
|
15
|
-
def new_scenario_outline_node(sub_expression)
|
16
|
-
TagListNode.new(sub_expression, @current_tags, @filter)
|
17
|
-
end
|
18
|
-
|
19
|
-
def handle_example_set_line
|
20
|
-
@scenario_outline.filter_child(@example_set, @example_set.tags)
|
21
|
-
end
|
22
|
-
|
23
|
-
def new_example_set_node(sub_expression)
|
24
|
-
ExampleSetNode.new(sub_expression, @feature.tags | @current_tags, @filter)
|
25
|
-
end
|
26
|
-
|
27
|
-
def close_scenario_outline
|
28
|
-
if @scenario_outline
|
29
|
-
if @example_set
|
30
|
-
@scenario_outline.filter_child(@example_set, @example_set.tags) if @example_set
|
31
|
-
@example_set = nil
|
32
|
-
end
|
33
|
-
@feature.add_child(@scenario_outline) if @scenario_outline.has_children?
|
34
|
-
@scenario_outline = nil
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def initialize(file, filter)
|
39
|
-
super(file)
|
40
|
-
@filter = filter
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Cuporter
|
2
|
-
class NodeNumberer
|
3
|
-
|
4
|
-
attr_reader :total
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@total = 0
|
8
|
-
end
|
9
|
-
|
10
|
-
def number(node)
|
11
|
-
node.children.each do |child|
|
12
|
-
child.number = @total += 1 if child.numerable?
|
13
|
-
number(child)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
|
2
|
-
module Cuporter
|
3
|
-
class NameReport < Report
|
4
|
-
|
5
|
-
def report_node
|
6
|
-
names = TagListNode.new("report", @filter)
|
7
|
-
files.each do |file|
|
8
|
-
feature = FeatureParser.name_list(file, @filter)
|
9
|
-
if feature && feature.has_children?
|
10
|
-
names.add_child(feature)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
names.sort_all_descendants!
|
14
|
-
names.number_all_descendants
|
15
|
-
names
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
|
2
|
-
module Cuporter
|
3
|
-
class Report
|
4
|
-
|
5
|
-
attr_reader :filter, :title
|
6
|
-
|
7
|
-
def initialize(input_file_pattern, filter_args = nil, title = nil)
|
8
|
-
@input_file_pattern = input_file_pattern
|
9
|
-
@filter = Filter.new(filter_args || {})
|
10
|
-
@title = title
|
11
|
-
end
|
12
|
-
|
13
|
-
def files
|
14
|
-
Dir[@input_file_pattern].collect {|f| File.expand_path f}
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.create(type, input_file_pattern, filter_args = nil, title = nil)
|
18
|
-
klass = Cuporter.const_get("#{type.downcase}Report".to_class_name)
|
19
|
-
klass.new(input_file_pattern, filter_args, title)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
|
2
|
-
module Cuporter
|
3
|
-
# a node with a list of tags that can be applied to all children
|
4
|
-
class TagListNode < Node
|
5
|
-
|
6
|
-
attr_reader :tags
|
7
|
-
|
8
|
-
def initialize(name, tags, filter = {})
|
9
|
-
super(name)
|
10
|
-
@tags = tags
|
11
|
-
@filter = filter
|
12
|
-
end
|
13
|
-
|
14
|
-
def has_tags?
|
15
|
-
@tags.size > 0
|
16
|
-
end
|
17
|
-
|
18
|
-
def filter_child(node, node_tags)
|
19
|
-
add_child(node) if @filter.pass?(tags | node_tags)
|
20
|
-
end
|
21
|
-
|
22
|
-
def add_to_tag_nodes(node)
|
23
|
-
(tags | node.tags).each do |tag|
|
24
|
-
tag_node = find_or_create_child(tag)
|
25
|
-
tag_node.add_child(node)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Have my children adopt the other node's grandchildren.
|
30
|
-
#
|
31
|
-
# Copy children of other node's top-level, direct descendants to this
|
32
|
-
# node's direct descendants of the same name.
|
33
|
-
def merge_tag_nodes(other)
|
34
|
-
other.children.each do |other_tag_node|
|
35
|
-
tag_node = find_or_create_child(other_tag_node.name)
|
36
|
-
new_grandchild = Node.new(other.name)
|
37
|
-
new_grandchild.children = other_tag_node.children
|
38
|
-
new_grandchild.file = other.file
|
39
|
-
|
40
|
-
tag_node.add_child(new_grandchild)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def find_or_create_child(name)
|
45
|
-
child_node = self[name]
|
46
|
-
unless child_node
|
47
|
-
children << Node.new(name)
|
48
|
-
child_node = children.last
|
49
|
-
end
|
50
|
-
child_node
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
|
2
|
-
|
3
|
-
module Cuporter
|
4
|
-
class TagListParser < FeatureParser
|
5
|
-
|
6
|
-
# ++sub_expression++ is the paren group in the regex, dereferenced with $1 in the caller
|
7
|
-
def new_feature_node(sub_expression)
|
8
|
-
TagListNode.new(sub_expression, @current_tags)
|
9
|
-
end
|
10
|
-
|
11
|
-
def handle_scenario_line(sub_expression)
|
12
|
-
@feature.add_to_tag_nodes(TagListNode.new(sub_expression, @current_tags))
|
13
|
-
end
|
14
|
-
|
15
|
-
def new_scenario_outline_node(sub_expression)
|
16
|
-
TagListNode.new(sub_expression, @current_tags)
|
17
|
-
end
|
18
|
-
|
19
|
-
def handle_example_set_line
|
20
|
-
@scenario_outline.add_to_tag_nodes(@example_set)
|
21
|
-
end
|
22
|
-
|
23
|
-
def new_example_set_node(sub_expression)
|
24
|
-
ExampleSetNode.new(sub_expression, @feature.tags | @current_tags)
|
25
|
-
end
|
26
|
-
|
27
|
-
def close_scenario_outline
|
28
|
-
if @scenario_outline
|
29
|
-
if @example_set
|
30
|
-
@scenario_outline.add_to_tag_nodes(@example_set) if @example_set
|
31
|
-
@example_set = nil
|
32
|
-
end
|
33
|
-
@feature.merge_tag_nodes(@scenario_outline)
|
34
|
-
@scenario_outline = nil
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|