# File lib/cucumber/formatter/pdf.rb, line 36 def initialize(step_mother, path_or_io, options) @step_mother = step_mother @file = ensure_file(path_or_io, "pdf") @coder = HTMLEntities.new if(options[:dry_run]) @status_colors = { :passed => BLACK, :skipped => BLACK, :undefined => BLACK, :failed => BLACK, :announced => GREY} else @status_colors = { :passed => '055902', :skipped => GREY, :undefined => 'F27405', :failed => '730202', :announced => GREY} end @pdf = Prawn::Document.new @scrap = Prawn::Document.new @doc = @scrap @options = options @exceptions = [] @indent = 0 @buffer = [] load_cover_page_image @pdf.text "\n\n\nCucumber features", :align => :center, :size => 32 @pdf.text "Generated: #{Time.now.strftime("%Y-%m-%d %H:%M")}", :size => 10, :at => [0, 24] @pdf.text "Command: <code>cucumber #{ARGV.join(" ")}</code>", :size => 10, :at => [0,10] unless options[:dry_run] @pdf.bounding_box [450,100] , :width => 100 do @pdf.text 'Legend', :size => 10 @status_colors.each do |k,v| @pdf.fill_color v @pdf.text k.to_s, :size => 10 @pdf.fill_color BLACK end end end end
# File lib/cucumber/formatter/pdf.rb, line 164 def after_background(background) @in_background = nil end
# File lib/cucumber/formatter/pdf.rb, line 119 def after_feature(feature) flush end
# File lib/cucumber/formatter/pdf.rb, line 115 def after_feature_element(feature_element) flush end
# File lib/cucumber/formatter/pdf.rb, line 92 def after_features(features) @pdf.render_file(@file.path) puts "\ndone" end
# File lib/cucumber/formatter/pdf.rb, line 85 def announce(announcement) @pdf.fill_color(@status_colors[:announced]) @pdf.text announcement, :size => 10 @pdf.fill_color BLACK end
# File lib/cucumber/formatter/pdf.rb, line 201 def background_name(keyword, name, file_colon_line, source_indent) feature_element_name(keyword, name) end
# File lib/cucumber/formatter/pdf.rb, line 160 def before_background(background) @in_background = true end
# File lib/cucumber/formatter/pdf.rb, line 168 def before_multiline_arg(table) return if @hide_this_step if(table.kind_of? Cucumber::Ast::Table) keep_with do print_table(table, ['ffffff', 'f0f0f0']) end end end
using row_color hack to highlight each row correctly
# File lib/cucumber/formatter/pdf.rb, line 178 def before_outline_table(table) return if @hide_this_step row_colors = table.example_rows.map { |r| @status_colors[r.status] unless r.status == :skipped} keep_with do print_table(table, row_colors) end end
# File lib/cucumber/formatter/pdf.rb, line 186 def before_py_string(string) return if @hide_this_step s = %{"""\n#{string}\n"""}.indent(10) s = s.split("\n").map{|l| l =~ /^\s+$/ ? '' : l} s.each do |line| keep_with { @doc.text(encode(line), :size => 8) } end end
# File lib/cucumber/formatter/pdf.rb, line 205 def examples_name(keyword, name) feature_element_name(keyword, name) end
# File lib/cucumber/formatter/pdf.rb, line 123 def feature_element_name(keyword, name) names = name.empty? ? [name] : name.split("\n") print "." STDOUT.flush keep_with do @doc.move_down(20) @doc.fill_color GREY @doc.text("#{keyword}", :size => 8) @doc.fill_color BLACK @doc.text("#{names[0]}", :size => 16) names[1..-1].each { |s| @doc.text(s, :size => 12) } @doc.text("\n") end end
# File lib/cucumber/formatter/pdf.rb, line 97 def feature_name(keyword, name) @pdf.start_new_page names = name.split("\n") @pdf.fill_color GREY @pdf.text(keyword, :align => :center) @pdf.fill_color BLACK names.each_with_index do |nameline, i| case i when 0 @pdf.text(nameline.strip, :size => 30, :align => :center ) @pdf.text("\n") else @pdf.text(nameline.strip, :size => 12) end end @pdf.move_down(30) end
# File lib/cucumber/formatter/pdf.rb, line 70 def load_cover_page_image() if (!load_image("features/support/logo.png")) load_image("features/support/logo.jpg") end end
# File lib/cucumber/formatter/pdf.rb, line 76 def load_image(image_path) begin @pdf.image open(image_path, "rb"), :position => :center, :width => 500 true rescue Errno::ENOENT false end end
# File lib/cucumber/formatter/pdf.rb, line 209 def scenario_name(keyword, name, file_colon_line, source_indent) feature_element_name(keyword, name) end
# File lib/cucumber/formatter/pdf.rb, line 154 def step_name(keyword, step_match, status, source_indent, background) return if @hide_this_step line = "<b>#{keyword}</b> #{encode(step_match.format_args("%s"))}" colorize(line, status) end
# File lib/cucumber/formatter/pdf.rb, line 139 def step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background) @hide_this_step = false if exception if @exceptions.include?(exception) @hide_this_step = true return end @exceptions << exception end if status != :failed && @in_background ^ background @hide_this_step = true return end end
Generated with the Darkfish Rdoc Generator 2.