class Object
Public Instance Methods
add_to_data(test_name, package_name, class_name, data)
click to toggle source
# File lib/junitdoc.rb, line 56 def add_to_data test_name, package_name, class_name, data data[package_name] ||= {} data[package_name][class_name] ||= [] data[package_name][class_name] << test_name end
main()
click to toggle source
# File lib/junitdoc.rb, line 4 def main files = Dir.glob ARGV data = process_files files doc = render_template data puts doc end
open_document(fn)
click to toggle source
# File lib/junitdoc.rb, line 29 def open_document fn File.open(fn) { |f| Nokogiri::XML(f) } end
parse_class_name(s)
click to toggle source
# File lib/junitdoc.rb, line 48 def parse_class_name s s.rpartition('.').last end
parse_package_name(s)
click to toggle source
# File lib/junitdoc.rb, line 52 def parse_package_name s s.rpartition('.').first end
process_file(fn, data)
click to toggle source
# File lib/junitdoc.rb, line 22 def process_file fn, data doc = open_document fn doc.xpath('//testcase').each do |testcase| process_testcase testcase, data end end
process_files(files)
click to toggle source
# File lib/junitdoc.rb, line 11 def process_files files data = {} files.each { |fn| process_file fn, data } data end
process_testcase(testcase, data)
click to toggle source
# File lib/junitdoc.rb, line 33 def process_testcase testcase, data test_name = sentencize testcase[:name] package_name = parse_package_name testcase[:classname] class_name = titlize parse_class_name(testcase[:classname]) add_to_data test_name, package_name, class_name, data end
render_template(data)
click to toggle source
# File lib/junitdoc.rb, line 17 def render_template data engine = Haml::Engine.new(template) engine.render 'teh data', :data => data end
sentencize(s)
click to toggle source
# File lib/junitdoc.rb, line 40 def sentencize s s.split(/(?=[A-Z0-9])/).map(&:downcase).join ' ' end
template()
click to toggle source
# File lib/junitdoc.rb, line 62 def template %q( !!! 5 %html{:lang => 'en'} %head %title JUnit Test Descriptions %style body { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; margin-left: 20px } %style h1 { font-size: 24px; margin-bottom: 0px } %style h2 { margin-left: 0px; margin-bottom: 0px; font-size: 18px } %style h2 span { font-size: 12px } %style ul { margin-top: 0px } %body %header %h1 JUnit Test Descriptions %section - data.each do |package_name, classes| - classes.each do |class_name, tests| %h2< = class_name %span = "(#{package_name})" %ul - tests.each do |test_name| %li< = test_name ) end
titlize(s)
click to toggle source
# File lib/junitdoc.rb, line 44 def titlize s s.split(/(?=[A-Z0-9])/)[0...-1].join ' ' end