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
         |