Top Level Namespace

Instance Method Summary collapse

Instance Method Details

#add_to_data(test_name, package_name, class_name, data) ⇒ Object



56
57
58
59
60
# 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

#mainObject



4
5
6
7
8
9
# 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) ⇒ Object



29
30
31
# File 'lib/junitdoc.rb', line 29

def open_document fn
  File.open(fn) { |f| Nokogiri::XML(f) }
end

#parse_class_name(s) ⇒ Object



48
49
50
# File 'lib/junitdoc.rb', line 48

def parse_class_name s
  s.rpartition('.').last
end

#parse_package_name(s) ⇒ Object



52
53
54
# File 'lib/junitdoc.rb', line 52

def parse_package_name s
  s.rpartition('.').first
end

#process_file(fn, data) ⇒ Object



22
23
24
25
26
27
# 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) ⇒ Object



11
12
13
14
15
# File 'lib/junitdoc.rb', line 11

def process_files files
  data = {}
  files.each { |fn| process_file fn, data }
  data
end

#process_testcase(testcase, data) ⇒ Object



33
34
35
36
37
38
# 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) ⇒ Object



17
18
19
20
# File 'lib/junitdoc.rb', line 17

def render_template data
  engine = Haml::Engine.new(template)
  engine.render 'teh data', :data => data
end

#sentencize(s) ⇒ Object



40
41
42
# File 'lib/junitdoc.rb', line 40

def sentencize s
  s.split(/(?=[A-Z0-9])/).map(&:downcase).join ' '
end

#templateObject



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# 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 Onesite Server-Side Test Suite
    %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) ⇒ Object



44
45
46
# File 'lib/junitdoc.rb', line 44

def titlize s
  s.split(/(?=[A-Z0-9])/)[0...-1].join ' '
end