cuporter 0.2.8 → 0.2.9

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 CHANGED
@@ -5,11 +5,13 @@ Scrapes your feature files and shows 2 possible reports:
5
5
  # scenarios and examples per tag
6
6
  ** in Feature and Scenario Outline context, as appropriate
7
7
  ** sorted alphbetically
8
- ** optionally numbered, counting scenarios and outline examples per tag
8
+ ** optionally numbered*, counting scenarios and outline examples per tag
9
9
  # feature, scenario and example names
10
10
  ** may be filtered by tags, using same CLI syntax as Cucumber
11
11
  ** sorted alphbetically
12
- ** optionally numbered, using 1 count of all scenarios and outline examples for the report
12
+ ** optionally numbered*, using 1 count of all scenarios and outline examples for the report
13
+
14
+ <notextile>*</notextile> _HTML reports are always numbered._
13
15
 
14
16
  Either report may be formatted in HTML, CSV, or Pretty Text.
15
17
 
data/Rakefile CHANGED
@@ -56,7 +56,7 @@ namespace :cuporter do
56
56
 
57
57
  spec = Gem::Specification.new do |s|
58
58
  s.name = 'cuporter'
59
- s.version = '0.2.8'
59
+ s.version = '0.2.9'
60
60
  s.rubyforge_project = s.name
61
61
 
62
62
  s.platform = Gem::Platform::RUBY
data/bin/cuporter CHANGED
@@ -7,11 +7,11 @@ filter_args = Cuporter::CLI::FilterArgsBuilder.new(Cuporter::CLI::Options[:tags]
7
7
 
8
8
  report = Cuporter::Report.create(Cuporter::CLI::Options[:report],
9
9
  Cuporter::CLI::Options[:input_file] || Cuporter::CLI::Options[:input_dir],
10
- Cuporter::CLI::Options[:numbers],
11
10
  filter_args,
12
11
  Cuporter::CLI::Options[:title])
13
12
 
14
13
  formatter = Cuporter::Formatter::Writer.create(Cuporter::CLI::Options[:format],
15
14
  report,
16
- Cuporter::CLI::Options[:output])
15
+ Cuporter::CLI::Options[:output],
16
+ Cuporter::CLI::Options[:numbers])
17
17
  formatter.write
@@ -1,8 +1,7 @@
1
1
  # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
2
  module Cuporter
3
3
  module Formatter
4
- class Csv < Writer
5
- include TextMethods
4
+ module CsvTextMethods
6
5
 
7
6
  def tab
8
7
  ","
@@ -12,13 +12,13 @@ module Cuporter
12
12
  @builder = Builder::XmlMarkup.new
13
13
  end
14
14
 
15
- def write_nodes(report, number_scenarios)
16
- report.report_node.children.each do |tag_node|
17
- write_node(tag_node)
15
+ def write_nodes(report, number_scenarios)
16
+ report.report_node.number_all_descendants if number_scenarios
17
+ report.report_node.children.each do |child_node|
18
+ write_node(child_node)
19
+ end
20
+ builder
18
21
  end
19
- builder
20
- end
21
-
22
22
  def write_node(node)
23
23
  builder.li(:class => node_class(node.name)) do
24
24
  write_node_name(node)
@@ -0,0 +1,12 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+ module Cuporter
3
+ module Formatter
4
+ module NameReport
5
+ class Csv < Writer
6
+ include TextMethods
7
+ include CsvTextMethods
8
+ include Cuporter::Formatter::NameReport::TextNodeWriter
9
+ end
10
+ end
11
+ end
12
+ end
@@ -4,25 +4,26 @@ require 'erb'
4
4
 
5
5
  module Cuporter
6
6
  module Formatter
7
- class NameReportHtml < Writer
8
- include HtmlMethods
7
+ module NameReport
8
+ class Html < Writer
9
+ include HtmlMethods
9
10
 
10
- def title
11
- @report.title
12
- end
11
+ def title
12
+ @report.title
13
+ end
13
14
 
14
- def filter_summary
15
- return if @report.filter.empty?
16
- builder = Builder::XmlMarkup.new
17
- builder.div(:id => :filter_summary) do |div|
18
- div.p("Filtering:")
19
- div.p("Include: #{@report.filter.all.join(' AND ')}") unless @report.filter.all.empty?
20
- div.p("Include: #{@report.filter.any.join(' OR ')}") unless @report.filter.any.empty?
21
- div.p("Exclude: #{@report.filter.none.join(', ')}") unless @report.filter.none.empty?
15
+ def filter_summary
16
+ return if @report.filter.empty?
17
+ builder = Builder::XmlMarkup.new
18
+ builder.div(:id => :filter_summary) do |div|
19
+ div.p("Filtering:")
20
+ div.p("Include: #{@report.filter.all.join(' AND ')}") unless @report.filter.all.empty?
21
+ div.p("Include: #{@report.filter.any.join(' OR ')}") unless @report.filter.any.empty?
22
+ div.p("Exclude: #{@report.filter.none.join(', ')}") unless @report.filter.none.empty?
23
+ end
22
24
  end
23
- end
24
25
 
25
- RHTML = %{
26
+ RHTML = %{
26
27
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
27
28
  <html xmlns="http://www.w3.org/1999/xhtml">
28
29
  <head>
@@ -50,13 +51,14 @@ module Cuporter
50
51
  </div>
51
52
  </div>
52
53
  <ul class="tag_list, name_report">
53
- <%= HtmlNodeWriter.new.write_nodes(@report, @number_scenarios)%>
54
+ <%= Cuporter::Formatter::NameReport::HtmlNodeWriter.new.write_nodes(@report)%>
54
55
  </ul>
55
56
  </body>
56
57
  </html>
57
58
  }
58
59
 
59
60
 
61
+ end
60
62
  end
61
63
  end
62
64
  end
@@ -0,0 +1,18 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+
3
+ module Cuporter
4
+ module Formatter
5
+ module NameReport
6
+ class HtmlNodeWriter < Cuporter::Formatter::HtmlNodeWriter
7
+
8
+ def write_nodes(report)
9
+ report.report_node.children.each do |child_node|
10
+ write_node(child_node)
11
+ end
12
+ builder
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+ module Cuporter
3
+ module Formatter
4
+ module NameReport
5
+ class Text < Writer
6
+
7
+ COL_WIDTH = 6
8
+ MARGIN = 4
9
+ include TextMethods
10
+ include PrettyTextMethods
11
+ include Cuporter::Formatter::NameReport::TextNodeWriter
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+ module Cuporter
3
+ module Formatter
4
+ module NameReport
5
+ module TextNodeWriter
6
+
7
+ def write
8
+ @report.report_node.children.each do |child_node|
9
+ write_node(child_node, 0)
10
+ end
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,19 +1,17 @@
1
1
  # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
2
  module Cuporter
3
3
  module Formatter
4
- class Text < Writer
5
- include TextMethods
4
+ module PrettyTextMethods
6
5
 
7
6
  def tab
8
7
  @tab ||= @number_scenarios ? " " : " "
9
8
  end
10
9
 
11
- COL_WIDTH = 5
12
10
  def line(number, line)
13
11
  if @number_scenarios
14
12
  number_string = number ? "#{number}." : ""
15
- number_field = number_string.rjust(COL_WIDTH, " ")
16
- line.sub!(/^\s{#{COL_WIDTH}}/, number_field)
13
+ number_field = number_string.rjust(self.class::COL_WIDTH, " ")
14
+ line.insert(0, " " * self.class::MARGIN).sub!(/^\s{#{self.class::COL_WIDTH}}/, number_field)
17
15
  end
18
16
  line
19
17
  end
@@ -0,0 +1,12 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+ module Cuporter
3
+ module Formatter
4
+ module TagReport
5
+ class Csv < Writer
6
+ include TextMethods
7
+ include CsvTextMethods
8
+ include Cuporter::Formatter::TagReport::TextNodeWriter
9
+ end
10
+ end
11
+ end
12
+ end
@@ -4,14 +4,15 @@ require 'erb'
4
4
 
5
5
  module Cuporter
6
6
  module Formatter
7
- class TagReportHtml < Writer
8
- include HtmlMethods
7
+ module TagReport
8
+ class Html < Writer
9
+ include HtmlMethods
9
10
 
10
- def title
11
- "Cucumber Tags"
12
- end
11
+ def title
12
+ "Cucumber Tags"
13
+ end
13
14
 
14
- RHTML = %{
15
+ RHTML = %{
15
16
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
16
17
  <html xmlns="http://www.w3.org/1999/xhtml">
17
18
  <head>
@@ -36,13 +37,14 @@ module Cuporter
36
37
  </div>
37
38
  </div>
38
39
  <ul class="tag_list">
39
- <%= HtmlNodeWriter.new.write_nodes(@report, @number_scenarios)%>
40
+ <%= Cuporter::Formatter::TagReport::HtmlNodeWriter.new.write_nodes(@report)%>
40
41
  </ul>
41
42
  </body>
42
43
  </html>
43
44
  }
44
45
 
45
46
 
47
+ end
46
48
  end
47
49
  end
48
50
  end
@@ -0,0 +1,19 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+
3
+ module Cuporter
4
+ module Formatter
5
+ module TagReport
6
+ class HtmlNodeWriter < Cuporter::Formatter::HtmlNodeWriter
7
+
8
+ def write_nodes(report)
9
+ report.report_node.children.each do |tag_node|
10
+ tag_node.number_all_descendants
11
+ write_node(tag_node)
12
+ end
13
+ builder
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+ module Cuporter
3
+ module Formatter
4
+ module TagReport
5
+ class Text < Writer
6
+ COL_WIDTH = 5
7
+ MARGIN = 0
8
+ include TextMethods
9
+ include PrettyTextMethods
10
+ include Cuporter::Formatter::TagReport::TextNodeWriter
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+ module Cuporter
3
+ module Formatter
4
+ module TagReport
5
+ module TextNodeWriter
6
+
7
+ def write
8
+ @report.report_node.children.each do |tag_node|
9
+ tag_node.number_all_descendants if @number_scenarios
10
+ write_node(tag_node, 0)
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -3,13 +3,6 @@ module Cuporter
3
3
  module Formatter
4
4
  module TextMethods
5
5
 
6
- def write
7
- @report.report_node.children.each do |tag_node|
8
- tag_node.number_all_descendants if @number_scenarios
9
- write_node(tag_node, 0)
10
- end
11
- end
12
-
13
6
  def write_node(node, tab_stops)
14
7
  @output.puts line(node.number, "#{tab * tab_stops}#{node.name}")
15
8
  node.children.each do |child|
@@ -4,25 +4,29 @@ module Cuporter
4
4
  module Formatter
5
5
  class Writer
6
6
 
7
- def initialize(report, output)
7
+ attr_reader :number_scenarios
8
+
9
+ def initialize(report, output, number_scenarios)
8
10
  @report = report
9
11
  @output = output ? File.open(output, "w") : STDOUT
12
+ @number_scenarios = number_scenarios
10
13
  end
11
14
 
12
- def self.create(format, report, output)
15
+ def self.create(format, report, output, number_scenarios)
13
16
  klass = writer_class(format, report.class.name.split(/::/).last)
14
- klass.new(report, output)
17
+ klass.new(report, output, number_scenarios)
15
18
  end
16
19
 
17
20
  def self.writer_class(format, report_class)
18
- case format
19
- when /text|pretty/i
20
- Cuporter::Formatter::Text
21
+ fmt = case format
22
+ when /text|pretty/i
23
+ "Text"
21
24
  when /csv/i
22
- Cuporter::Formatter::Csv
25
+ "Csv"
23
26
  when /html/i
24
- Cuporter::Formatter.const_get("#{report_class}Html")
27
+ "Html"
25
28
  end
29
+ Cuporter::Formatter.const_get(report_class).const_get(fmt)
26
30
  end
27
31
  end
28
32
  end
data/lib/cuporter/node.rb CHANGED
@@ -25,15 +25,6 @@ module Cuporter
25
25
  children.collect {|c| c.name }
26
26
  end
27
27
 
28
- def find_or_create_child(name)
29
- child_node = self[name]
30
- unless child_node
31
- children << Node.new(name)
32
- child_node = children.last
33
- end
34
- child_node
35
- end
36
-
37
28
  def find_by_name(name)
38
29
  children.find {|c| c.name == name.to_s}
39
30
  end
@@ -11,7 +11,7 @@ module Cuporter
11
11
  end
12
12
  end
13
13
  names.sort_all_descendants!
14
- names.number_all_descendants if number_scenarios
14
+ names.number_all_descendants
15
15
  names
16
16
  end
17
17
 
@@ -2,11 +2,10 @@
2
2
  module Cuporter
3
3
  class Report
4
4
 
5
- attr_reader :number_scenarios, :filter, :title
5
+ attr_reader :filter, :title
6
6
 
7
- def initialize(input_file_pattern, number_scenarios, filter_args = nil, title = nil)
7
+ def initialize(input_file_pattern, filter_args = nil, title = nil)
8
8
  @input_file_pattern = input_file_pattern
9
- @number_scenarios = number_scenarios
10
9
  @filter = Filter.new(filter_args || {})
11
10
  @title = title
12
11
  end
@@ -15,9 +14,9 @@ module Cuporter
15
14
  Dir[@input_file_pattern].collect {|f| File.expand_path f}
16
15
  end
17
16
 
18
- def self.create(type, input_file_pattern, number_scenarios, filter_args = nil, title = nil)
17
+ def self.create(type, input_file_pattern, filter_args = nil, title = nil)
19
18
  klass = Cuporter.const_get("#{type.downcase}Report".to_class_name)
20
- klass.new(input_file_pattern, number_scenarios, filter_args, title)
19
+ klass.new(input_file_pattern, filter_args, title)
21
20
  end
22
21
  end
23
22
  end
@@ -9,7 +9,6 @@ module Cuporter
9
9
  tags.merge_tag_nodes(feature) if feature
10
10
  end
11
11
  tags.sort_all_descendants!
12
- tags.children.each { |child| child.number_all_descendants } if number_scenarios
13
12
  tags
14
13
  end
15
14
 
@@ -41,5 +41,14 @@ module Cuporter
41
41
  end
42
42
  end
43
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
+
44
53
  end
45
54
  end
data/lib/cuporter.rb CHANGED
@@ -15,9 +15,17 @@ require 'cuporter/report/tag_report'
15
15
  require 'cuporter/report/name_report'
16
16
  require 'cuporter/formatter/writer'
17
17
  require 'cuporter/formatter/text_methods'
18
- require 'cuporter/formatter/text'
19
- require 'cuporter/formatter/csv'
18
+ require 'cuporter/formatter/pretty_text_methods'
19
+ require 'cuporter/formatter/csv_text_methods'
20
20
  require 'cuporter/formatter/html_node_writer'
21
21
  require 'cuporter/formatter/html_methods'
22
- require 'cuporter/formatter/tag_report_html'
23
- require 'cuporter/formatter/name_report_html'
22
+ require 'cuporter/formatter/tag_report/html'
23
+ require 'cuporter/formatter/tag_report/html_node_writer'
24
+ require 'cuporter/formatter/tag_report/text_node_writer'
25
+ require 'cuporter/formatter/tag_report/text'
26
+ require 'cuporter/formatter/tag_report/csv'
27
+ require 'cuporter/formatter/name_report/html'
28
+ require 'cuporter/formatter/name_report/html_node_writer'
29
+ require 'cuporter/formatter/name_report/text_node_writer'
30
+ require 'cuporter/formatter/name_report/text'
31
+ require 'cuporter/formatter/name_report/csv'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuporter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 8
10
- version: 0.2.8
9
+ - 9
10
+ version: 0.2.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tim Camper
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-27 00:00:00 -04:00
18
+ date: 2010-09-28 00:00:00 -04:00
19
19
  default_executable: cuporter
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -49,14 +49,22 @@ files:
49
49
  - Rakefile
50
50
  - lib/cuporter/name_list.rb
51
51
  - lib/cuporter/example_set_node.rb
52
- - lib/cuporter/formatter/csv.rb
53
- - lib/cuporter/formatter/text.rb
52
+ - lib/cuporter/formatter/tag_report/csv.rb
53
+ - lib/cuporter/formatter/tag_report/text_node_writer.rb
54
+ - lib/cuporter/formatter/tag_report/text.rb
55
+ - lib/cuporter/formatter/tag_report/html_node_writer.rb
56
+ - lib/cuporter/formatter/tag_report/html.rb
57
+ - lib/cuporter/formatter/pretty_text_methods.rb
54
58
  - lib/cuporter/formatter/html_node_writer.rb
55
59
  - lib/cuporter/formatter/html_methods.rb
56
- - lib/cuporter/formatter/tag_report_html.rb
57
- - lib/cuporter/formatter/name_report_html.rb
60
+ - lib/cuporter/formatter/csv_text_methods.rb
58
61
  - lib/cuporter/formatter/writer.rb
59
62
  - lib/cuporter/formatter/text_methods.rb
63
+ - lib/cuporter/formatter/name_report/csv.rb
64
+ - lib/cuporter/formatter/name_report/text_node_writer.rb
65
+ - lib/cuporter/formatter/name_report/text.rb
66
+ - lib/cuporter/formatter/name_report/html_node_writer.rb
67
+ - lib/cuporter/formatter/name_report/html.rb
60
68
  - lib/cuporter/tag_list.rb
61
69
  - lib/cuporter/report/report.rb
62
70
  - lib/cuporter/report/name_report.rb