class Guard::Unity::Parser

Attributes

doc[RW]
options[RW]

Public Class Methods

new(options={}) click to toggle source
# File lib/guard/unity/parser.rb, line 9
def initialize(options={})
  @options  = options
  @doc      = nil
end

Public Instance Methods

parse() click to toggle source
# File lib/guard/unity/parser.rb, line 14
def parse()
  {
      tests:          _get('total'),
      failures:       _get('failures'),
      errors:         _get('errors'),
      ignored:        _get('ignored'),
      not_run:        _get('not-run'),
      inconclusive:   _get('inconclusive'),
      invalid:        _get('invalid'),
      skipped:        _get('skipped'),
      test_cases:     _testCases
  }
end

Private Instance Methods

_get(find) click to toggle source
# File lib/guard/unity/parser.rb, line 30
def _get (find)
  doc   ||= _getXMLFile
  node = doc.at_xpath("/test-results/@" + find)
  (node == nil) ? 0 : node.value.to_i
end
_getXMLFile() click to toggle source
# File lib/guard/unity/parser.rb, line 55
def _getXMLFile()
  f = File.open(options[:results_path])
  doc = Nokogiri::XML(f)
  f.close
  doc
end
_testCases() click to toggle source
# File lib/guard/unity/parser.rb, line 36
def _testCases()
  doc   ||= _getXMLFile
  nodes = doc.xpath("test-results/test-suite/results/test-case")
  cases = []
  
  nodes.each do |node|
    message = node.at_xpath('failure/message')     || node.at_xpath('reason/message')
    stack   = node.at_xpath('failure/stack-trace') || node.at_xpath('reason/stack-trace')
    cases << {
      name:     node['name'],
      failed:   (node['success'] == 'False') ? true                              : false,
      message:  (message)                   ? message.text.gsub("\n",'').strip  : "",
      stack:    (stack)                     ? stack.text.gsub("\n",'').strip    : ""
    }
  end

  cases
end